ある企業は Elastic Beanstalk 上で動作するカスタマー向けWebアプリケーションをデプロイしています。新バージョンのリリース時に以下の要件を満たす必要があります: ①ダウンタイムゼロ、 ②新バージョンへのトラフィックを段階的に移行(最初は10%、問題なければ100%)、 ③問題検知時の即時ロールバック。どのデプロイメントポリシーが最も適切ですか?
正解: Traffic splitting(トラフィック分割)デプロイ:新バージョンを新インスタンスにデプロイし、設定した割合のトラフィックを段階的に新バージョンへ移行するカナリアリリースを実施する。 Elastic Beanstalk の Traffic splitting ポリシーはカナリアリリース(カナリア:少数のユーザーに先行して新バージョンを公開する手法)を実現します。新バージョンを新規インスタンスにデプロイし、指定した割合(例:10%)のトラフィックのみを新バージョンへ流します。評価期間中に問題が検知されなければ100%に移行、問題があれば即座にロールバックが可能です。 選択肢AのRolling は既存インスタンスをバッチ単位で順次新バージョンに更新するため段階的ではなく、ダウンタイムリスクと即時ロールバック困難という問題があります。 選択肢BのRolling with additional batch は新しいインスタンスバッチを追加してからローリングアップデートを行うため、段階的トラフィック移行ができません。 選択肢CのImmutable はゼロダウンタイムですが段階的トラフィック移行ができません。