無限ノック › SAP 練習問題一覧 › 問題
SAP新しいソリューションのための設計

ある金融機関は、国内の決済処理サービスをAmazon ECS on Fargate(3アベイラビリティゾーン構成、ALBでトラフィック分散)で運用しています。毎月2回の機能リリースでは過去に本番障害が複数回発生したため、エンジニアリングリードは以下の厳格なデプロイ要件を定めました。 ・リリース中のダウンタイムゼロ ・最初は全体の10%のトラフィックを新バージョンに転送するカナリアデプロイ ・エラーレートが1%を超えた場合、5分以内に旧バージョンへ自動ロールバック ・デプロイ設定はInfrastructure as Codeで管理し、開発・検証・本番の3環境に一貫して適用 ・新バージョンのヘルスチェック通過後のみ残り90%のトラフィックを移行 上記要件を最も効果的に充足するアーキテクチャはどれですか?

A
AWS CodeDeployのECS Blue/Greenデプロイに「CodeDeployDefault.ECSCanary10Percent5Minutes」設定を適用し、ALBの加重ターゲットグループで10%/90%のトラフィック分割を自動制御する。CloudWatch Alarmsをデプロイメントアラームとして指定し1%超のエラーレートで自動ロールバックを起動、CloudFormationでCodeDeployアプリケーション・ECSサービス・ALBリスナールールを含む全リソースをIaCとして3環境に一貫管理する。
✓ 正解
ECSCanary10Percent5Minutes設定でALB加重ターゲットグループを通じた10%/90%トラフィック分割と5分観測ウィンドウを正確に実現し、CloudWatch Alarmsデプロイメントアラームで1%超エラー時にCodeDeployが即時ロールバックを起動する。CloudFormationで全リソースをIaC管理し3環境への一貫展開も実現。全要件を最小構成で充足する最適解。
B
Amazon ECSのローリング更新(minimumHealthyPercent=90)とデプロイメントサーキットブレーカーを有効化し、CloudWatch Container Insightsのメトリクスアラームでエラーレート上昇を検知してLambdaを起動し旧タスク定義へのECSサービス強制更新でロールバックを実施する。デプロイ設定はAWS CDKでコード化しパイプライン各Stageにデプロイ承認ゲートを設ける。
ECSローリング更新はminimumHealthyPercentによるタスク数制御のみで、10%のトラフィックを固定した状態で新バージョンの安定性を評価してから残り90%を移行するカナリアパターンを実装できない。デプロイメントサーキットブレーカーは失敗タスクの自動ロールバックを提供するが、1%エラーレート閾値に基づく精密な自動ロールバックとは動作が異なる。
C
AWS CodeDeployのECS Blue/Greenデプロイに「CodeDeployDefault.ECSAllAtOnce」設定を使用して新バージョンを全面展開後、Route 53の加重ルーティング(Weight=10/90)でリージョン間トラフィックを段階的に新環境へ誘導する。CloudWatch Syntheticsカナリアで異常検出時にRoute 53ウェイトを0に変更して切り戻し、Terraformでインフラ全体を管理する。
AllAtOnce設定は全リクエストを即座に新バージョンへ切り替えるため10%カナリアデプロイの要件を根本的に満たさない。Route 53加重ルーティングはDNSリゾルバのTTLキャッシュが存在し、ロールバック時の即時トラフィック切り戻しを保証できないため5分以内ロールバック要件を達成できない。
D
AWS App MeshのVirtual Serviceにトラフィックポリシーを設定してEnvoyサイドカー経由で10%を新ECSタスクへルーティングし、ECS Blue/Greenデプロイメントと組み合わせてALBとApp Meshの二重トラフィック制御を実施する。CloudFormation StackSetsで3環境に一括展開し、CloudWatch Alarmsの発火をEventBridgeでキャッチしてStep Functionsロールバックフローを実行する。
App Mesh + ECS Blue/Greenの組み合わせはALBリスナーとEnvoyサイドカーの二重トラフィック制御が競合し、デバッグと運用の複雑性が著しく増大する。Envoyサイドカーのライフサイクル管理やxDS設定など追加の運用負担が生じ、金融機関の厳格なデプロイ要件に対して不必要なオーバーエンジニアリングとなる。

解説

AWS CodeDeployのECS Blue/Greenデプロイは、ALBリスナーに紐づくBlue(現行)とGreen(新バージョン)の2つのターゲットグループ間でトラフィックを段階移行する。「CodeDeployDefault.ECSCanary10Percent5Minutes」設定を使用することで、最初に10%のリクエストをGreenターゲットグループへ転送し5分間の観測ウィンドウ後に残り90%を自動移行するという要件を正確に実現できる。CloudWatch Alarmsをデプロイメントアラームに指定することで、エラーレートが1%を超えた時点でCodeDeployが即座にBlue環境へロールバックしALBの加重ルールを元に戻すため、5分以内の切り戻しが保証される。CloudFormationでCodeDeployアプリケーション・デプロイグループ・ECSサービス・ALBリスナーを一括IaC管理することで3環境に一貫したデプロイ設定を適用できる。 選択肢BのECSローリング更新はタスクを順次入れ替える方式であり、10%に固定したまま安定性を評価してから残り90%を移行するカナリアパターンを実現できない。サーキットブレーカーはロールバックを提供するがエラーレート閾値ベースの自動制御とは動作が異なる。 選択肢CのAllAtOnce設定は全トラフィックを即座に新バージョンへ切り替えるため段階的カナリアデプロイに反する。Route 53加重ルーティングはDNSレベルの制御でDNS TTLが存在するため、ロールバック時に即時のトラフィック切り戻しを保証できず5分以内要件を満たさない。 選択肢DのApp MeshはEnvoyサイドカーによるサービスメッシュを提供するが、ECS Blue/Greenデプロイと組み合わせるとALBとEnvoyの二重トラフィック制御が競合し設定複雑性が増大する。Step Functionsロールバックフローの追加は不要な運用オーバーヘッドとなりオーバーエンジニアリング。

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

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

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