APIOps を使用して API デプロイを自動化する

Azure API Management
Azure DevOps
Azure Pipelines

APIOps とは、GitOps と DevOps の概念を API のデプロイに適用する手法です。 DevOps と同様に、APIOps は、チーム メンバーが変更を簡単に行い、反復的かつ自動化された方法でデプロイするのに役立ちます。 このアーキテクチャは、APIOps を使用して API ライフサイクル全体と API 品質を向上させる方法を示しています。

アーキテクチャ

APIOps を使用した Azure への自動 API デプロイのアーキテクチャの図。

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

ワークフロー

  1. API オペレーターが、抽出パイプラインを実行して Git リポジトリを API Management インスタンスと同期し、必要な形式で API Management オブジェクトを Git リポジトリに取り込みます。

  2. API Management インスタンスで API の変更が検出された場合、オペレーターがレビューするための pull request (PR) が作成されます。 オペレーターは、変更を Git リポジトリにマージします。

  3. API 開発者は、選択した OpenAPI 仕様またはツールを使用して Git リポジトリを複製し、ブランチを作成し、API 定義を作成します。

  4. 開発者が変更をリポジトリにプッシュすると、レビュー用に PR が作成されます。

  5. PR は、必要な制御レベルに応じて、自動的に承認またはレビューできます。

  6. 変更が承認され、マージされると、発行パイプラインによって最新の変更が API Management インスタンスにデプロイされます。

  7. API オペレーターは、API Management のポリシー、診断、製品、その他の関連オブジェクトを作成および変更し、変更をコミットします。

  8. 変更はレビューされ、承認後にマージされます。

  9. 変更のマージ後、発行パイプラインにより API 定義プロセスを使用して変更がデプロイされます。

コンポーネント

  • Azure API Management は、バックエンド サービス用の一貫性のある最新の API ゲートウェイを作成します。 このプラットフォームでは、API 呼び出しをバックエンドにルーティングする他に、資格情報の検証、使用量クォータの適用、メタデータのログ記録も行います。

  • Azure DevOps は、計画やプロジェクト管理、コード管理、ビルドとリリースまで、開発ライフサイクルをエンド ツー エンドで管理するためのサービスです。

  • Azure Pipelines を使用すると、継続的インテグレーション (CI) と継続的デリバリー (CD) でコードのテストとビルドを実行して、任意のターゲットに提供できます。

  • Azure Repos は、標準 Git を含めて、コードの管理に使用できるバージョン管理ツールのセットです。

代替

このソリューションでは Azure Repos を使用して Git 機能を提供し、Azure Pipelines がパイプラインを提供します。 同等の任意のテクノロジを使用できます。

シナリオの詳細

APIOps では、バージョン管理を使用して API を管理し、API、ポリシー、操作に対する変更の監査証跡を作成します。

APIOps の手法を使用する API 開発者は、API をより早く、より頻繁にレビューおよび監査し、API 標準からの逸脱をより迅速に把握して解決し、仕様と API の品質を向上させることができます。 APIOps アプローチに従ってビルドしてデプロイする API が増えるほど、API 間の整合性が高くなります。

この APIOps アーキテクチャでは、API 管理プラットフォームとして Azure API Management が使用されます。 Azure DevOps によって API 管理が整理されます。 Azure Repos では Git 機能が提供され、Azure Pipelines では CI/CD パイプラインが作成されます。

考えられるユース ケース

  • API の開発と管理を行う組織
  • 規制の厳しい業界: 保険、銀行、金融、政府

考慮事項

これらの考慮事項は、ワークロードの品質向上に使用できる一連の基本原則である Azure Well-Architected Framework の要素を組み込んでいます。 詳細については、「Microsoft Azure Well-Architected Framework」を参照してください。

セキュリティ

セキュリティは、重要なデータやシステムの意図的な攻撃や悪用に対する保証を提供します。 詳細については、「セキュリティの重要な要素の概要」を参照してください。

このソリューションには、いくつかのセキュリティ関連の利点があります。 個々の開発者が (オペレーターであっても) API Management インスタンスに直接アクセスして変更や更新を適用することはありません。 代わりに、ユーザーが Git リポジトリに変更をプッシュし、抽出パイプラインと発行パイプラインが変更を読み取り、API Management インスタンスに適用します。 このアプローチは、API Management サービス インスタンスへの書き込みアクセス許可をチームに付与しないことによって、"最小の特権" のセキュリティのベスト プラクティスに従います。 診断またはトラブルシューティングのシナリオでは、昇格したアクセス許可を特定の時間に限定して付与することができます。

API Management インスタンスがセキュリティのベスト プラクティスを使用していることを確実にするには、このソリューションを拡張して、サードパーティ製のツールと単体テストを使用して API のベスト プラクティスを適用できます。 API またはポリシーに対して提案された変更が標準に違反している場合、チームは PR レビューを通じて早期にフィードバックを提供できます。

リポジトリのアクセス許可を設定するタスクとは別に、API Management インスタンスに同期する Git リポジトリ内に次のセキュリティ対策を実装することを検討してください。

  • pull request (PR) のレビュー: ブランチを使用し、API Management インスタンスの状態を表すブランチを保護して、変更が直接プッシュされないようにします。 PR では、4 つの目の原則 (必ず 2 人が目を通す) を適用するために、少なくとも 1 人のレビュー担当者が必要です。
  • 変更不可能な履歴: 新しいコミットを既存の変更に加えてのみ許可します。 監査目的では、変更不可能な履歴が特に重要です。
  • 多要素認証: ユーザーに 2 要素認証のアクティブ化を要求します。
  • 署名済みコミット: 事後に変更できない署名済みコミットのみを許可します。

コストの最適化

コストの最適化とは、不要な費用を削減し、運用効率を向上させることです。 詳しくは、コスト最適化の柱の概要に関する記事をご覧ください。

  • コストの見積もりには、Azure 料金計算ツールをご利用ください。

  • API Management には、従量課金、Developer、Basic、Standard、および Premium の各レベルがあります。

  • GitHub には無料のサービスが用意されています。 ただし、コード所有者や必要なレビュー担当者など、セキュリティ関連の高度な機能を使用するには、Team プランが必要です。 詳細については、GitHub の価格に関するページ を参照してください。

オペレーショナル エクセレンス

オペレーショナル エクセレンスは、アプリケーションをデプロイし、それを運用環境で実行し続ける運用プロセスをカバーします。 詳細については、「オペレーショナル エクセレンスの重要な要素の概要」を参照してください。

APIOps は、API 開発とデプロイに対する DevOps の生産性を向上させることができます。 最も便利な機能の 1 つは、Git 操作を使用して予期しない動作をする変更を迅速にロールバックする機能です。 コミット グラフには、すべてのコミットが含まれているので、事後分析に役立てられます。

API オペレーターは、多くの場合、同じ API セットの複数の環境を管理します。 通常、API の複数のステージが複数の異なる API Management インスタンスまたは 1 つの共有 API Management インスタンスにデプロイされます。 信頼できる単一の情報源である Git リポジトリは、現在クラスターにデプロイされているアプリケーションのバージョンを示しています。

誰かが Git リポジトリで PR を作成すると、API オペレーターは、レビューが必要な新しいコードがあることを認識します。 たとえば、開発者が OpenAPI 仕様を使用し、API 実装をビルドすると、この新しいコードがリポジトリに追加されます。 オペレーターは PR をレビューし、レビュー用に送信された API がベスト プラクティスと標準を満たしていることを確認できます。

パフォーマンス効率

パフォーマンス効率とは、ユーザーによって行われた要求に合わせて効率的な方法でワークロードをスケーリングできることです。 詳細については、「パフォーマンス効率の柱の概要」を参照してください。

APIOps には多くの利点がありますが、API Management のランドスケープが拡大するにつれて、それらを管理する複雑さも増します。 このソリューションは、次のような課題の解決に役立ちます。

  • すべての環境と API Management インスタンスの概要の把握。
  • API とポリシーに対する重要な変更の追跡。
  • デプロイされたすべての変更の監査証跡の作成。

このシナリオのデプロイ

このソリューションのデプロイには、次の手順が含まれます。

  • ポータルで API を開発するか、または選択したツールを使用して OpenAPI 仕様を変更します。

    • ポータルで変更を加えた場合は、抽出プログラムを実行して、すべての API と、関連するその他のポリシー、運用、構成を API Management から自動的に抽出できます。 この情報を Git リポジトリに同期できます。

    • 必要に応じて、Azure DevOps CLI を使用して新しい pull request を作成します。

  • 抽出ワークフローでは、以下の手順を実行します。

  • このシナリオでは、ポータルの変更を API Management インスタンスにダウンロードするパイプラインには、"抽出プログラムのビルド"、"ポータルからの成果物の作成"、"テンプレート ブランチの作成" の各ステージがあります。

    • "抽出プログラムのビルド"

      このステージでは、抽出コードをビルドします。

    • "ポータルからの成果物の作成"

      このステージでは、抽出プログラムが実行され、次のスクリーンショットに示すような Git リポジトリ構造に似た成果物が作成されます。

      • "テンプレート ブランチの作成"

        成果物が生成されると、このステージでは、プラットフォーム チームがレビューするために抽出された変更を含む PR が作成されます。

        抽出プログラムを初めて実行するときに、Git リポジトリからすべてのものがプルされます。 作成された PR には、すべての API、ポリシー、成果物などがあります。

        後の抽出には、PR の抽出前に行われた変更のみが含まれます。 場合によっては、変更は API の仕様のみに行われます。これは、以下の PR 例であてはまります。

        抽出後のプル要求の例のスクリーンショット。

  • レビュー担当者が pull request にアクセスして、更新された pull request を表示します。 この手順を自動化する自動承認を構成することもできます。

    プル要求の例のスクリーンショット。

  • PR の承認後、API Management からポータルに発行される別のパイプラインがトリガーされます。 この例では、"作成者のビルド"、"ターミネータのビルド"、および "APIM インスタンスの公開" というステージがあります。

    APIM-publish-to-portal パイプラインのステージのスクリーンショット。

    • ”作成者のビルド” ステージでは、新しい API の作成が処理されます。
    • ”ターミネータのビルド” ステージでは、すべての削除が処理されます。
    • ”APIM インスタンスの公開” ステージでは、API Management インスタンスの変更が公開されます。

    APIM-publish-to-portal パイプラインの実行例におけるジョブを示すスクリーンショット。

    このパイプラインが正常に実行されると、API Management インスタンスで変更が発行されます。

共同作成者

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

プリンシパル作成者:

  • Rishabh Saha | プリンシパル ソリューション アーキテクト

パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。

次のステップ