Endpoints オプションの選択

Cloud Endpoints で API を管理するには、API がホストされる場所と API で使用される通信プロトコルの種類に応じて 3 つのオプションがあります。

このページでは、どのオプションが適切かを判断できるよう、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 Functions
Cloud Run
Cloud Run for Anthos
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 Functions、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 Functions ではサポートされていません

gRPC は、任意の環境で実行できるリモート プロシージャ コール(RPC)フレームワークです。gRPC を使用すると、クライアント アプリケーションは別のマシンのサーバー アプリケーション上のメソッドを、ローカル オブジェクトであるかのように直接呼び出すことができます。gRPC のコア機能は、HTTP/2 ベースのトランスポートによる双方向ストリーミングです。

App Engine と Cloud Functions は、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 は DjangoJersey などの公開されている REST フレームワークを使用して実装できます。OpenAPI 仕様に精通していない場合は、OpenAPI の概要をご覧ください。

詳しくは、Endpoints for OpenAPI をご覧ください。

Endpoints for gRPC

gRPC では、シリアル化するデータの構造を proto ファイルで定義します。このファイルは、.proto という拡張子が付いた通常のテキスト ファイルです。また、プロトコル バッファ メッセージとして指定された RPC メソッド パラメータと戻り値の型によって、proto ファイルに API のサーフェスも定義します。gRPC に精通していない場合は、gRPC のドキュメントの gRPC とはをご覧ください。

詳しくは、Endpoints for gRPC をご覧ください。

Endpoints Frameworks

Endpoints Frameworks は、App Engine の標準の Python 2.7 ランタイム環境と Java 8 ランタイム環境に対応するウェブ フレームワークです。Java のアノテーションと Python のデコレータを使用してメタデータをソースコードに追加します。メタデータにより、アプリケーションの REST API のサーフェスを記述します。

詳しくは、Endpoints Frameworks をご覧ください。

次のステップ