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 を呼び出すことができるので、他のシステムとの統合を柔軟かつ簡単に行うことができます。
Endpoints の gRPC サービスは、gRPC がサポートする任意の言語で作成できます。gRPC の詳細については、gRPC のサイトをご覧ください。サーバーやクライアントの作成方法を説明するクイックスタートやチュートリアルを利用できます。
サポートされているコンピューティング プラットフォーム
ESP と ESPv2 はオープンソース プロジェクトであり、次の方法で利用できます。
- Google Container Registry のコンテナ。
- 現行の ESP Docker イメージについては、ESP リリースノートをご覧ください。
- 現在の ESPv2 Docker イメージについては、ESPv2 リリースノートをご覧ください。
- GitHub のソースコード。
- ESP の構築について詳しくは、ESP README をご覧ください。
- ESPv2 の構築について詳しくは、ESPv2 README をご覧ください。
ESP コンテナは、次の場所で実行できます。
- Docker を搭載した Compute Engine
- Kubernetes(Google Kubernetes Engine を含む)
- Linux や macOS のパソコン、または別のクラウド プロバイダ
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 のサンプルは、次の言語で利用できます。