次の方法で共有


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

Azure API Management
Azure DevOps
Azure Pipelines
GitHub

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

アーキテクチャ

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

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

Workflow

  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 呼び出しをルーティングし、資格情報を検証し、使用クォータを適用し、メタデータをログに記録します。 API を管理および発行するための中心的なプラットフォームとして機能します。

  • Azure DevOps は、開発ライフサイクルを管理する開発ツールとサービスのスイートです。 このアーキテクチャでは、API の計画、コード管理、および自動化されたデプロイをサポートしています。これにより、チームは共同作業を行い、API の配信を効率化できます。

    • Azure Pipelines は、継続的インテグレーションと継続的デリバリー (CI/CD) を可能にするクラウドベースのサービスです。 このアーキテクチャでは、API Management インスタンスへの API 変更のテスト、ビルド、デプロイを自動化します。

    • Azure Repos は、コードの管理に使用できる、標準の Git を含む一連のバージョン管理ツールです。 このアーキテクチャでは、API 定義、ポリシー、および構成が格納されます。 これは、すべての変更の唯一の情報源として機能し、プル要求を通じて監査とコラボレーションを可能にします。

代替案

このソリューションでは、CI/CD ワークフロー用の Git 機能と Azure Pipelines を提供するための Azure Repos がサポートされています。

また 、ビルド 、テスト、デプロイパイプラインを自動化するための GitHub Actions と共に、ソース管理とコラボレーションのための GitHub もサポートしています。

同様のバージョン管理と CI/CD 機能を提供する同等のテクノロジを使用できます。

シナリオの詳細

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

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

考えられるユース ケース

  • API を開発および管理する組織。 API Management で公開されている 1 つの API でも APIOps の使用を開始できます。
  • 規制の厳しい業界: 保険、銀行、金融、政府

考慮事項

これらの考慮事項では、Azure Well-Architected Framework の柱を実装します。これは、ワークロードの品質を向上させるために使用できる一連の基本原則です。 詳細については、「 Well-Architected Framework」を参照してください。

セキュリティ

セキュリティは、意図的な攻撃や貴重なデータとシステムの誤用に対する保証を提供します。 詳細については、「セキュリティの 設計レビューチェックリスト」を参照してください。

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

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

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

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

コストの最適化

コストの最適化では、不要な経費を削減し、運用効率を向上させる方法に重点を置いています。 詳細については、「 コストの最適化」のデザイン レビュー チェックリストを参照してください。

  • Azure 料金計算ツールを使用して、このアーキテクチャの Azure コンポーネントのコストを見積もります。

  • APIOps を実装するチームでは、Azure DevOps のライセンス コストを考慮する必要があります。 APIOps プロセスに参加しているすべてのユーザーは、適切な Azure DevOps ライセンスを持っている必要があります。 詳細については、 Azure DevOps の価格に関するページを参照してください。

    GitHub を使用する場合の価格とライセンスの詳細については、 GitHub の価格GitHub Enterprise のライセンスに関するページを参照してください。

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

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

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 とポリシーに対する重要な変更の追跡。
  • デプロイされたすべての変更の監査証跡の作成。

このシナリオを展開する

エクストラクターとパブリッシャー パイプラインの構成に関する詳細なガイダンスについては、 Azure API Management の APIOps のドキュメントを参照してください。

デプロイ ワークフローには、次のものが含まれます。

  • API Management からの API 構成の抽出。
  • レビュー用のプル要求の作成。
  • CI/CD パイプラインを通じて承認された変更を展開する。

貢献者

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

主要な著者:

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

次のステップ