Apigee は一言で言うと API の作成・管理をするためのプラットフォームです。
Google Cloud のもう一つの API 管理サービスである CloudEndpoints との比較も紹介していきます。
ところで、なぜ API を管理する必要性があるのでしょうか?
まずは API を管理する大切さについて確認していきます。
API を管理する必要性
API とは、あるサービスを外部のソフトウェアから簡単に利用できるようにするインターフェースです。
API を使えば、インターフェースが変わらない限り、サービスの実装は変更でき、利用する側もその内部変更を都度追いかける必要がなくサービスを利用できます。
多くの人に使ってもらいたい、長く利用していきたい場合にはなるべく変化しない安定した API を作成するのがベストです。
もちろん、機能の追加や削除があった場合にはインターフェースの変更も必要になります。
その際は API のバージョンを追加し新しい API を作成するのが一般的です。
API の明確で使いやすい定義、細かい権限などの設定、バージョンや収益などの管理をしてきちんと運用していくことが、継続的に快適に利用できるサービを提供をするために大切になってきます。
Apigee が提供するサービスは3つ
Apigee は API の作成、セキュリティ、管理のための包括的なインフラを連携して提供しています。
Apigee を利用すると、アプリ開発者が利用できる RESTfulAPI を迅速かつ簡単に構築でき、Apigee 経由で API として公開できます。
API サービス
Policies & Programmability
コードを書かずに Policy という XML 形式のファイルを使って OAuth 設定、キャッシュ保存、など様々な API 設定ができます。
Policy は Apigee に最適化されているので、コードを書くより優先して使うことをオススメされていますが、Javascript や Java などでコードを書いて API ロジックを作成することも可能です。
OAuth & セキュリティ
API へのアクセス制御、悪意のあるメッセージコンテンツからの保護、暗号化された機密データのマスク、バックエンドリソースへの直接アクセスからの保護など大切なセキュリティ対策が可能です。
開発者 サービス
開発者向けに API を開発・管理しやすい機能があります。
Developer ポータル
開発者用のポータルでは簡単なアプリ登録と自動/手動の API キー承認サポートを提供します。
アプリ登録をすると自動で API ドキュメントが作成され、API の検索やテストがすぐに行えます。
また、API ドキュメント、クイックスタートやコミュニティの QA にも簡単にアクセスできます。
収益化機能
収益化機能を利用すると API を収益化するための柔軟な課金システムを作成できます。
課金プランも固定料金や変動料金、前払いなど多様な設定ができるようです。
開発者ごとの利用状況を分析しレポートを自動生成することも可能です。
Analytics サービス
開発者だけでなくビジネスユーザー向けにも収益化に繋がる機能が提供されています。
分析ツール
API パフォーマンスの傾向、パーフォーマンスが高い API・アプリ・API プロダクトに関する情報などが表示されるダッシュボード、 特定の API 指標の選択、結合、フィルタ、ドリルダウンができるカスタムレポートを提供しています。
また、特定の API Proxy の個々の URI のパフォーマンス指標を追跡することもできます。
Ops & Business 指標
受信したメッセージ数、開発者数、レスポンス時間、エラー、リクエストのサイズなどの指標が継続的にカウントおよび分析されます。
また、API から特定の情報を抽出するためにカスタム指標を作成することもできます。
Apigee で管理する API を利用する開発者です。
開発者は Application(API を利用するアプリ)に関連づきます。
API にアクセスする時に利用される API Key によって ApigeeEdge 内の開発者とアプリを一意に識別します。
Environment
API proxy 用のランタイムを実行する単位です。
Organization に複数の Environment を作成できます。
APIをネットワーク経由で利用できるようにする前に API proxy を Environment にデプロイする必要があります。
Cloud 環境のデフォルトでは test と prod の2つの環境が用意されています。
キャッシングなどの一部機能では、スコープとして利用できます。
また、Apigee の分析データは Organization と Environment の組み合わせごとに分けられています。
API Proxy
ApigeeEdge 上の HTTP エンドポイントです。
ApigeeEdge で API を公開するには API Proxy を実装します。
API Proxy はアプリ側の API をバックエンドから切り離し、バックエンドの変更があった場合にもアプリは中断することなく同じ API を呼び出し続けることができます。
API Proxy 構成には2種類のエンドポイントがあります。
ProxyEndpoint:
クライアントアプリでの API 使用方法を定義します。
また、ProxyEndpoint により、アプリが HTTP と HTTPS のどちらで API プロキシにアクセスするかが決まります。
TargetEndpoint:
API プロキシとバックエンドサーバーとのやり取りの方法を定義します。
セキュリティ設定などの接続情報の定義がされているリクエストが、適切なバックエンドサービスに転送されるように構成できます。
Policy
Proxy を構成する一番小さいロジックの単位。
Policy を使用することでコードを書かなくても API の動作を設定できます。(Policy は XML 形式のファイルです。)
Policy は Proxy のリクエスト/レスポンスのフローの一部として特定の機能を実装するモジュールのようなものです。
Policy によりセキュリティ(Oauth など)、トラフィック制限、フォーマット変換(XML や JSON 等)、キャッシュ保存などの機能を API に追加できます。
各自の環境でこれらの機能を実装、保守する必要がなくなります。
CloudEndpoints と比較してみる
今回は Apigee の概要紹介をしていますが、同じ GCP サービスである Google Cloud Endpoints も API プロキシの開発、管理をするためのプラットフォームを提供します。
何が違うの?という質問が多いこの2つのサービスを比較してみます。
(Cloud Endpoints: https://cloud.google.com/endpoints/)