コンテンツに移動
Google Cloud

gRPC API を Cloud Endpoints で管理する

2017年5月11日
Google Cloud Japan Team

私たち Google はこの 2 年間、gRPC に多大な投資を行ってきました。投資の対象は、このオープンソース フレームワーク自体と、gRPC ベースの API です。私たちは gRPC をマイクロサービスの基本要素としてだけでなく、多くのパブリック API(特に、レイテンシ許容度が低い API、双方向ストリーミングが必要な API、モバイル利用が多い API)の基本要素としても位置づけています。

そしてこのたび、gRPC API を定義して実行し、gRPC および JSON-HTTP/1.1 インターフェースを Google Cloud Endpoints によってクライアントに提供できるようになりました。

私たちが最近リリースした API の大半は、gRPC と JSON-HTTP/1.1 の両方のインターフェースを提供します。私たちは 2016 年 3 月に Cloud Pub/Sub で gRPC をサポートしたのを皮切りに、gRPC を使用する API を着々と発表してきました。たとえば、Cloud Bigtable APICloud Pub/Sub APICloud Vision APICloud Datastore APICloud Speech API などがそうです。最近発表した Cloud Spanner API もその中に含まれます。

gRPC インターフェースの提供により、レイテンシと帯域幅に関する厳しい要件に対応しやすくなるほか、すべてのクライアントが互換性のあるクライアント ライブラリを使用するように指定できます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/grpc.max-200x200.png
しかし、私たちはこれらの API の JSON-HTTP/1.1 インターフェースも引き続き提供しています。多くの開発者が JSON を快適に利用しているからです。

JSON は使い始めるのも簡単です(curl で呼び出したり、リクエストをブラウザに貼り付けて実行したりできます)。ほとんどすべてのプラットフォームで幅広い言語に対応した素晴らしい JSON ライブラリが利用できるのです。ストリーミングや高パフォーマンスが必要な API では gRPC への移行が進んでいますが、それでも JSON-HTTP/1.1 のサポートは依然として高い優先順位を占めています。

そうしたなか、お客様の API にも gRPC および JSON-HTTP/1.1 の両方のインターフェースを提供できるようになりました。

Cloud Endpoints は gRPC ベース API をフルサポートしています(HTTP/1.1 API 用の優れた Endpoints 機能を gRPC API 用にもすべて提供します。その中には認証、モニタリング、ロギング、トレーシング、API キーなどが含まれます)。また、Extensible Service Proxy が JSON-HTTP/1.1 呼び出しを変換するので、API を 1 回作成すれば、両方のインターフェースを提供できます。

Cloud Endpoints を使った gRPC API の管理は簡単です。.proto ファイルで gRPC サービスを定義し、その gRPC インターフェースを REST JSON にマッピングする YAML 構成ファイルを追加します。

たとえば、以下は Bookshelf を定義するシンプルなサービスです。

読み込んでいます...

サービスを構成する YAML は、サービスの RPC インターフェースを RESTful パスにマッピングする方法を Endpoints に指示します。

読み込んでいます...

サービスを構成する YAML には認証方法も指定します(たとえば、指定したサービス アカウントにのみ API の呼び出しを許可します)。

読み込んでいます...

コード変換マッピングの作成方法については、こちらの詳細なドキュメントをご覧ください。

gRPC / Endpoints のサンプルは、PythonGoJavaNode.js の 4 言語で用意されています。幸いなことに、すでに多くのお客様が gRPC と Endpoints を組み合わせて使用しています。サンプルに関して質問がありましたら、Google Group でお問い合わせください。そしてぜひ API を作成してみてください。

* この投稿は米国時間 4 月 26 日、Product Manager である Dan Ciruli によって投稿されたもの(投稿はこちら)の抄訳です。

- By Dan Ciruli, Product Manager

投稿先