extend-app-request-handling
注釈:本資料はAI技術を用いて翻訳されています。
Overview
Extend Service Extensionアプリは、AccelByteエコシステム内で堅牢かつスケーラブルでカスタマイズ可能なバックエンドサービスをサポートするためのコア技術として、gRPCとgRPC-Gatewayを活用しています。これらの技術は、APIを定義し、クライアント・サーバー間またはサーバー・サーバー間の通信を処理し、gRPCサービスをRESTfulエンドポイントとして公開するための高性能なフレームワークを提供します。
Extend Service Extensionを構築する開発者にとって、gRPCリクエストがどのように処理されるかを理解することは重要です。
gRPCリクエストの処理
以下のガイドでは、Extendがサポートする各言語について、サービス定義、クライアント/サーバーのセットアップ、およびリクエスト処理ロジックについて説明します。
- Overview for gRPC on .NET (C#)
- gRPC Basics Tutorial for Go
- gRPC Basics Tutorial for Java
- gRPC Basics Tutorial for Python
gRPCエラー処理
ベストプラクティスについては、以下の公式リソースを参照してください。
適切なエラー処理を行い、クライアントに意味のあるフィードバックを提供するために、必要に応じて特定のgRPCステータスコードを使用し、可能な限り詳細なエラーメッセージを含めることを推奨します。
gRPCメソッドを実装する際は、エラーを適切に処理することが重要です。メソッドの実装内で例外がスローされた場合、gRPCステータスコード13 INTERNAL(HTTPの場合は500 Internal Server Error)が返されます。
gRPC-GatewayによるgRPCエラー処理
Extendアプリは、特にgRPC-Gatewayと組み合わせた場合に、gRPCエラーを構造化された形式で返します。これらのエラーは、RESTfulクライアントとの互換性を確保するために、標準のHTTPステータスコードにマッピングされます。
gRPCとHTTPステータスコードのマッピング
| gRPC Code | HTTP Status Code |
|---|---|
| 0 OK | 200 OK |
| 1 CANCELLED | 499 - |
| 2 UNKNOWN | 500 Internal Server Error |
| 3 INVALID_ARGUMENT | 400 Bad Request |
| 4 DEADLINE_EXCEEDED | 504 Gateway Timeout |
| 5 NOT_FOUND | 404 Not Found |
| 6 ALREADY_EXISTS | 409 Conflict |
| 7 PERMISSION_DENIED | 403 Forbidden |
| 8 RESOURCE_EXHAUSTED | 429 Too Many Requests |
| 9 FAILED_PRECONDITION | 400 Bad Request |
| 10 ABORTED | 409 Conflict |
| 11 OUT_OF_RANGE | 400 Bad Request |
| 12 UNIMPLEMENTED | 501 Not Implemented |
| 13 INTERNAL | 500 Internal Server Error |
| 14 UNAVAILABLE | 503 Service Unavailable |
| 15 DATA_LOSS | 500 Internal Server Error |
| 16 UNAUTHENTICATED | 401 Unauthorized |
実装の詳細については、gRPC-Gatewayのerrors.goを参照してください。
500 Internal Server Errorは、クライアントのリトライロジックの設定によっては、クライアントによって複数回リトライされる可能性があります。過度なリトライが適切に処理されない場合、パフォーマンスのボトルネックや意図しない副作用を引き起こす可能性があるため、サービスを設計する際にはこの点を考慮することが重要です。