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 のサンプルは、次の言語で利用できます。