カナリアリリースでは、現在のバージョンがトラフィックを引き続き処理する一方で、新しいアプリケーションバージョンを一部のインスタンス(サブセット)にのみデプロイして検証できます。各バッチのデプロイが完了した後、ビジネスメトリックを確認し、リリースを継続するかロールバックするかを判断します。これにより、制御された低リスクなアップグレードが可能になります。
前提条件
開始する前に、以下の点を確認してください。
対象アプリケーションが 2 台以上のインスタンスを保有していること
カナリアリリースの仕組み
カナリアリリースは「小規模バッチのデプロイ → 監視 → 継続またはロールバックの判断」というサイクルを繰り返します。
カナリアバッチの最大台数は、全インスタンス数の 50 % に制限されます。残りのインスタンスは、指定したバッチ数で段階的にデプロイされます。各バッチのデプロイ完了後、手動で次のバッチを実行するか、ロールバックを実行します。
SAE では、カナリアリリース向けに以下の 2 種類のトラフィックルーティング戦略をサポートしています。
トラフィック比率によるルーティング:トラフィックの一定割合を新バージョンに振り分ける方法です(例:V2 に 20 %、V1 に 80 %)。
リクエスト内容によるルーティング:リクエストの属性(例:ユーザー ID)に基づいてトラフィックを振り分ける方法です(例:特定のユーザー ID を持つリクエストを V2 に、それ以外のすべてのトラフィックを V1 に送信)。
例: V1 を実行中のインスタンスが 10 台あるアプリケーションで、2 台(20 %)をカナリアバッチとしてデプロイし、残りの 8 台を 3 バッチに分けて段階的にリリースする場合。
段階的リリース(カナリアバッチなし)については、「アプリケーションの段階的リリースを実行する」をご参照ください。
カナリアリリースを実行する
アプリケーションの再デプロイは、アプリケーションの再起動を伴います。業務への影響を避けるため、非ピーク時間帯に実行してください。
SAE アプリケーション一覧ページで、リージョンと名前空間を選択し、アプリケーション ID をクリックしてアプリケーション詳細ページを開きます。
基本情報ページで、アプリケーションのデプロイをクリックします。
デプロイ方法に応じて、デプロイメントアーティファクトを更新します。
デプロイ方法は、アプリケーション初回デプロイ時に選択した方法で固定されます。
デプロイ方法 操作 WAR パッケージ 新しい WAR パッケージをアップロードするか、新しいパッケージのパスを入力し、実行環境を設定します。 JAR パッケージ 新しい JAR パッケージをアップロードするか、新しいパッケージのパスを入力し、実行環境を設定します。 ZIP パッケージ 新しい ZIP パッケージをアップロードするか、新しいパッケージのパスを入力し、実行環境を設定します。 イメージ イメージの設定セクションで、イメージの変更をクリックします。イメージの変更パネルで、別のイメージリポジトリまたはイメージバージョンを選択します。 リリースポリシー設定セクションで、カナリアリリースのパラメーターを設定します。

設定項目 説明 リリースポリシー カナリアリリース(段階的)を選択します。 カナリアリリース対象インスタンス数 カナリアバッチに含めるインスタンス数です。全インスタンス数の 50 % を超えることはできません。 カナリアバッチ後の残りバッチ数 カナリアバッチ完了後に、残りのインスタンスを段階的にリリースする際のバッチ数です。 最小利用可能インスタンス ローリングアップグレード中に常に稼働状態を維持する必要がある最小インスタンス数です。数値指定を選択すると絶対数を入力できます(システム推奨値を使用を選択すると、既存インスタンス数の 25 %(切り上げ)が設定されます)。また、比率指定を選択するとパーセンテージを入力できます。この値を 0 に設定すると、アップグレード中に業務が中断される可能性があります。 レイヤー 7 トラフィックカナリアリリースルールの有効化(Kubernetes Ingress) レイヤー 7 のカナリアトラフィックルールを適用します。Kubernetes Ingress カナリアリリースルールを作成した後に有効になります。 マイクロサービス向けカナリアリリースルールの有効化(Spring Cloud および Dubbo アプリケーション) マイクロサービス向けのカナリアトラフィックルールを適用します。マイクロサービスカナリアリリースルールを作成した後に有効になります。 例: インスタンス数が 10 台のアプリケーションの場合、カナリアリリース対象インスタンス数を
2に、カナリアバッチ後の残りバッチ数を3に設定します。SAE はまず 2 台のインスタンスをカナリアバッチで更新し、その後残りの 8 台をほぼ均等に分割した 3 バッチでリリースします。OK をクリックしてカナリアリリースを開始します。SAE はカナリアインスタンスを即時アップグレードします。
カナリアバッチのデプロイが完了した後、正常に動作しているか確認します。
変更記録ページで、変更の詳細とリリースステータスを確認します。すべてのバッチが「実行済み」と表示された場合、アップグレードは完了しています。
基本情報ページで、インスタンスタブをクリックします。ステータス列にすべてのインスタンスが 実行中と表示された場合、デプロイは成功しています。
変更詳細ページで、次のバッチを実行するか、ロールバックを実行します。
カナリアバッチが正常に動作している場合は、次のバッチを実行します。以降の各バッチについても、同様に「確認 → リリース」のサイクルを繰り返します。
カナリアバッチで問題が発生した場合は、今すぐロールバックをクリックして復元します。詳細については、「アプリケーションのロールバック」をご参照ください。
アプリケーションのロールバック
1 台以上のインスタンスがまだアップグレード中の場合、アプリケーションのステータスは 実行中 と表示されます。
| ロールバックシナリオ | 操作 |
|---|---|
| 初回リリースバッチで例外が発生し、応答が返されない場合 | 変更詳細ページの 今すぐロールバック をクリックします。SAE はアップグレード済みのインスタンスを以前のバージョンへ復元し、アプリケーションの構成を元の状態に復旧します。 |
| 例外によりアップグレードが失敗した場合(例:デプロイメントパッケージが利用不可、ヘルスチェックに失敗) | SAE がアプリケーションを自動的に停止およびロールバックします。手動操作は不要です。 |
| アップグレードがタイムアウトした場合(約 30 分) | SAE がタイムアウト例外を報告し、変更プロセスを停止します。変更詳細ページから、リリースを手動で終了し、ロールバックを実行してください。 |
次のステップ
| 操作 | 参考ドキュメント |
|---|---|
| アプリケーションライフサイクルの管理(更新、起動、停止、削除、縮小、拡大) | アプリケーションライフサイクルの管理 |
| オートスケーリングポリシーの設定 | オートスケーリングポリシーの設定 |
| CLB インスタンスをアプリケーションにバインドする | CLB インスタンスをアプリケーションにバインドし、パブリックまたはプライベート IP アドレスを生成する |
| スケジュールによる起動・停止ルールの作成 | スケジュールによる起動・停止ルールの作成 |
| 分散構成管理 | 分散構成管理 |
| インスタンスの仕様変更 | インスタンスの仕様変更 |
| ログの表示 | ログ管理 |
| モニタリングデータの表示 | モニタリング管理 |
| アプリケーションイベントの表示 | アプリケーションイベントの表示 |
| 変更記録の表示 | 変更記録の表示 |
| WebShell を使用したアプリケーションの健全性確認 | WebShell 機能によるアプリケーションのヘルスステータス確認 |