カナリアリリースでは、古いバージョンと新しいバージョンのアプリケーションを並行してデプロイできます。 ユーザーベース全体に展開する前に、新しいバージョンをごく一部のユーザーに適用できます。 カナリアリリースでは、ビジネス要件に基づいて、古いバージョンと新しいバージョンにさらされるユーザーの割合を制御できます。
シナリオ
アプリケーションをビルドするときに、ユーザーエクスペリエンスを確保しながら、リリースプロセスを高速化する必要があります。 ワークフローを中断させる新しいバージョンのエラーのリスクを減らすために、カナリアリリースを実装し、新しいバージョンがユーザーのサブセットからサービストラフィックを受信できるようにする必要があります。 次に、カナリアユーザーからのフィードバックに基づいて、ログ、パフォーマンス、安定性などの指標に対して新しいバージョンを評価できます。 新しいバージョンをユーザーベース全体に段階的にロールアウトしたり、評価に基づいて古いバージョンにロールバックしたりできます。
準備
古いバージョンと新しいバージョンを異なるバックエンドサーバーにデプロイします。 サービスの可用性を確保するために、各バージョンを複数のバックエンドサーバーにデプロイできます。
Application Load Balancer (ALB) インスタンスを作成します。 基本ALBインスタンスは、cookieベースのルールをサポートしていません。 標準ALBインスタンスを作成する必要があります。 詳細については、「ALBインスタンスの作成」をご参照ください。
サーバーグループを作成します。 次に、古いバージョンと新しいバージョンがデプロイされているバックエンドサーバーを別のサーバーグループに追加します。 詳細については、「サーバーグループの作成と管理」をご参照ください。
TCP リスナーを作成します。 次に、古いバージョンがデプロイされているバックエンドサーバーをリスナーのデフォルトサーバーグループに追加します。 詳細については、「HTTPリスナーの追加」、「HTTPSリスナーの追加」、および「QUICリスナーの追加」をご参照ください。
上記のタスクを完了すると、すべてのリクエストが古いバージョンに転送されます。 次の1つ以上のメソッドを使用して、カナリアリリースを実装できます。 この例では、新しいバージョンがサーバーグループAに追加され、古いバージョンがサーバーグループBに追加されます。
HTTPヘッダーに基づくカナリアリリース
この例では、User-Agentヘッダー * Mozilla/4.0 * を含むHTTPリクエストが新しいバージョンに転送されます。
ALBコンソールにログインします。
上部のナビゲーションバーで、ALBインスタンスがデプロイされているリージョンを選択します。
インスタンスページで、管理するALBインスタンスのIDをクリックします。
リスナータブで、管理するリスナーを見つけて、転送ルールの表示 /変更で、アクション列を作成します。
転送ルールタブで、新しいルールの追加をクリックします。
次のパラメーターを設定し、[OK] をクリックします。
条件の追加: ドロップダウンリストからHTTPヘッダーを選択し、キーをuser-agentに設定し、値を * Mozilla/4.0* に設定します。
処置: ドロップダウンリストから [転送] を選択し、[サーバーグループA] を選択します。
詳細については、「リスナーの転送ルールの管理」をご参照ください。
説明転送ルールを追加して、新しいバージョンに配信されるユーザートラフィックの割合を増やすことができます。 新しいバージョンが期待どおりに機能する場合は、古いバージョンを中止し、すべてのリクエストを新しいバージョンに転送できます。
クッキーに基づくカナリアリリース
この例では、キーと値のペアで指定されたCookieに基づいて新しいバージョンにリクエストを転送するようにALBを設定する方法を示します。
ALBコンソールにログインします。
上部のナビゲーションバーで、ALBインスタンスがデプロイされています。
インスタンスページで、管理するALBインスタンスのIDをクリックします。
リスナータブで、管理するリスナーを見つけて、転送ルールの表示 /変更で、アクション列を作成します。
転送ルールタブで、新しいルールの追加をクリックします。
次のパラメーターを設定し、[OK] をクリックします。
条件の追加: ドロップダウンリストからCookieを選択し、値をkey: valueに設定します。
処置: ドロップダウンリストから [転送] を選択し、[サーバーグループA] を選択します。
詳細については、「リスナーの転送ルールの管理」をご参照ください。
説明転送ルールを追加して、新しいバージョンに配信されるユーザートラフィックの割合を増やすことができます。 新しいバージョンが期待どおりに機能する場合は、古いバージョンを中止し、すべてのリクエストを新しいバージョンに転送できます。
サーバーグループに基づくカナリアリリース
この例では、example.com向けの要求の80% が古いバージョンに転送され、要求の20% が新しいバージョンに転送されます。
ALBコンソールにログインします。
上部のナビゲーションバーで、ALBインスタンスがデプロイされています。
インスタンスページで、管理するALBインスタンスのIDをクリックします。
リスナータブで、管理するリスナーを見つけて、転送ルールの表示 /変更で、アクション列を作成します。
転送ルールタブで、新しいルールの追加 をクリックします。
次の情報に基づいて転送ルールを設定し、[OK] をクリックします。
条件の追加: ドロップダウンリストから [ドメイン名] を選択し、ドメイン名をexample.comに設定します。
操作: ドロップダウンリストから [転送] を選択し、[サーバーグループB] および [サーバーグループA] を選択します。サーバーグループBの重みを80に、サーバーグループAの重みを20に設定します。
詳細については、「リスナーの転送ルールの管理」をご参照ください。
説明ビジネス要件を満たすように、サーバーグループの重みを変更できます。 新しいバージョンが期待どおりに機能する場合は、古いバージョンを中止して、すべてのリクエストを新しいバージョンに転送できます。