Google Cloudアプリケーションの中核となるAPIソリューションは、どう選べばよいのでしょうか。ApigeeX、Cloud Endpoints、API Gatewayの機能を比較し、最適な選定をサポートします。

Cloud Endpoints、API Gateway、ApigeeXを比較
DoiT Internationalにシニアクラウドアーキテクトとして加わって以来、「自社アプリケーション向けに、GCP上でどの中核APIソリューションを選ぶべきか」というご相談をお客様からよくいただきます。エンタープライズ向け製品のApigeeXはひとまず置くとして、Cloud EndpointsとAPI Gatewayを比べた場合、どちらが優れているのか。そして両者の主な違いはどこにあるのか――今回はこのテーマを取り上げます。
Googleは2017年初頭にCloud Endpointsの一般提供を発表しました。同じサービス基盤上に構築されたサーバーローカルのプロキシを特長としています。当初のCloud Endpointsは、nginxベースのデータプレーンであるExtensible Service Proxy(ESP)V1と組み合わせて、AppEngine flexible環境、GCE、GKEに対応していました。2019年にはEnvoyベースのESP v2がリリースされ、Cloud Function、Cloud Run、AppEngine standard環境など、より幅広いサーバーレスサービスに対応できるようになりました。ESP v1は古いバージョンと位置付けられていますが、ESP v2では未対応のAppEngine FlexibleやカスタムNginx設定を引き続きサポートしています。
また、Cloud Endpointsは課金対象が多めの自己管理型分散API管理サービスであることから、Googleはその改良版とも言える別のAPI管理サービス「API Gateway」を投入しました。
さらにGoogleは、Apigeeを複数のマネージド形態で提供しており、Google Cloud上でホストされるApigeeXと、Apigee Cloud上でホストされるApigeeEdgeなどがあります。
本記事では、どのAPIソリューションを選ぶべきかの判断ポイントを解説します。
対応プロトコル
まず最初に確認すべきは、どのプロトコルへの対応が必要か、という点です。
3つのプラットフォームはいずれも、OpenAPI仕様でAPIプロキシを定義でき、HTTPSのRESTful APIに対応しています。gRPCもすべてで利用可能です。
ただし、WebSocketやSOAPに対応する必要がある場合、選択肢はApigeeXのみとなります。
バックエンドサービスとの連携
Cloud Endpoints、API Gateway、ApigeeXはいずれも、Cloud Functions、Cloud Run、GKE、AppEngineといったGoogle Cloud Platformのサービスに加え、AWS Lambda関数、Azure Functions、オンプレミスのAPIサービスなど、Google以外の関数やサービスとも連携できます。
一方、バックエンドにSOAPを使っている場合は、ApigeeX一択です。ApigeeXはバックエンドのSOAPサービスに対するRESTfulインターフェースを生成できるため、SOAPサービスをAPIプロキシとして公開できます。受信したSOAPリクエストをそのままバックエンドに転送するパススルーモードにも対応しています。
ApigeeXのもうひとつの強力な機能が、カスタムスクリプトのサポートです。JavaScriptで独自の処理を実装し、ApigeeXポータルにデプロイできます。カスタムスクリプト内では、ユーザーがページに到達したときの`onLoad`イベントや、ページから離脱するときの`onUnload`イベントを使って、ポータルページのDOMオブジェクトにアクセスできます。
本記事執筆時点では、Cloud EndpointsとApigeeXがカスタムドメイン名に対応しています。API Gatewayもカスタムドメインをサポートしていますが、まだプレビュー段階です。
セキュリティ
APIキーは、APIを保護するための定番の手段です。Cloud Endpoints、API Gateway、ApigeeXのいずれもAPIキー認証に対応しています。
加えて、これらはGoogleが提供するマネージドサービスのため、サービスアカウント認証にも対応しています(サービスアカウント認証では、サービスアカウントの秘密鍵でセキュアなJWTを署名し、その署名済みJWTを付けてAPIリクエストを送信します)。
上記2つの方式に加え、Cloud EndpointsはFirebase認証とAuth0に、ApigeeXはOAuth2に対応しています。
特筆すべきは、3つのAPI管理ソリューションのいずれもレート制限による保護が可能なことです。これによりAPIとバックエンドサービス間のトラフィックをコントロールし、アプリケーションへのDoS攻撃を防ぐことができます。
モニタリング
Google Cloud Platformの3つのAPIソリューションは、いずれも手軽にモニタリングできます。
Cloud Endpointsには、開発者ポータルを構築できるポータル機能が備わっており、ログやメトリクスもそこから確認できます。API Gatewayは、急増・急減や予期しないアクティビティを把握しやすいよう、グラフを充実させたダッシュボードを提供しています。さらに、API Gatewayのメソッドテーブルを使ったドリルダウンも可能です。
エンタープライズ向けAPIソリューションプラットフォームであるApigeeXは、統合(integration)レベルとタスクレベルの両方で実行メトリクスをすべて表示するモニタリングダッシュボードを備えています。各種アラートも簡単に設定できます。
コスト
Cloud EndpointsとAPI Gatewayはいずれも、一定数までのAPIコールに対して無料枠を用意しており、月間のAPIコール数がその範囲内であれば料金は発生しません。ただしCloud Endpointsの場合、受信リクエストをプロキシするために、Googleの何らかのサービス上でエンドポイントランタイムを稼働させる必要があるため、APIサービス自体の料金とは別に、ランタイム環境をホストするサービスのコストが発生します。
ApigeeXには評価用オプションが用意されており、プラットフォームをデプロイして検証できます。評価期間が終わったら、プランをアップグレードする必要があります。APIのリクエスト数が少ない場合は、事前のコミットメント不要で使用量に応じて課金される従量課金プランへのアップグレードが可能です。大量のリクエストをさばくために多くの環境が必要な場合は、商用サブスクリプションを選ぶこともできます。
総じて、ApigeeXは最も高価なAPIソリューションで、大規模利用ではAPI Gatewayが有力な選択肢、小規模利用ではCloud Endpointsが比較的安価という位置付けになります。
まとめ
Cloud EndpointsとAPI Gatewayは、似通った機能を備えた軽量なAPI管理プラットフォームで、ほとんどのシナリオで利用できます。API GatewayはGCPの新しいサービスで、カスタムドメイン対応など一部の機能はまだプレビュー段階です。
エンタープライズ向けソリューションのApigeeXは機能が充実している反面、価格は高めです。
Cloud Endpoints
SaaS
一部対応
料金
無料枠 + ランタイムコスト
GCP内部バックエンドサービス対応
あり
GCP以外のパブリックバックエンドサービス対応
あり
対応プロトコル
HTTPS / gRPC
CORS対応
あり
カスタムドメイン
あり
メッセージの整形・参照・変換
なし
認証
API Key / Firebase認証 / Auth0 / Google ID Token / Google Service Account / カスタム認証
OpenAPI Spec
あり
ドキュメントの充実度
低
API Gateway
SaaS
あり
料金
無料枠
GCP内部バックエンドサービス対応
あり
GCP以外のパブリックバックエンドサービス対応
あり
対応プロトコル
HTTPS / gRPC
CORS対応
なし
カスタムドメイン
プレビュー
メッセージの整形・参照・変換
なし
認証
API Key / Google Service Account
OpenAPI Spec
あり
ドキュメントの充実度
低
Apigee
SaaS
あり
料金
従量課金、商用サブスクリプション
GCP内部バックエンドサービス対応
なし
GCP以外のパブリックバックエンドサービス対応
あり
対応プロトコル
HTTPS / gRPC / WebSocket
CORS対応
あり
カスタムドメイン
あり
メッセージの整形・参照・変換
あり
認証
API Key / OAuth
OpenAPI Spec
あり
ドキュメントの充実度
高
Cloud Endpoints
API Gateway
Apigee
SaaS
一部対応
あり
あり
料金
無料枠 + ランタイムコスト
無料枠
従量課金、商用サブスクリプション
GCP内部バックエンドサービス対応
あり
あり
なし
GCP以外のパブリックバックエンドサービス対応
あり
あり
あり
対応プロトコル
HTTPS / gRPC
HTTPS / gRPC
HTTPS / gRPC / WebSocket
CORS対応
あり
なし
あり
カスタムドメイン
あり
プレビュー
あり
メッセージの整形・参照・変換
なし
なし
あり
認証
API Key / Firebase認証 / Auth0 / Google ID Token / Google Service Account / カスタム認証
API Key / Google Service Account
API Key / OAuth
OpenAPI Spec
あり
あり
あり
ドキュメントの充実度
低
低
高