段階的リリースでは、複数インスタンスで構成されるアプリケーションをバッチ単位で更新し、新しいバージョンを徐々に展開することで、リスクやダウンタイムを最小限に抑えます。バッチ数を設定し、進行状況を監視し、問題が発生した場合はロールバックできます。
前提条件
アプリケーションには複数のインスタンスが必要です。
背景情報
段階的リリースでは、アプリケーションをバッチ単位でデプロイし、一度に一部のインスタンスのみを更新します。このプロセス中に問題が発生した場合、すぐにリリースを終了し、直前のバージョンにロールバックできます。問題を修正後、再度リリースを再開できます。
段階的リリース中、SAE はアプリケーションのインスタンスを指定されたバッチ数にできるだけ均等に分配します。各バッチを手動または自動で承認できます。インスタンスを完全に均等に分配できない場合、先頭のバッチの方が後のバッチよりもインスタンス数が少なくなります。
段階的リリースは、複数インスタンスを持つアプリケーションでのみ使用できます。IntelliJ IDEA のコマンドラインからシングルインスタンスアプリケーションに対して段階的リリースを実行しようとすると、エラーが報告されます。
ユースケース
たとえば、あるアプリケーションには Ver.1 を実行中のインスタンスが 10 個あり、これを Ver.2 にアップグレードする必要があります。このとき、更新を 3 つのバッチに分けて実施することにします。段階的リリースのプロセスは、に示されています。
操作手順
アプリケーションを再デプロイすると、アプリケーションは再起動されます。業務中断などの予測不能なエラーを防ぐため、オフピーク時間帯にアプリケーションをデプロイすることを推奨します。
[SAE Application List] ページで、上部のリージョンと名前空間を選択し、対象アプリケーションの ID をクリックしてアプリケーション詳細ページを開きます。
-
Basic Informationページで、Deploy Applicationをクリックします。
-
デプロイメントパラメーターを設定します。
説明アプリケーションのデプロイ方法は、初回に選択したデプロイ方法に基づきます。選択された方法に従ってパラメーターを設定してください。
-
WAR パッケージによるデプロイ:別の WAR パッケージをアップロードするか、新しくデプロイする WAR パッケージのパスを入力し、実行環境などの設定を行います。
-
JAR パッケージによるデプロイ:別の JAR パッケージをアップロードするか、新しくデプロイする JAR パッケージのパスを入力し、実行環境などの設定を行います。
-
ZIP パッケージによるデプロイ:別の ZIP パッケージをアップロードするか、新しくデプロイする ZIP パッケージのパスを入力し、実行環境などの設定を行います。
-
イメージ: イメージの設定セクションで、イメージの変更をクリックします。イメージの変更パネルで、別のイメージリポジトリまたはイメージバージョンを選択します。
-
-
Release Policy Settingsセクションで、段階的リリースを設定します。
パラメーター
説明
Release Policy
Batch Releaseを選択します。
Release Batch
インスタンスデプロイメントのバッチ数です。
Interval Within Batch
バッチ内の各インスタンスをデプロイする際の間隔(秒単位)です。これは、バッチに複数のインスタンスが含まれる場合にのみ適用されます。
Peak Volume
更新中に、希望インスタンス数を超えて作成可能な最大インスタンス数です。
重要この機能は招待プレビューです。アクセスをリクエストするには、DingTalk グループ(ID:32874633)で当社チームまでご連絡ください。
説明-
Minimum Available Instancesが 100%(MaxUnavailable = 0)に設定されている場合、Peak Volumeを 0 にすることはできません。
-
パーセンテージを設定した場合、SAE は計算結果を切り上げます。たとえば、インスタンスが 5 個あり、このパラメーターを 25% に設定すると、実際のPeak Volume値は 2 になります。
Minimum Available Instances
各ローリングアップデート中に常に利用可能である必要のある最小インスタンス数です。
説明-
業務継続性を確保するため、Minimum Available Instancesを 1 以上に設定してください。0 を設定すると、アップグレード中にサービス中断が発生します。
-
パーセンテージを設定した場合、SAE は計算結果を切り上げて整数にします。たとえば、インスタンスが 5 個あり、このパラメーターを 25%(1.25 インスタンス)に設定すると、実際のMinimum Available Instancesは 2 になります。
-
-
設定が完了したら、OKをクリックします。
-
以下のいずれかの方法でデプロイメントを確認します。
-
方法 1:変更詳細ページでリリースステータスを監視します。すべてのバッチが正常にデプロイされると、更新が完了します。
-
方法 2:Basic Informationページで、Instancesタブをクリックします。すべてのインスタンスのステータスが実行中になると、デプロイメントは成功しています。
-
アプリケーションロールバック
カナリアリリースまたは段階的リリース中、すべてのインスタンスがアップグレードされるまでは、アプリケーションのアップグレードステータスは実行中のままです。
リリース中にバッチが失敗した場合(例:インスタンスが応答しなくなるなど)、Change DetailsページでRoll Back Nowをクリックできます。この操作により、すでにアップグレードされたインスタンスは直前のバージョンに復元され、元の構成が復旧します。
デプロイメントパッケージが利用不可、ヘルスチェックが失敗するなどの例外によりアプリケーション更新が失敗した場合、SAEは自動的にプロセスを停止し、ロールバックを実行します。
SAEにおけるアプリケーションアップグレードのタイムアウト時間は約 30 分です。アップグレードがこの制限時間を超過すると、SAEはタイムアウト例外を報告し、変更プロセスを一時停止します。その後、Change Detailsページに移動して、手動でリリースを終了し、ロールバックする必要があります。
リリースの終了
進行中のリリースを停止するには、Change DetailsページでStop Deploymentをクリックします。
リリースを終了しても、インスタンスはロールバックされません。これにより、複数のアプリケーションバージョンが同時に実行される可能性があります。
-
デプロイメントが完了したインスタンス:これらのインスタンスは引き続き新しいバージョンを実行し、ロールバックされません。
-
デプロイ中のインスタンス:これらのインスタンスは現在のデプロイを完了した後、新しいバージョンを実行します。
-
デプロイが開始されていないインスタンス:これらのインスタンスは以前のバージョンのままとなり、それらに対するリリースプロセスは停止されます。
-
auto scaling によって新しく作成されたインスタンス:これらのインスタンスは、今回のリリースの新しいバージョンを使用して起動されます。
リリースを終了した後は、アプリケーションのすべてのインスタンスが一貫したバージョンで実行されるよう、速やかに再デプロイまたは以前のバージョンへのロールバックを実施してください。
詳細情報
SAE でアプリケーションをデプロイした後、以下の操作を実行できます。
|
操作 |
参照先 |
|
アプリケーションの更新、スケーリング、起動、停止、削除などのアプリケーションライフサイクル管理操作。 |
|
|
auto scaling、CLB のバインド、バッチ起動・停止などのアプリケーションパフォーマンス向上のための操作。 |
|
|
ログ管理、モニタリング管理、アプリケーションイベントおよび変更記録の確認など、アプリケーションステータスに関連する操作。 |