AWS Elastic Beanstalk の deploy policy を整理する

AWS Elastic Beanstalk は、デプロイポリシーも含めデプロイを処理するいくつかのオプションがある。

All at once

新しいバージョンをすべてのインスタンスに同時に展開する。

環境内のすべてのインスタンスは、展開が行われている間、短時間サービスが停止することになる。

そのため、展開に必要な合計時間を最短にする方法にはなる。

Rolling

Elastic Beanstalk は環境の EC2 インスタンスを複数のバッチに分割し、アプリケーションの新しいバージョンを一度に 1 つのバッチにデプロイする。

そのため、環境内の残りのインスタンスは古いアプリケーションバージョンを実行した状態になる。

つまりローリングデプロイ中は、アプリケーションの古いバージョンでリクエストを処理するインスタンスもあり、新しいバージョンでリクエストを処理するインスタンスも存在する。

Rolling with additional batch

新しいバージョンをバッチで展開するが、最初にインスタンスの新しいバッチを起動して、展開プロセス中に完全な容量を確保する。

Immutable

変更不可能な更新を実行して、古いバージョンを起動しているインスタンスと並行しながら、別の Auto Scaling グループにあるアプリケーションの新しいバージョンを起動している新しいインスタンスのフルセットを起動する。

部分的に完了したローリングデプロイにより発生する問題を防止することができる。

新しいインスタンスがヘルスチェックをパスしなかった場合、Elastic Beanstalkはそれを終了し、元のインスタンスをそのまま残す。

参考情報

https://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/using-features.rolling-version-deploy.html