API Management と GitHub を使用して、優れた API 開発者エクスペリエンスを設計する

Azure App Service
Azure Private Link
Azure Virtual Network

API の公開元として、API を効果的に市場投入し、お客様が各オファリングを区別するのに役立つ Web サイトが必要になります。 API が選択されると、認証されたユーザーにのみアクセス権を付与し、使用量を管理し、使用に対する正確な請求書を送付できることが必要になります。 このシナリオ例では、Azure サービスと GitHub を使用して、これらすべておよびそれ以上のことを実行するプラットフォームを作成する方法を示します。

アーキテクチャ

Diagram of the components of this architecture and the workflow through the internet portals and Azure services that constitute the solution, including Microsoft Entra B 2 C, Azure A P I Management, the A P I gateway, and line-of-business services.

このアーキテクチャの PowerPoint ファイルをダウンロードします。

データフロー

このソリューションは、主に次の構成要素で構成されています。

  • 収益化されたバックエンド API と API ゲートウェイ。 このソリューションの中核となるのは、収益化されたバックエンド API のセットです。 ユーザー、アプリケーション、デバイスなどのコンシューマーは、API ゲートウェイを介して API プラットフォームにアクセスします。 ゲートウェイは要求を調整し、必要に応じて、レートの平準化を図ります。

  • コンシューマー ポータルとアプリケーション。 API プラットフォームのコンシューマーは API オファリングを参照し、登録した後、さまざまな API エンドポイントにアクセスするためのサブスクリプション キーを生成します。 コンシューマーは、ソリューションのアカウント管理機能を使用して、アカウントと課金に関する情報を更新できます。

  • 管理ポータルとアプリケーション。 プラットフォーム管理者は、API 製品、それらの価格、および料金プランの一覧を公開します。 これらのポータルでは、問題のトラブルシューティングやサポート サービスの提供に役立つ、さまざまな API 製品の使用に関する豊富な分析も提供されます。

  • 基幹業務サービス。 これらのサービスは、コンシューマー ポータルとアプリケーションの機能を提供し、このソリューションでサポートされているさまざまなユーザー体験をサポートするために必要になります。

  • API 使用量の追跡と料金計算エンジン。 API ゲートウェイ レイヤーでキャプチャされた API 使用量レポートは、別のデータ ストアに定期的にエクスポートされます。 スケジュールされたジョブがこのデータに対して実行され、そのサブスクリプションの一覧および関連する価格モデルに基づいて、任意のコンシューマー アカウントに適用される料金が計算されます。

このソリューションの処理シーケンスの流れは次のとおりです。

  1. API 公開元が Azure portal を使用して API 仕様をインポートし、それらを製品別にグループ化して、公開します。

  2. API 公開元が、対応する GitHub リポジトリ内の製品関連のマーケティング情報を更新します。

  3. API コンシューマーが、マーケットプレース ポータルにアクセスし、さまざまな製品を参照して、特定の API サービスを選択します。

  4. コンシューマーが API サービスに関する詳細情報を表示しようとすると、コンシューマー ポータルでは、GitHub でホストされ、GitHub ページを使用する強化された開発者ポータルにコンシューマーがリダイレクトされます。

  5. コンシューマーは、さまざまな API 仕様や開発者関連の情報を参照できます。また、サンプルのペイロードを使用して、エンドポイントを呼び出してみることもできます。

  6. コンシューマーがプラットフォームに登録し、続いて、使用したい特定の API サービスのサブスクリプションをアクティブ化します。

  7. コンシューマーが、アプリまたはデバイスで API サービスを利用します。

  8. API が呼び出されると、その使用と消費に関するメトリックが生成されます。これらは、Azure によって追跡データベースに格納されます。

  9. 使用量データが定期的にエクスポートされ、カスタム データベース (通常はデータ レイク) に保存されて、さらに分析されます。

  10. バックエンド ジョブによって、使用量データとさまざまなサブスクリプションから料金が計算されます。

  11. 請求書および支払い関連の情報が、アカウンティング データベース内に格納されます。 この情報は、サービスの収益を計算するために使用されます。

コンポーネント

このソリューションは、以下のサービスとしてのソフトウェア (SaaS) オファリングで構成されています。

  • Azure API Management は、組織が内部と外部の両方のコンシューマーに API を公開できるようにする、サービスとしての管理されたプラットフォームです。 API Management を使用すると、任意の場所でホストできる API を発行できます。 基本的に、API Management を使用すると、企業が公開する API 全体への単一のエントリ ポイントとして機能する公開されたゲートウェイから API ホスティングを切り離すことができます。 詳細については、「ゲートウェイ ルーティング パターン」を参照してください。

    API Management では、公開されたすべての API 上にガバナンス層も用意されています。 API Management ポリシー、およびレート制限やクォータなどの他のさまざまな機能を使用して、キーまたはサブスクリプションに基づいて API 要求を調整できます。 API Management には開発者ポータルが含まれており、それを通じて公開する API のドキュメントとして機能する完全にカスタマイズ可能な Web サイトが提供されます。

  • GitHub は、開発者がソフトウェア プロジェクトをビルド、出荷、保守するために頻繁に使用する Microsoft の人気のある SaaS オファリングです。 これは、ソリューションで使用できる以下の重要な機能を提供します。

  • Azure App Service は、カスタム Web アプリケーションをホストするためのフル マネージドのコンピューティング プラットフォームです。

  • Azure Active Directory B2C (Azure AD B2C) は、アプリケーションがアクセスと認可のために外部の顧客またはパートナーの ID を管理するために使用できる Microsoft Entra ID の拡張機能です。 Microsoft ID プラットフォームを使用すると、カスタム アプリケーションに ID と承認を簡単に統合できます。

シナリオの詳細

API プラットフォームが成功して導入されるかどうかは、マーケットプレースでのその評価の高さに大きく依存しています。 プラットフォームによって提供されるデジタル資産以外にも、API を容易に見つけて簡単に使用できることは、お客様がプラットフォームを使用するかどうかに大きく影響します。 お客様は、ドキュメントを検出し、問題に対するサポートを受けることができる必要があります。 また、プラットフォームでは、お客様が自分のニーズに合わせて API を形成できるように、コミュニティへの貢献を促進する必要もあります。 API の公開元として、API を効果的に市場投入し、お客様が各オファリングを区別するのに役立つ Web サイトが必要になります。 API が選択されると、認証されたユーザーにのみアクセス権を付与し、使用量を管理し、使用に対する正確な請求書を送付できることが必要になります。 このシナリオ例では、Azure サービスと GitHub を使用して、これらすべておよびそれ以上のことを実行するプラットフォームを作成する方法を示します。

考えられるユース ケース

このソリューションを使用すると、API 開発者は次のことを簡単に行うことができます。

  • API 製品のオファリングを見つけて理解する。
  • サブスクライブし、さまざまなアプリケーションおよびチャネルと統合する。
  • ヘルプを表示し、問題をトラブルシューティングし、問題を修復する。
  • コミュニティへの貢献を推進し、アイデアやナレッジを交換する。

API 値チェーン

Diagram that describes the A P I value chain.

値チェーンの一番上にあるのは、API サービス プロバイダーです。 その次は、最終的なターゲット コンシューマーのエクスペリエンスを設計および構築する API コンシューマーまたはインテグレーターです。 エンド ユーザーと顧客は、値チェーンの最終的な受益者です。

API 開発者エクスペリエンス

Diagram of features and capabilities of the enhanced A P I developer experience.

この図の PowerPoint ファイルをダウンロードします。

API 開発者エクスペリエンスは、次の 3 つのポータルを備えています。

  • コンシューマー ポータル。 コンシューマー ポータルは、企業によって提供されるさまざまな API 製品を紹介するマーケティング Web サイトとして機能します。

  • 開発者ポータル。 開発者ポータルには、サードパーティの開発者向けに、さまざまな API サービスと、それらをアプリケーションで使用する方法に関するドキュメントが用意されています。

  • アカウント ポータル。 登録されたユーザーは、アカウント ポータルを使用して、サブスクリプションを管理したり、その他のアカウント関連アクティビティを実行したりします。

機能の要件

大まかに言うと、エンタープライズ規模の API プラットフォームの機能要件は、"製品化"、"プラットフォーム管理"、"コンシューマー エクスペリエンス" という 3 つのカテゴリに分類されます。

Diagram that shows three broad functional requirements of an enterprise-scale A P I platform.

次のセクションでは、各機能領域内の機能について詳しく説明します。

製品化

製品化の目的は、収益化 API、その管理、およびそれらをデジタル製品として販売するための戦略を特定して定義することです。 その結果、以下に対応できます。

  • 製品のバリエーションの特定や、それに対応する物理資産へのマッピングなどの機能。
  • 価格と料金のプラン、および必要なメタデータの定義。
  • コンシューマー エクスペリエンスを促進するために作成する必要があるコンテンツ。

製品化は、次の機能で構成されています。

  • API 製品。 この API のカタログは、コンシューマーが使用できます。 製品は、購入用または無料サービスとして提供されます。

  • バリエーション。 開発者エクスペリエンスでは、収益化された API 製品のバリエーションを特定する必要があります。

  • 価格プラン。 コンシューマーにとっての魅力を高めるために、さまざまな価格プランを定義します。

  • 分類とコンテンツ。 これらの API 製品のマーケティング戦略に必要なコンテンツ (テキスト、PDF、画像など) を定義して作成します。

  • 物理資産。 これは、特定の API 製品の一部である実際のクラウド サービスと、それに対応するライフサイクル管理で構成されます。 価格プランを作成する際に、これらのサービスを維持するための運用コストを考慮してください。

プラットフォーム管理

プラットフォーム管理では、API プラットフォームの全体的なホスティング、管理、ガバナンスに焦点を当てます。 また、さまざまな基幹業務アプリケーションとサービスを管理するためのエンドツーエンドのソリューションも提供されます。 注力すべき主な分野は、サブスクリプション管理、請求、請求書作成です。 また、プラットフォーム管理では、財務面や運用面など、サービスの全体的な正常性を示すビジネス インサイトと分析も生成できます。

プラットフォーム管理は、次の機能で構成されます。

  • ユーザー登録。 ユーザーがプラットフォームに登録する方法を特定します。 ユーザー セグメントに応じて、必要なすべての承認ワークフローを定義します。

  • API カタログ。 API Management を通じて公開される API アセットを特定します。 API のアクセスと使用を制御するポリシーを適用します。 ユーザーのサブスクリプションを管理します。

  • 分析情報と分析。 テレメトリ データをキャプチャして、さまざまなメトリックを生成します。 Power BI などのさまざまなダッシュボードを使用してデータを視覚化し、ビジネスや IT の意思決定者に必要なさまざまな分析情報を導き出します。

  • 請求と請求書作成。 サブスクリプション、注文管理、請求、請求書作成に関連するワークフローを定義します。

  • サポート。 サポート リクエストを処理するためのツールとプロセスを確立します。

ユーザー エクスペリエンス

API プラットフォームの導入は、コンシューマーがどれだけ簡単に次のことを実行できるかに大きく依存します。

  • 必要な API を検出する。
  • 開発者ポータルを参照して、仕様および技術コンテンツを確認する。
  • 登録してサブスクライブする。
  • 選択した API 製品に対する支払いを行う。
  • アプリケーションで API の使用を開始する。

コンシューマー エクスペリエンスは通常、Web ポータル、モバイル アプリ、またはその両方を通じて提供されます。 Azure AD B2C を使用すると、ユーザーの登録と ID 管理を容易に行うことができます。 Azure AD B2C には、Microsoft や Google など、OpenID ID プロバイダーのサポートが含まれています。

コンシューマー エクスペリエンスは、次のコンポーネントで構成されます。

  • 製品 (API) カタログ。 匿名と登録済みの両方のユーザー向けのマーケットプレース エクスペリエンスを作成します。

  • アカウントとサブスクリプションの管理。 API を使用すると予想されるユーザーの種類に基づいて、登録およびサインインするための手順を確立します。 既存のソーシャル ID プロバイダーの使用など、ユーザー設定をサポートします。 セルフサービス サブスクリプション管理、アクティブ化と非アクティブ化のサービス、および請求された料金の支払いを可能にします。

  • ユーザー インターフェイス (UI)/ユーザー エクスペリエンス (UX)。 エンド ユーザー エクスペリエンスでサポートするチャネルのエクスペリエンスを特定して定義します。 マルチデバイス、マルチフォーム ファクターの機能を最新の UI 設計と共に含めます。 使いやすさの調査を通じてエクスペリエンスを強化します。

考慮事項

このシナリオのコンポーネントは、パフォーマンス、信頼性、セキュリティの問題に対処します。

API Management では、受信要求の増加数に応じて、API Management の処理能力を迅速に拡張する自動スケールをサポートしています。 また、API Management では、回復性と高可用性を提供するためにゾーン冗長と複数リージョンのデプロイもサポートしています。 ゾーン冗長の詳細については、「Azure API Management の可用性ゾーンのサポート」を参照してください。 API Management セキュリティの詳細については、API Management の Azure セキュリティ ベースラインに関するページを参照してください。

App Service は、高可用性を保証する SLA を使用した組み込みのセキュリティと自動スケールを備えた、フル マネージド型のサービスとしてのプラットフォームです。 App Service は、ISO、SOC、PCI に準拠しており、Microsoft Entra ID、Google、Facebook、Twitter、または Microsoft アカウントを使用したユーザーの認証をサポートしています。 App Service を使用して、IP アドレス制限を作成することもできます。

Azure AD B2C は高可用性を実現し、数億人のユーザーをサポートできる拡張性を備えています。 Azure AD B2C では、OpenID Connect および複数の ID プロバイダーをサポートしているため、お客様は好みのプロバイダーを選択できます。 また、Azure AD B2C では、セキュリティのレイヤーをさらに追加する、アプリケーション ベースおよびポリシー ベースの多要素認証もサポートしています。 Azure AD B2C の詳細については、「Azure Active Directory B2C とは」を参照してください。 外部 ID の使用の詳細については、「Microsoft Entra ID の External Identities」を参照してください。

GitHub では、セキュリティ レビューをコード レビューの一部として自動化し、潜在的なセキュリティの問題がないかすべての新規コミットをスキャンします。 このサービスは、コード ベースへの追加として含められた問題を直ちに検出するのに役立ちます。 GitHub セキュリティを使用すると、セキュリティに関する懸念事項の検索をカスタマイズし、サードパーティのスキャン エンジンを統合できます。 その他の機能および詳細については、GitHub の「Security」を参照してください。

コスト最適化

コンシューマー ポータルを開発する場合、Team または EnterpriseGitHub の価格プランを使用できます。 お客様の企業に最適なプランを特定するには、機能マトリックスを参照してください。

API Management では、Standard または Premium レベルを使用できます。 レベル間の違いをよりよく理解するには、API Management の価格オプションに関するページを参照してください。

Azure App Service の場合は、アプリケーションをホストするための Windows および Linux 環境で使用可能な価格オプションを参照してください。

共同作成者

この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。

プリンシパル作成者:

  • Subhajit Chatterjee | プリンシパル ソフトウェア エンジニア、業界クラウド

次の手順