次の方法で共有


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

Azure API Management
Azure DevOps
Azure Pipelines

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

アーキテクチャ

Azure 上の APIOps を使用した自動化された 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 Management プラットフォームとして Azure API Management が使用されます。 Azure DevOps は API 管理を整理します。 Azure Repos には Git 機能が用意されており、 Azure Pipelines によって CI/CD パイプラインが作成されます。

考えられるユース ケース

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

考慮事項

これらの考慮事項では、Azure Well-Architected Framework の柱を実装します。これは、ワークロードの品質を向上させるために使用できる一連の基本原則です。 詳細については、「 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 を使用して 新しいプル要求を作成します

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

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

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

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

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

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

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

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

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

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

        抽出後の pull request の例のスクリーンショット。'specification.yml' という名前のファイルに対して提案された変更が示されています。

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

    'policy.xml' のコンテンツに対する変更と、他のファイルの空白への変更のみを示す pull request の例のスクリーンショット。

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

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

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

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

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

共同作成者

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

プリンシパル作成者:

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

次のステップ