Cloud Endpoints for gRPC

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

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

API 管理

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

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

gRPC Endpoints サービス

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

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

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

  • Google Container Registry のコンテナ。
  • GitHub のソースコード。
    • ESP の構築について詳しくは、ESP README をご覧ください。
    • ESPv2 の構築について詳しくは、ESPv2 README をご覧ください。

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

ESPv2 コンテナは次のように実行できます。

  • Cloud Run
  • Knative serving
  • GKE
  • Compute Engine
  • Kubernetes

詳細については、Cloud Endpoints についてをご覧ください。

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 を使用して ESP または ESPv2 経由で gRPC サービスと通信できるようにします。

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

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

制限事項

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

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

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

次のステップ

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