Azure API Management が動作するしくみ

完了

ここでは、Azure API Management のしくみについて、3 つの使用ポイントから説明します。 この知識は、Azure API Management が組織の API を管理するための優れたソリューションであるかどうかの評価を続けるのに役立ちます。

このユニットでは、次の種類のユーザーに対して Azure API Management がどのように動作するのかについて説明します。

  • API コンシューマー
  • API プロバイダー
  • アプリの開発者

API コンシューマーから見た Azure API Management のしくみ

"API コンシューマー" は、API にデータを要求するエンティティです。 たとえば、次のエンティティが API コンシューマーになる可能性があります。

  • モバイル アプリ
  • Web アプリ
  • IoT デバイス

コンシューマーから見た Azure API Management の主要なコンポーネントはゲートウェイです。 コンシューマーのすべての API 呼び出しは、最初にゲートウェイ エンドポイントにルーティングされます。 API コンシューマーが直接やり取りするのはゲートウェイだけであり、実際の API デプロイ インスタンスと対話することはありません。

コンシューマーから見ると、ゲートウェイによって多くのタスクが実行されますが、最も重要なのは次のものです。

  • [認証] : ゲートウェイにより、コンシューマーのサブスクリプション キー、JWT トークン、その他の資格情報が検証されて、API へのアクセスが監視されます。
  • セキュリティ。 ゲートウェイにより、定義済みのレート制限とコンシューマーの使用量クォータが適用されて、または API のスキーマを基に要求と応答が検証されて、API の誤用が防止されます。
  • 変換。 ゲートウェイにより、必要に応じて API 要求または応答が変換されます。 たとえば、バックエンド サービスが XML データで応答する場合は、次の図に示すように、XML を JSON に自動的に変換することで、API を最新化できます。
  • ルーティング。 API 要求の認証、検証、変換が済んだ後、呼び出しはゲートウェイによって API がデプロイされているバックエンド サービスにルーティングされます。
  • パフォーマンス。 ゲートウェイは、バックエンドの API 応答をキャッシュに格納できます。 時間が経ってもバックエンドの応答が変化しない場合、後続の応答をキャッシュから提供することで、コンシューマーへの応答時間が短縮され、バックエンド サーバーの負荷が軽減されます。

A mobile app requests a weather forecast using an API. The Azure API Management gateway routes the call to the backend server and then converts the server's XML response to JSON before returning it to the mobile app.

API プロバイダーから見た Azure API Management のしくみ

API プロバイダーの場合は、API が公開された後も多くの作業を行う必要があります。 この作業には次のものが含まれます。

  • API ポリシーの設定
  • API コンシューマーの管理
  • API のリビジョンとバージョンの管理
  • API の監視と分析

Azure portal ページで Azure API Management 管理インターフェイスを使用して、これらを初めとするすべてのタスクを実行できます。 または、Azure CLI や Azure PowerShell などのツールを使用して。 管理インターフェイスを使用すると、(前のユニットで学習したように) API ポリシーを設定できるだけでなく、次のタスクを実行できます。

  • API の仕様を定義してインポートします。 OpenAPI 仕様、REST API、簡易オブジェクト アクセス プロトコル (SOAP) API (必要に応じて REST に変換できます)、WebSocket API、GraphQL API をインポートします。 また、Azure サービス (Web アプリ、コンテナー アプリ、関数アプリ、ロジック アプリ、Service Fabric) のインスタンスをインポートすることで、API を作成することもできます。 空の API を作成して手動で定義することもできます。
  • ユーザーとグループを管理します
    • "ユーザー" は開発者アカウントです。 これは API コンシューマーのアカウントです。 ユーザーを手動で追加したり、アカウントを作成するようにユーザーを招待することもできますが、ほとんどのユーザーは開発者ポータルを使用して自分のアカウントを作成します。
    • "グループ" は、関連ユーザーのコレクションです。 グループを特定の API 製品に関連付けると、そのグループ内の各ユーザーは開発者ポータルで製品にアクセスできるようになります。
  • API を製品にパッケージします。 Azure API Management では、"製品" は関連する API のグループです。 複数の API を 1 つの製品としてパッケージ化することで、すべての API を個別に構成する代わりに、製品を構成するだけで済みます。 たとえば、レート制限や他のポリシーを設定する、使用条件を定義する、グループを追加するなどです。 この構成は、製品内のすべての API に適用されます。 製品を公開すると、コンシューマーはそれをサブスクライブし、その API を 1 つのサブスクリプション キーで使用できます。
  • API のリビジョンとバージョンを管理します。 API 開発者チームが API を変更する必要がある場合は、リビジョンとバージョンを使用することで、コンシューマーに悪影響を与えない安全で制御された方法で変更を公開します。
    • "リビジョン" は、API の比較的軽微な変更または非破壊的変更です。 次の図のように、開発チームは運用 API とは別にリビジョンをコーディングしてテストできます。 その後、リビジョンをコンシューマーに提供できる状態になったら、Azure API Management の管理インターフェイスを使用して、更新された API を "現行" リビジョンとして設定します。
    • "バージョン" は、API に対する比較的大きな変更または破壊的変更です。 Azure API Management を使用すると、API の複数のバージョンを開発者に同時に提供できます。 また、パス ベース、ヘッダー ベース、クエリ文字列ベースのバージョン管理など、複数のバージョン管理スキームも提供されます。
  • API を監視して分析します。 管理インターフェイスには、API トラフィックをリアルタイムで追跡および確認するための組み込みの監視ツールと、発行した API をコンシューマーがどのように使用しているかに関する分析情報が得られる分析が含まれます。 Azure API Management では、API を監視し、分析ワークロードを実行するための、いくつかの Azure ツールもサポートされています。 Azure API Management によってサポートされている Azure サービスには、Azure Monitor ログ、Application Insights、Event Hubs などがあります。

Depiction of how revisions work in Azure API Management. API requests from consumers are routed to the current revision of the API, whereas API requests from the in-house development team are routed to the API revision.

アプリ開発者から見た Azure API Management のしくみ

従量課金レベルを除くすべての Azure API Management インスタンスには、API を潜在的および既存の API コンシューマーに提供する開発者ポータルが含まれます。 開発者ポータルに付属している既定のインターフェイスは、組織のブランド化と要件に合わせてカスタマイズできます。

開発者アカウントを持つアプリ開発者は、開発者ポータルにサインインできます (まだアカウントを持っていないゲスト ユーザーも受け入れられます)。 その後、表示される Web インターフェイスを使用して、開発者は次の方法で API と対話できます。

  • API のドキュメントへのアクセス。 開発者は、API ごとに提供されているドキュメントを確認できます。
  • API のテスト。 開発者ポータルには、開発者が API をすばやく安全にテストできる対話型コンソールが用意されています。 開発者は、API 操作を選択し、パラメーター値を追加した後、呼び出しを送信して、API から返される応答を確認できます。
  • API コード サンプルの確認。 開発者ポータルには、C#、Java、JavaScript、PHP、Python など、複数のプログラミング言語での API 呼び出しサンプルが用意されています。
  • API のサブスクライブ。 コンシューマーが API の使用を決定すると、ユーザーは、開発者ポータルを使用して、API のサブスクリプションを作成し、API を呼び出すときに使用するサブスクリプション キーを取得できます。
  • 分析の実行。 開発者ポータルでは、開発者による API の使用状況を分析できます。