gRPC の概要
gRPC は、Google が開発した高性能で汎用的なオープンソース RPC フレームワークです。gRPC を使用すると、クライアント アプリケーションは、別のマシンのサーバー アプリケーション上のメソッドを、ローカル オブジェクトと同様に直接呼び出すことができます。これにより、分散アプリケーションや分散サービスを簡単に作成できます。
gRPC を使用する主な利点は、ドキュメントです。サービス構成と API インターフェース定義ファイルを使用して、API のリファレンス ドキュメントを生成できます。
API 管理
gRPC 用 API Gateway では、API Gateway の API 管理機能を使用して、Cloud Run 上の gRPC サービスにモニタリング、ホスティング、トレース、認証などを追加できます。また、特別なマッピング ルールを指定すると、API Gateway が HTTP で RESTful JSON を gRPC リクエストに変換します。これにより、API Gateway が管理する gRPC サーバーをデプロイし、gRPC または JSON/HTTP クライアントを使って API を呼び出すことができるので、他のシステムとの統合を柔軟かつ簡単に行うことができます。
API Gateway の gRPC サービスは、gRPC がサポートする任意の言語で作成できます。gRPC の詳細については、gRPC のサイトをご覧ください。サーバーやクライアントの作成方法を説明するクイックスタートやチュートリアルを利用できます。
サービスの定義と構成
gRPC は、サービスの定義と同様に、パラメータと戻り値の型を使用してリモートから呼び出し可能なメソッドを指定します。デフォルトでは、gRPC はインターフェース定義言語(IDL)としてプロトコル バッファを使用し、サービス インターフェースとペイロード メッセージの構成を記述します。
// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply) {}
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings
message HelloReply {
string message = 1;
}
API Gateway で gRPC を使用するには、サービス定義とともにサービス構成を提供する必要があります。これにより、サービスのランタイムでの動作(認証を含む)、サービスの API、HTTP リクエストから gRPC メソッドへマッピングが設定されます。また、API Gateway 固有の設定も行われます。
コード変換
API Gateway は、Cloud Run で gRPC サービスのプロトコル変換を行い、クライアントが HTTP/JSON を使用して API Gateway 経由で gRPC サービスと通信できるようにします。
最も一般的なユースケースでは、ブラウザ クライアントが gRPC サーバー ライブラリの特別なサポートを受けずに gRPC クライアントと通信できるようにします。API Gateway は、サービス設定の一部として HTTP リクエストを gRPC メソッドにマッピングするメカニズムを提供します。
詳細については、HTTP/JSON の gRPC へのコード変換をご覧ください。
制限事項
現在、gRPC の次の機能は API Gateway でまだサポートされていません。
- ペイロード圧縮
- プロトコル バッファ以外の IDL
現時点で API Gateway でサポートされているのは Cloud Run gRPC サービスのみです。
次のステップ
- サンプルを調べる。GitHub には、次の言語の
getting-started-grpc
のサンプルがあります。 - Bookstore のサンプルは、次の言語で利用できます。