Blue-Green デプロイメント、ローリング・デプロイメント、およびカナリア・デプロイメントのモデル化

「エージェントごとに」ステップと「タグごとに」ステップは、大規模環境への段階的なデプロイ方法を提供します。これによりユーザーは、柔軟な Blue-Green デプロイメントやローリング・デプロイメントを実行でき、このときにカナリア・ノードを最初に更新することも、更新しないこともできます。

エージェントごとに」ステップと「タグごとに」ステップの 2 つのアプリケーション・プロセス・ステップでは、マルチノード環境への段階的なデプロイを柔軟な方法で行うことができます。これらのステップを使用すると、エージェントのサブセットを選択して、特定の順序でこれらのサブセットにデプロイできます。以下のシナリオは、これらのステップを使用して、マルチノード環境でのデプロイメント方法をどのように制御するかを示した、ほんのいくつかの例です。

Blue-Green デプロイメント

Blue-Green デプロイメントのビデオ・デモについては、Blue-green deployments with IBM UrbanCode Deploy (IBM UrbanCode Deploy による Blue-Green デプロイメント)を参照してください。Blue-Green デプロイメントのシナリオを詳しく説明した記事については、Setting Up Blue-Green Deployments in IBM UrbanCode Deploy 6.2.4 (IBM UrbanCode Deploy 6.2.4 での Blue-Green デプロイメントのセットアップ)を参照してください。

Blue-Green デプロイメントでは、2 つの同じ環境を使用します。クライアントが 1 つのアクティブ環境を使用しているときに、ユーザーはそのアクティブ環境を中断せずにもう 1 つの環境を更新できます。その後、そのもう 1 つの環境の準備ができたら、更新済みの環境にクライアントのトラフィックを送信するようにロード・バランサーを設定します。この方法で環境を更新すると、ダウン時間なしのデプロイメントが可能になり、アクティブ環境で問題が発生した場合に備えて 2 番目の作業環境を常に作動可能状態にすることができます。

Blue-Green デプロイメントをセットアップするには、一致する 2 つの環境を最初にサーバーでセットアップします。これらの環境は、異なるエージェント・リソースを持つ限り、同じ物理環境を指すことができます。これらの異なるエージェント・リソースにより、次の図に示すように、2 つの環境を区別することができます。

エージェント・リソースの 2 つの一致する集合を示すリソース・ツリー

その後、エージェント・リソースのサブセットを選択するためにリソース・タグを適用します。例えば、大規模なデプロイメントでは多くの場合、最初にカナリア・ノード と呼ばれる少数のテスト・ノードを更新します。リソース・タグをカナリア・ノードに適用して、これらのエージェント・リソースで最初にデプロイメントを実行することができます。 例えば、以下の図は、カナリア・ノードに「canary」タグが追加され、他のノードに「mainSystem」タグが追加された同じリソース・ツリーを示しています。

エージェント・リソースのリソース・タグを示すリソース・ツリー

次に、アプリケーション・プロセスで、タグまたはエージェントに基づいてデプロイメントを実行します。例えば、最初にカナリア・エージェント・リソースでデプロイメントを実行して、2 番目にその他すべてのエージェント・リソースでデプロイメントを実行するには、「タグごとに」ループを使用します。このループでは、最初に canary タグを使用して、次に他のリソースを表すタグを使用します。以下の図は使用中の「タグごとに」ステップを示しており、後続の図はそのステップのプロパティーを示しています。

アプリケーション・プロセスで使用中の「タグごとに」ステップ
「タグごとに」ステップのプロパティー

プロセスを要求するときに、以下の図に示すように、その要求に使用するタグを設定できます。

プロセスの要求時に反復するタグを設定

このタイプのデプロイメントの編成方法は他にも多数あります。例えば、別個の環境を使用する代わりに、単一の環境を使用して、青と緑のノードにリソース・タグでタグ付けすることができます。ご使用の環境を編成して、リソース・タグをこれらの環境に適用する方法は、ノードを更新する順序によって異なります。

ローリング・デプロイメント

ローリング・デプロイメント は、ノードを少数ずつ更新することで大規模環境を更新します。ローリング・デプロイメントのセットアップは Blue-Green デプロイメントと似ている場合がありますが、今回は単一の論理環境を使用します。以下の図に示すように、環境には多数のノードを含めることができます。

6 つのノードを含む環境

これらのノードを 1 つずつデプロイするには、「エージェントごとに」ステップを使用します。例えば、以下のアプリケーション・プロセスは、「エージェントごとに」ステップ内でこれらのノードに対してデプロイメントを実行します。これは、デプロイメントがそのノードで正しく実行されたことを確認するために、各デプロイメントの後で手動タスクの間一時停止します。その手動タスクの代わりに、任意の手動テストまたは自動テストを使用できます。一時点で 1 つのエージェントに対してデプロイメントを実行するようにするには、ループのプロパティーで「最大並列エージェント数」プロパティーを 1 に設定します。

ループするアプリケーション・プロセス。ループにはインストール・ステップと手動タスク・ステップがあります

カナリア・デプロイメント

カナリア・デプロイメント は、単一のノードまたはノードのサブセットを更新することから始めるデプロイメントです。そうすることで、すべてのノードを更新する前に、システムの小さなサブセットで更新をテストできます。カナリア・デプロイメントは、他の多くのデプロイメント・シナリオの一部になることがあります。例えば、Setting Up Blue-Green Deployments in IBM UrbanCode Deploy 6.2.4 (IBM UrbanCode Deploy 6.2.4 での Blue-Green デプロイメントのセットアップ)の中のシナリオには、最初にカナリア・ノードへのデプロイメントが含まれます。

デプロイメントでカナリア・ノードを使用するために必要なことは、1 つまたは少数のノードを選択し、必ず最初にそれらのノードにデプロイすることだけです。その後、自動化されたテストまたは手動のテストを実行して、カナリア・ノードが新しいバージョンで適切に動作していることを確認する必要があります。

最初にカナリア・ノードにデプロイする簡単な方法は、リソース・タグをカナリア・ノードに適用し、そのリソース・タグに最初にデプロイすることです。例えば、記事 Deploying applications with canary nodes (カナリア・ノードを使用したアプリケーションのデプロイ) にあるシナリオでは、リソース・タグ canary を 1 つのノードに適用し、リソース・タグ mainSystem を他のノードに適用します。この記事では、これらのタグを使用するいくつかの方法を示していますが、簡単な方法は、「タグごとに」ループを使用することです。このループには、次のような、コンポーネントをデプロイし、自動化されたテストを実行する単純なサブプロセスが含まれています。

コンポーネントをデプロイし、テストし、オプションでそれをロールバックする「タグごとに」ループを使用した単純なプロセス
ループのプロパティーで、タグを選択し、それらのタグの順序を設定します。この場合、canary タグが最初に実行され、mainSystem タグが 2 番目に実行されます。
canary タグが最初に実行されることを示した、「タグごとに」ループのプロパティー


フィードバック