すべてのプロダクト
Search
ドキュメントセンター

Server Load Balancer:ALBを使用してカナリアリリースを実装する

最終更新日:Sep 18, 2024

カナリアリリースでは、古いバージョンと新しいバージョンのアプリケーションを並行してデプロイできます。 ユーザーベース全体に展開する前に、新しいバージョンをごく一部のユーザーに適用できます。 カナリアリリースでは、ビジネス要件に基づいて、古いバージョンと新しいバージョンにさらされるユーザーの割合を制御できます。

シナリオ

アプリケーションをビルドするときに、ユーザーエクスペリエンスを確保しながら、リリースプロセスを高速化する必要があります。 ワークフローを中断させる新しいバージョンのエラーのリスクを減らすために、カナリアリリースを実装し、新しいバージョンがユーザーのサブセットからサービストラフィックを受信できるようにする必要があります。 次に、カナリアユーザーからのフィードバックに基づいて、ログ、パフォーマンス、安定性などの指標に対して新しいバージョンを評価できます。 新しいバージョンをユーザーベース全体に段階的にロールアウトしたり、評価に基づいて古いバージョンにロールバックしたりできます。

準備

  1. 古いバージョンと新しいバージョンを異なるバックエンドサーバーにデプロイします。 サービスの可用性を確保するために、各バージョンを複数のバックエンドサーバーにデプロイできます。

  2. Application Load Balancer (ALB) インスタンスを作成します。 基本ALBインスタンスは、cookieベースのルールをサポートしていません。 標準ALBインスタンスを作成する必要があります。 詳細については、「ALBインスタンスの作成」をご参照ください。

  3. サーバーグループを作成します。 次に、古いバージョンと新しいバージョンがデプロイされているバックエンドサーバーを別のサーバーグループに追加します。 詳細については、「サーバーグループの作成と管理」をご参照ください。

  4. TCP リスナーを作成します。 次に、古いバージョンがデプロイされているバックエンドサーバーをリスナーのデフォルトサーバーグループに追加します。 詳細については、「HTTPリスナーの追加」、「HTTPSリスナーの追加」、および「QUICリスナーの追加」をご参照ください。

    上記のタスクを完了すると、すべてのリクエストが古いバージョンに転送されます。 次の1つ以上のメソッドを使用して、カナリアリリースを実装できます。 この例では、新しいバージョンがサーバーグループAに追加され、古いバージョンがサーバーグループBに追加されます。

HTTPヘッダーに基づくカナリアリリース

この例では、User-Agentヘッダー * Mozilla/4.0 * を含むHTTPリクエストが新しいバージョンに転送されます。

image
  1. ALBコンソールにログインします。

  2. 上部のナビゲーションバーで、ALBインスタンスがデプロイされているリージョンを選択します。

  3. インスタンスページで、管理するALBインスタンスのIDをクリックします。

  4. リスナータブで、管理するリスナーを見つけて、転送ルールの表示 /変更で、アクション列を作成します。

  5. 転送ルールタブで、新しいルールの追加をクリックします。

  6. 次のパラメーターを設定し、[OK] をクリックします。

    • 条件の追加: ドロップダウンリストからHTTPヘッダーを選択し、キーをuser-agentに設定し、値を * Mozilla/4.0* に設定します。

    • 処置: ドロップダウンリストから [転送] を選択し、[サーバーグループA] を選択します。

    詳細については、「リスナーの転送ルールの管理」をご参照ください。

    説明

    転送ルールを追加して、新しいバージョンに配信されるユーザートラフィックの割合を増やすことができます。 新しいバージョンが期待どおりに機能する場合は、古いバージョンを中止し、すべてのリクエストを新しいバージョンに転送できます。

クッキーに基づくカナリアリリース

この例では、キーと値のペアで指定されたCookieに基づいて新しいバージョンにリクエストを転送するようにALBを設定する方法を示します。

image
  1. ALBコンソールにログインします。

  2. 上部のナビゲーションバーで、ALBインスタンスがデプロイされています。

  3. インスタンスページで、管理するALBインスタンスのIDをクリックします。

  4. リスナータブで、管理するリスナーを見つけて、転送ルールの表示 /変更で、アクション列を作成します。

  5. 転送ルールタブで、新しいルールの追加をクリックします

  6. 次のパラメーターを設定し、[OK] をクリックします。

    • 条件の追加: ドロップダウンリストからCookieを選択し、値をkey: valueに設定します。

    • 処置: ドロップダウンリストから [転送] を選択し、[サーバーグループA] を選択します。

    詳細については、「リスナーの転送ルールの管理」をご参照ください。

    説明

    転送ルールを追加して、新しいバージョンに配信されるユーザートラフィックの割合を増やすことができます。 新しいバージョンが期待どおりに機能する場合は、古いバージョンを中止し、すべてのリクエストを新しいバージョンに転送できます。

サーバーグループに基づくカナリアリリース

この例では、example.com向けの要求の80% が古いバージョンに転送され、要求の20% が新しいバージョンに転送されます。

image
  1. ALBコンソールにログインします。

  2. 上部のナビゲーションバーで、ALBインスタンスがデプロイされています。

  3. インスタンスページで、管理するALBインスタンスのIDをクリックします。

  4. リスナータブで、管理するリスナーを見つけて、転送ルールの表示 /変更で、アクション列を作成します。

  5. 転送ルールタブで、新しいルールの追加 をクリックします。

  6. 次の情報に基づいて転送ルールを設定し、[OK] をクリックします。

    • 条件の追加: ドロップダウンリストから [ドメイン名] を選択し、ドメイン名をexample.comに設定します。

    • 操作: ドロップダウンリストから [転送] を選択し、[サーバーグループB] および [サーバーグループA] を選択します。サーバーグループBの重みを80に、サーバーグループAの重みを20に設定します。

    詳細については、「リスナーの転送ルールの管理」をご参照ください。

    説明

    ビジネス要件を満たすように、サーバーグループの重みを変更できます。 新しいバージョンが期待どおりに機能する場合は、古いバージョンを中止して、すべてのリクエストを新しいバージョンに転送できます。