IaaS 用の Azure Pipelines アーキテクチャ

重要

IaaS アプリケーションの CI/CD は、Azure DevOps を使用した CI/CD パイプラインの設計に関する記事のバリアントです。 この記事では、Azure Virtual Machines への Web アプリケーションのデプロイの詳細について説明します。

Azure Virtual Machines は、コンピューティングを柔軟かつきめ細かく管理する必要がある場合に、カスタム アプリケーションをホストするためのオプションです。 仮想マシン (VM) は、開発ライフサイクル全体を通じて、サービスとしてのプラットフォーム (PaaS) オファリングと同じレベルのエンジニアリングの厳格さに従う必要があります。 たとえば、VM に変更をプッシュする自動化されたビルドおよびリリース パイプラインを実装します。

この記事では、Azure Pipelines を使用して、継続的インテグレーション (CI) と継続的デプロイ (CD) プラクティスを使って VM にアプリケーションの変更をデプロイするための高度な DevOps ワークフローについて説明します。

アーキテクチャ

Azure Pipelines を使用した CI/CD パイプラインのアーキテクチャの図。

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

データフロー

このセクションでは、Azure Pipelines のベースライン アーキテクチャに関する記事を読んでいるものと想定し、Azure Virtual Machines へのワークロードのデプロイの詳細のみに焦点を当てています。

  1. PR パイプライン - "ベースラインと同じ"

  2. CI パイプライン - ベースラインと同じですが、IaaS に Web アプリをデプロイするために作成されるビルド成果物は Web 配置パッケージです

  3. CD パイプライン トリガー - "ベースラインと同じ"

  4. CD のステージングへのリリース - ベースラインと同じですが、次の 2 つの例外があります。1) ダウンロードされるビルド成果物は Web 配置パッケージです。2) パッケージはステージング Azure 仮想マシンにデプロイされます。

  5. CD の運用環境へのリリース - ベースラインと同じですが、次の 2 つの例外があります。

    a. 運用環境へのリリースは、ステージング環境と運用環境を入れ替えるように Azure Traffic Manager を更新することによって行われます。 この戦略は、運用が有効でステージングが無効になっている 2 つのエンドポイントを持つ Traffic Manager プロファイルを持つことで実現できます。 ステージングと運用を入れ替えるには、運用を無効にしてステージングを有効にします。
    b. ロールバックは、運用とステージングを元通りに入れ替えるように Azure Traffic Manager を更新することで実現できます。

  6. 監視 - "ベースラインと同じ"

コンポーネント

このセクションでは、Azure Pipelines のベースライン アーキテクチャに関する記事のコンポーネント セクションを読んでいるものと想定し、Azure Virtual Machines へのワークロードのデプロイの詳細のみに焦点を当てています。

  • Azure Virtual Machines では、Windows または Linux サーバーを使用して、セキュリティで保護された高スケールな仮想化インフラストラクチャをオンデマンドで構築できます。 Virtual Machines は、ワークロードをホストするためにこのアーキテクチャで使用されます。

  • Virtual Machine Scale Sets では、負荷分散が行われる同一の VM のグループを作成して管理することができます。 需要または定義されたスケジュールに応じて、VM インスタンスの数を自動的に増減させることができます。 スケール セットも、ワークロードをホストするために使用できます。

  • Azure Traffic Manager は、構成されたエンドポイントにトラフィックを分散させるために使用できる DNS ベースのトラフィック ロード バランサーです。 このアーキテクチャでは、Traffic Manager はクライアントの単一エントリポイントであり、運用仮想マシンとステージング仮想マシンを表す複数のエンドポイントで構成されています。 運用仮想マシン エンドポイントが有効になっており、ステージングが無効になっています。

代替

この記事では、ロード バランサーとしての Azure Traffic Manager の使用に焦点を当てています。 Azure には、検討できるさまざまな負荷分散オプションが用意されています。

考慮事項

このセクションでは、Azure Pipelines のベースライン アーキテクチャに関する記事の考慮事項セクションを読んでいるものと想定し、Azure Virtual Machines へのワークロードのデプロイに関する考慮事項の詳細のみに焦点を当てています。

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

  • Traffic Manager は DNS ベースであるため、IP アドレスのクライアント キャッシュでは待機時間が発生します。 Traffic Manager で 1 つのエンドポイントを有効にして別のエンドポイントを無効にしても、クライアントでは DNS の Time-to-Live (TTL) の有効期限が切れるまでキャッシュされた IP アドレスが引き続き使用されます。 レイヤー 4 またはレイヤー 7 で動作する負荷分散オプションを検討してください。

  • ロールバック、手動承認テスト、パフォーマンス テストなどを可能にするために、ステージングと運用以外の環境の実装を検討してください。 ステージングをロールバック環境として使用すると、その環境を他の目的で使用できません。

次のステップ