Cloud Endpointsと比較しながらApigee概要を学ぶ

  • tech系
7min
こちらの記事は弊社技術ブログに掲載していた内容となります。
一部を除き、投稿当時の情報となりますので、紹介内容の最新情報については別途公式情報等をご参照下さい。

こんにちは。
クラウドエース編集部です。

Apigee ってご存知でしょうか?
名前は知ってるけど何が出来るのか分からない、CloudEndpoints との違いが分からない、という方向けに、Apigee で出来ること、Apigee の機能概要について学んでいこうと思います。

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 から特定の情報を抽出するためにカスタム指標を作成することもできます。
  • パフォーマンス最適化
    分析によって、API トラフィックの時間帯や地理的傾向や、レスポンス時間などを知ることができ、API の改善に役立てることができます。

Apigee の活用イメージはこんな感じです

Apigee はバックエンドサービスのフロントに位置し、セキュリティ、Quota、Analytics などの機能を付加価値として提供します。
アプリからサービスを直接使用させるのではなく、ApigeeEdge 上に作成された API Proxy にアクセスさせるようにします。
API Proxy にアクセスすることで、セキュリティと認可タスクなどを Apigee で処理するだけでなく、それらのサービスの分析、モニタリングなども Apigee で可能になります。

それぞれの用語と機能を簡単に紹介します。

ApigeeEdge

API Proxy の作成・管理ができる、Apigee のプラットフォームのことです。

Organization

全ての API Proxy と、関連リソース(Developer やアプリケーション)を管理する単位です。
提供するサービスごとに作成します。
各 Apigee アカウントは1つ以上の Organization にマッピングされます。
組織が作成されると、組織へのユーザー追加、API Proxy の作成、開発者やアプリの登録が可能になります。

Developer

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/)

環境

CloudEndpoints

Cloud Endpoints はバックエンドが GCP 上にある場合にのみ利用できます。
GCP 上で全て管理できるので GCP ユーザーにとって使いやすいです。

Apigee

Apigee はバックエンドが GCP でなくても利用できます。
オンプレミスやハイブリットクラウドを使っている場合にも API ゲートウェイとして利用できる点が大きなメリットです。
例えばオンプレミス環境にあるモノリシックなレガシーアプリを GCP に置き換える場合、一気に置き換えることが難しくても、API ゲートウェイに Apigee を置き、サービスを少しづつ切り離しながらマイクロサービスを1つ1つ順番に実装することも可能です。

方向性

CloudEndpoints

Cloud Endpoints はどちらかといえば開発者目線で利用しやすく、開発者が API を簡単に作成・テストし、利用者の権限を管理し、使用状況を監視できるようにするためのサービスです。

Apigee

Apigee は Endpoints に比べて、ビジネス上の問題にフォーカスしています。
サービスの収益化に重点を置いていて、API が叩かれるレート制限や、詳細な分析ができるようになっています。

料金

CloudEndpoints

利用した分だけ支払う従量課金です。
API の呼び出し回数によって料金が異なります。

API 呼び出し回数/月 API 呼び出し100万回あたりの料金
0 ~ 200万回 $0.00
200万回 ~ 10億回未満 $3.00
10億回以上 $1.50
Apigee

作成するプラットフォームの規模(ユーザー数や Environment 数など)によって価格が異なります。
Apigee のサイトに金額が明記されていないので、こちらのフォームより詳細金額を問い合わせすることになります。

最後に

Apigee はただの API ゲートウェイではなくビジネスにもフォーカスしたリッチな機能がたくさんあるサービスでした。

もっと詳細のノウハウが気になった方には
apps-gcp メンバーが書いた Apigee についての詳細記事もあるので紹介しておきます。
・Apigee を使って3分でキャッシュサーバーを構築
https://apps-gcp.com/apigee-cache/
・Apigee を使用して API のアクセス制御を実装しよう
https://apps-gcp.com/apigee-accesscontrol/

そして、実際に触ってみくなった方はこちらからクイックスタートができます。

興味が湧いた方はぜひ Apigee を触ってみてください。

合わせて読みたい