ある企業は Elastic Beanstalk で 8 インスタンスの本番 Web アプリケーションを運用しています。新バージョンのデプロイにあたり、以下の 3 つの要件があります。 (1) ダウンタイムゼロ (2) 問題が検出された場合に 5 分以内にロールバックを完了できること (3) デプロイ中の追加インフラコストを最小限に抑えること 最も適切なデプロイポリシーはどれですか?
Immutable デプロイは新規 Auto Scaling グループ(ASG)に全インスタンスをデプロイし、ヘルスチェック通過後のみトラフィックを切り替えるためダウンタイムはゼロ。問題発生時は新 ASG を削除するだけで数分以内にロールバックが完了します。コスト増加期間はデプロイ中のみに限定されます。 選択肢AのRolling(ローリング)は、追加インスタンスは不要でコストは増加しないが、問題発生時のロールバックは再度ローリング更新が必要になり時間がかかります。 選択肢BのRolling with additional batch(追加バッチでローリング)は、追加インスタンスを起動してからローリング更新を行い、ロールバック時は追加バッチを削除して残りを再更新する必要があります。 選択肢DのBlue/Greenは、完全に分離した新環境に新バージョンをデプロイし URL スワップで切り替えますが、2 つの完全な環境を長期間同時に維持するコストが発生します。