Cloud Endpoints で API を管理するには、API がホストされる場所と API で使用される通信プロトコルの種類に応じて 3 つのオプションがあります。
- Cloud Endpoints for OpenAPI
- Cloud Endpoints for gRPC
- Cloud Endpoints Frameworks for the App Engine スタンダード環境
このページでは、どのオプションが適切かを判断できるよう、Endpoints のオプションについて説明します。
コンピューティング オプションの選択
Endpoints では、API のバックエンド コードのホストとして、さまざまな Google Cloud コンピューティング オプションをサポートしています。Endpoints は、Extensible Service Proxy(ESP)または Extensible Service Proxy V2(ESPv2)と連携して、API 管理を行います。次の表にサポートされるコンピューティング オプションをまとめます。
OpenAPI 用の ESP | gRPC 用の ESP | OpenAPI 用の ESPv2 | gRPC 用の ESPv2 | Endpoints Frameworks | |
---|---|---|---|---|---|
App Engine スタンダード環境、第 1 世代 |
Java 8 および Python 2.7 ランタイム | ||||
App Engine スタンダード環境、第 2 世代 |
|||||
App Engine フレキシブル環境 |
|||||
Cloud Run 関数 | |||||
Cloud Run | |||||
Knative serving | |||||
Compute Engine | |||||
GKE | |||||
Kubernetes | |||||
その他の Google 以外のクラウド |
App Engine、GKE、Compute Engine で提供される機能の比較については、コンピューティング オプションの選択をご覧ください。App Engine の使用を検討している場合は、スタンダード環境またはフレキシブル環境を選択する必要があります。2 つの環境の比較については、App Engine 環境の選択をご覧ください。
コンピューティング オプションの制限について
Endpoints for OpenAPI と Endpoints for gRPC は、ESP または ESPv2 をプロキシとして使用できます。非サーバーレス プラットフォームの場合は、ESP または ESPv2 がアプリケーションの前のコンテナとして、またはアプリケーションのサイドカーとしてデプロイされます。Cloud Run、Cloud Run 関数、App Engine などのサーバーレス プラットフォームの場合、ESPv2 はリモート プロキシとしての Cloud Run サービスとしてデプロイされ、サーバーレス プラットフォーム アプリケーションを管理します。
API のバックエンド コードをデプロイすると、ESP または ESPv2 はすべてのリクエストを傍受し、必要なチェック(認証など)を行ってから、リクエストを API バックエンドに転送します。バックエンドが応答すると、ESP は Service Infrastructure を使用してテレメトリーを収集して報告します。
Google Cloud コンソールの [エンドポイント] の [サービス] ページで、API の指標、Google Cloud Observability のログとトレースへのリンクを確認できます。
第 1 世代の App Engine スタンダード環境の制限事項
従来、第 1 世代の App Engine スタンダード環境の制限事項のエンドポイントは Endpoints Frameworks を使用していました。Endpoints Frameworks では Java 8 ランタイム環境と Python 2.7 ランタイム環境のみがサポートされています。
Endpoints Frameworks が開発中のとき、App Engine スタンダード環境はマルチコンテナのデプロイをサポートしていなかったため、Endpoints Frameworks は ESP を使用しません。代わりに、Endpoints Frameworks には API 管理機能を提供する API ゲートウェイが組み込まれています。これは Cloud Endpoints for OpenAPI と Cloud Endpoints for gRPC に対して ESP が提供している機能に匹敵します。
gRPC API は、App Engine または Cloud Run 関数ではサポートされていません
gRPC は、任意の環境で実行できるリモート プロシージャ コール(RPC)フレームワークです。gRPC を使用すると、クライアント アプリケーションは別のマシンのサーバー アプリケーション上のメソッドを、ローカル オブジェクトであるかのように直接呼び出すことができます。gRPC のコア機能は、HTTP/2 ベースのトランスポートによる双方向ストリーミングです。
App Engine と Cloud Run 関数は、HTTP/2 をサポートしていません。
サポートされているプログラミング言語
- OpenAPI 仕様は、言語に依存しない仕様です。API はあらゆるプログラミング言語で実装できます。
- gRPC には
protoc
というプロトコル バッファ コンパイラが用意されています。このコンパイラは、C++、C#、Objective-C(iOS 用)、Dart、Go、Java(Android のサポートを含む)、Node.js、Python、Ruby など、多くの主要なプログラミング言語に対応します。最新のリストについては、gRPC に関するよくある質問をご覧ください。 - Endpoints Frameworks では Java 8 と Python 2.7 のみがサポートされます。
API の説明
Endpoints のオプションでは、さまざまな方法で API を記述できます。
Endpoints for OpenAPI
Open API Initiative は、REST API 記述の標準化を推進する業界団体です。Endpoints では、OpenAPI 仕様(旧 Swagger 仕様)のバージョン 2.0 を使用して記述された API がサポートされます。API のサーフェスは、JSON ファイルや YAML ファイル(OpenAPI ドキュメントと呼ばれるファイル)に記述します。API は Django や Jersey などの公開されている REST フレームワークを使用して実装できます。OpenAPI 仕様に精通していない場合は、OpenAPI の概要をご覧ください。
詳しくは、Endpoints for OpenAPI をご覧ください。
Endpoints for gRPC
gRPC では、シリアル化するデータの構造を proto ファイルで定義します。このファイルは、.proto
という拡張子が付いた通常のテキスト ファイルです。また、プロトコル バッファ メッセージとして指定された RPC メソッド パラメータと戻り値の型を使用して、proto ファイルに API のサーフェスも定義します。gRPC に精通していない場合は、gRPC ドキュメントの gPRC とはをご覧ください。
詳しくは、Endpoints for gRPC をご覧ください。
Endpoints Frameworks
Endpoints Frameworks は、App Engine の標準の Python 2.7 ランタイム環境と Java 8 ランタイム環境に対応するウェブ フレームワークです。Java のアノテーションと Python のデコレータを使用してメタデータをソースコードに追加します。メタデータにより、アプリケーションの REST API のサーフェスを記述します。
詳しくは、Endpoints Frameworks をご覧ください。
次のステップ
Endpoints のクイックスタートに従って、Endpoints 機能の実際の動作をご覧ください。ここでは、スクリプトを使用して App Engine フレキシブル環境にサンプル API をデプロイする方法について説明しています。
選択した Endpoints オプションに応じ、以下のチュートリアルのいずれかを行ってデプロイ手順を理解します。
Endpoints と ESP の詳細について学習します。