カナリアリリースでは、まず新しいアプリケーションバージョンをインスタンスの小さなサブセットにデプロイし、すべてのインスタンスに展開する前に実際のトラフィックで検証することができます。これにより、Enterprise Distributed Application Service (EDAS) によって管理される Elastic Compute Service (ECS) クラスター内の Spring Cloud または Dubbo マイクロサービスアプリケーションを更新する際の爆発半径 (影響範囲) を縮小します。
仕組み
EDAS でのカナリアリリースは、3 つのフェーズからなるプロセスに従います:
カナリアグループへのデプロイ: EDAS は、指定されたインスタンスグループ (カナリアグループ) に新しいバージョンをデプロイします。
検証: トラフィックの分散とアプリケーションの動作を監視して、カナリアグループを検証します。
ロールアウトまたはロールバック: 検証が成功した場合、EDAS は設定可能なフェーズで残りのグループに更新をデプロイします。これは、設定された間隔で自動的に行うか、バッチごとに手動で行うことができます。問題が発生した場合は、変更を停止してロールバックします。
EDAS は、カナリア検証のために 2 つのトラフィックルーティング戦略をサポートしています:
| 戦略 | 仕組み |
|---|---|
| コンテンツベースルーティング | ヘッダー、Cookie、パラメーターなどのリクエスト属性に基づいて、特定のトラフィックをカナリアグループにルーティングします |
| 比率ベースのルーティング | 設定可能な割合のすべてのトラフィックをカナリアグループにルーティングします |
サポートされるアプリケーションタイプ
| アプリケーションタイプ | カナリアリリースのサポート |
|---|---|
| Dubbo | 完全にサポートされています |
| Spring Cloud | 制限付きでサポートされています。アプリケーションが機能の設定に Deployment.Metadata.Name または Deployment.Metadata.Uid を使用している場合、カナリアリリースを実行しないでください。これらのメタデータフィールドはカナリアリリース中に変更されるため、それらに依存する機能が破損する可能性があります。 |
| High-Speed Service Framework (HSF) | サポートされていません |
Ingress アプリケーション: Server Load Balancer (SLB) インスタンスを使用して Ingress アプリケーションに直接トラフィックを転送する場合、SLB のトラフィック転送ポリシーはカナリアリリースポリシーに従いません。
Ingress アプリケーションでカナリアリリースを使用するには、複数のレプリカを持つクライアントアプリケーションとサーバーアプリケーションを作成します。サーバーアプリケーションでカナリアリリースを実行し、SLB インスタンスをクライアントアプリケーションに関連付けてサービスアクセスを処理します。
前提条件
開始する前に、以下を確認してください:
インスタンスを含むインスタンスグループが少なくとも 2 つある ECS クラスターにデプロイされたアプリケーション
インスタンスグループを作成して ECS インスタンスを追加する方法については、「EDAS コンソールでの ECS クラスター内のインスタンスグループの管理」をご参照ください。
カナリアリリースの開始
EDAS コンソールにログインします。
左側のナビゲーションウィンドウで、[アプリケーション管理] > [アプリケーション] を選択します。
トップナビゲーションバーで、リージョンを選択します。[アプリケーション] ページの上部で、[Microservices Namespace] ドロップダウンリストから microservices namespace を選択します。
更新するアプリケーションの名前をクリックします。
[基本情報] ページの右上隅で、[アプリケーションのデプロイ] をクリックします。
「[デプロイメントモードの選択]」ページで、「[カナリーリリース(段階的)]」セクションを見つけ、「[デプロイメントの開始]」をクリックします。
[カナリアリリース (段階的)] ページで、以下の構成を完了し、[OK] をクリックします。
デプロイメントパッケージのアップロード
新しいアプリケーションバージョンを含むデプロイメントパッケージをアップロードします。
リリースポリシーの設定
カナリアリリースの段階的なロールアウト戦略を設定します。

[Publish Policy Configuration] セクションでは、お客様の構成に基づいてカナリアリリースプロセスが表示されます。
| パラメーター | 説明 |
|---|---|
| カナリー グループ | 新バージョンを最初にデプロイして検証するインスタンス グループです。 |
| カナリー リリース後のグループごとのバッチ数 | カナリー グループの検証完了後に、残りのグループへ新バージョンをデプロイする際のフェーズ数です。すべてのグループが選択済みの場合: 新バージョンは、指定されたフェーズ数に基づいて各グループへ順次デプロイされます。グループ内のインスタンス数がフェーズ数より少ない場合は、実際のインスタンス数に基づいてデプロイされます。特定のグループが選択済みの場合: 新バージョンは、指定されたグループに対してフェーズ数に基づいてデプロイされます。 |
| カナリー リリース後のスケールアウト用バッチ種別 | カナリー リリース後のグループごとのバッチ数 が 2 以上の場合に必須です。自動: EDAS は、次のバッチ開始前の待機時間(待機しない、1 分、2 分、3 分、4 分、または 5 分)で指定された間隔で各フェーズを実行します。手動: 各フェーズを手動でトリガーします。 |
| Java 実行環境 | アプリケーションの Java 実行環境です。 |
カナリアリリースルールの設定
EDAS は、コンテンツベースルーティングと比率ベースのルーティングの 2 種類のカナリアリリースルールをサポートしています。
コンテンツによるカナリアリリース
リクエスト属性に基づいて特定のトラフィックをカナリアグループにルーティングします。
[ポリシーの追加] をクリックします。
[コンテンツポリシーによるカナリアリリースの追加] パネルで、[+ インバウンドトラフィックルールの作成] をクリックしてルールを追加します。
複数のインバウンドトラフィックルールを作成できます。

| パラメーター | 説明 |
|---|---|
| プロトコルの種類 | アプリケーションが使用するプロトコルです。Spring Cloud: パス パラメーターを指定する必要があります。Dubbo: サービスの選択 および メソッド パラメーターを指定する必要があります。 |
| 条件モード | 複数の条件をどのように評価するかを指定します。以下のすべての条件を満たす(AND 論理)または 以下のいずれかの条件を満たす(OR 論理)を選択できます。 |
| 条件 | トラフィックのルーティングに使用されるマッチング基準です。Spring Cloud の場合: Cookie、Header、および パラメーター を指定できます。Dubbo の場合: パラメーター および パラメーター値取得式 を指定できます。 |
比率によるカナリアリリース
すべてのトラフィックの一定割合をカナリアグループにルーティングします。カナリアグループが受信するトラフィックの割合を指定するには、[トラフィック比率] パラメーターを設定します。
リリースの監視と完了
カナリアリリースが開始されると、EDAS は新しいバージョンをカナリアグループにデプロイします。[変更の詳細] ページでデプロイメントの進行状況を追跡できます。
トラフィックが期待どおりに分散されていることを確認します。詳細については、「カナリアトラフィックの監視」をご参照ください。
検証が成功すると、次のフェーズに進むには、[変更の詳細] ページで [次のバッチを開始] をクリックします。
すべてのフェーズが完了するまで繰り返します。
リリースのロールバック
検証中に問題が発生した場合は、リリースをロールバックして以前のバージョンを復元します:
[変更の詳細] ページの右上隅にある [変更を停止] をクリックします。
変更が停止すると、[基本情報] タブに、アプリケーションがカナリアリリース状態にあり、変更が停止されたことを示すメッセージが表示されます。
他の操作を実行する前に、アプリケーションをロールバックします。
アプリケーションがカナリアリリース状態にある間は、他のデプロイ操作を実行しないでください。最初にロールバックを完了してください。
結果の確認
カナリアリリースが完了したら:
[基本情報] タブで、[デプロイメントパッケージ] に新しいバージョンが表示されていることを確認します。
[インスタンス情報] タブで、すべてのインスタンスが [正常] 状態であることを確認します。