無限ノック › DOP 練習問題一覧 › 問題
DOPSDLC の自動化

ある企業は Amazon ECS(Fargate)上で稼働する API を AWS CodePipeline と AWS CodeDeploy で Blue/Green デプロイしています。新バージョンへ一度に全トラフィックを移すのではなく、最初の数分は 10% のみを新タスクセットに流し、アプリケーション固有の指標(カスタム CloudWatch メトリクスの 5xx エラー率)が悪化した場合は自動でロールバックしたいと考えています。さらに、本番トラフィックを流す前に新タスクセットへ合成リクエストを送って疎通確認を行いたいです。最小限の運用負荷でこれらを実現する構成はどれですか?

A
CodeDeploy のデプロイ設定を CodeDeployDefault.ECSCanary10Percent5Minutes にし、5xx エラー率の CloudWatch アラームをデプロイグループのロールバックトリガーに設定。BeforeAllowTraffic フックで疎通確認用 Lambda を実行する
✓ 正解
ECSCanary10Percent5Minutes は最初に 10% を移行し 5 分後に残りを移す段階デプロイを提供します。CloudWatch アラームをデプロイグループのロールバックトリガーに設定すれば 5xx 悪化時に自動ロールバックでき、BeforeAllowTraffic フックの Lambda で本番移行前の疎通確認も実現でき、全要件を最小負荷で満たします。
B
CodeDeploy のデプロイ設定を CodeDeployDefault.ECSAllAtOnce にし、デプロイ後に EventBridge ルールで 5xx を監視して Lambda からロールバック API を呼び出す。疎通確認は AfterAllowTraffic フックで行う
ECSAllAtOnce は新タスクセットへ全トラフィックを一度に移行する設定であり、10% のみ流す Canary 要件を満たしません。また EventBridge と Lambda による独自ロールバック実装はデプロイグループのロールバックトリガーより運用負荷が高く冗長です。
C
CodePipeline の承認アクションで 10% 移行を手動承認とし、CloudWatch アラーム発火時は Systems Manager Automation でタスク定義を前リビジョンに戻す。疎通確認は CodeBuild ステージで実施する
手動承認による 10% 移行は「自動でロールバック」「最小限の運用負荷」という要件に反します。Systems Manager Automation でタスク定義を戻す独自実装も CodeDeploy 標準のロールバック機能と比べ複雑で、過剰な作り込みになります。
D
ECS のローリングアップデートで minimumHealthyPercent を 10% に設定し、デプロイサーキットブレーカーで自動ロールバック。疎通確認は CodeDeploy の ValidateService フックで行う
ECS ローリングアップデートとデプロイサーキットブレーカーは Blue/Green ではないため、ValidateService や BeforeAllowTraffic という CodeDeploy のライフサイクルフックは利用できません。minimumHealthyPercent はタスク置換時の最小稼働率でありトラフィック比率の Canary 制御でもありません。

解説

ECS の Blue/Green デプロイで段階的なトラフィック移行を行うには、CodeDeploy の事前定義デプロイ設定 CodeDeployDefault.ECSCanary10Percent5Minutes が最適です。最初に 10% を新タスクセットへ移し、5 分後に残り 90% を移行します。 デプロイグループにロールバックトリガーとして CloudWatch アラームを関連付けると、カスタム 5xx メトリクスのアラーム発火時に自動でロールバックされます。 本番トラフィックを流す前の疎通確認は、ライフサイクルフックの BeforeAllowTraffic で Lambda を実行して新タスクセットへ合成リクエストを送り、検証に失敗したらデプロイを停止できます。 選択肢Bの CodeDeployDefault.ECSAllAtOnce は段階移行ではなく全トラフィックを一度に移すため、Canary 要件を満たしません。 選択肢Cの手動承認は「自動ロールバック」の要件と運用負荷最小化に反し、過剰な作り込みになります。 選択肢Dの ECS ローリングアップデートは CodeDeploy の Blue/Green ではないため、ValidateService や BeforeAllowTraffic といった CodeDeploy のライフサイクルフックは使えません。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDOPを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← DOP の問題一覧に戻る