Cloud Endpoints for gRPC

gRPC は、Google が開発した高性能で汎用的なオープンソース RPC フレームワークです。gRPC を使用すると、クライアント アプリケーションは、別のマシンのサーバー アプリケーション上のメソッドを、ローカル オブジェクトと同様に直接呼び出すことができます。これにより、分散アプリケーションや分散サービスを簡単に作成できます。

gRPC を使用する主な利点は、ドキュメントです。サービス構成と API インターフェース定義ファイルを使用して、API のリファレンス ドキュメントを生成できます。詳細は、デベロッパー ポータルの概要をご覧ください。

API 管理

Endpoints は、Extensible Service Proxy(ESP)と連携して API 管理を行います。

Endpoint for gRPC では、Endpoints の API 管理機能を使用して、API Console、モニタリング、ホスティング、トレース、認証などを gRPC サービスに追加できます。また、特別なマッピング ルールを指定すると、ESP が HTTP で RESTful JSON を gRPC リクエストに変換します。これにより、Endpoints が管理する gRPC サーバーをデプロイし、gRPC または JSON/HTTP クライアントを使って API を呼び出すことができるので、他のシステムとの統合を柔軟かつ簡単に行うことができます。

gRPC Endpoints サービス

Endpoints の gRPC サービスは、gRPC がサポートする任意の言語で作成できます。gRPC の詳細については、gRPC のサイトをご覧ください。サーバーやクライアントの作成方法を説明するクイックスタートやチュートリアルを利用できます。

サポートされているコンピューティング プラットフォーム

ESP はオープンソース プロジェクトです。次の方法で利用できます。

  • Google Container Registry のコンテナ。現行の Docker イメージについては、ESP リリースノートをご覧ください。
  • GitHub のソースコード。ESP の構築について詳しくは、ESP README をご覧ください。

ESP コンテナは、次の場所で実行できます。

API および ESP を GCP コンピューティング プラットフォームにデプロイする方法については、API バックエンドをデプロイするをご覧ください。

サービスの定義と構成

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;
}

Endpoints で gRPC を使用するには、サービス定義とともにサービス構成を提供する必要があります。これにより、サービスのランタイムでの動作(認証を含む)、サービスの API、HTTP リクエストから gRPC メソッドへマッピングが設定されます。また、Cloud Endpoints 固有の設定も行われます。

コード変換

Endpoints は、gRPC サービスのプロトコル変換を行い、クライアントが HTTP/JSON を使用して Extensible Service Proxy 経由で gRPC サービスと通信できるようにします。

最も一般的なユースケースでは、ブラウザ クライアントが gRPC クライアント ライブラリの特別なサポートを受けずに gRPC サーバーと通信できるようにします。Endpoints は、サービス構成の一部として HTTP リクエストを gRPC メソッドにマッピングするメカニズムを提供します。

詳細については、HTTP/JSON の gRPC へのコード変換をご覧ください。

制限事項

現在、gRPC の次の機能は Endpoints でまだ使用できません。

  • ペイロード圧縮
  • プロトコル バッファ以外の IDL

Endpoints は gRPC サービス用の App Engine 環境をサポートしていません。Cloud Run(ベータ版)に加え、GKE と Compute Engine のみがサポートされます。

次のステップ

  • Google のチュートリアルを参照して、選択した環境の Cloud Endpoints でサンプルの gRPC サービスを起動し、実行する。
  • Cloud Endpoints での gRPC サービスの設定方法を確認する。
  • サンプルを調べる。GitHub には、次の言語の get-started-grpc のサンプルがあります。
  • Bookstore のサンプルは、次の言語で利用できます。