SAP-C02-047 · 理解確認
理解確認:Blue/Green・Canary・Rolling Deployment
ブルー/グリーン / カナリア / ローリング / インプレース / トラフィック切り替え / デプロイリスク · 12問
2つの本番対応可能環境を並行稼働し、新バージョンを別環境で検証してから本番トラフィックを切り替えたい。問題発生時は旧環境へトラフィックを戻せる構成にしたい。最も適切なパターンはどれか。
B. ブルー/グリーンデプロイ
C. インプレースデプロイ
D. 一括デプロイ
答えと解説
答え:B
ブルー/グリーンは新旧環境を並行して保持し、切替前検証と旧環境へのトラフィック切り戻しを設計しやすい方式です。
新バージョンへ最初は少量の本番トラフィックだけを送り、一定時間メトリクスを観測して問題がなければ外部公開を拡大したい。最も適切なパターンはどれか。
B. ローリング
C. 一括
D. カナリア
答えと解説
答え:D
カナリアは初期本番外部公開を限定し、観測の結果に基づいて外部公開を拡大します。
アプリケーションフリートを複数バッチに分け、一部ずつ新バージョンへ更新して全体停止を避けたい。完全な第2環境は維持したくない。最も適切なパターンはどれか。
B. ブルー/グリーン
C. カナリアトラフィック切り替え
D. 一括
答えと解説
答え:A
ローリングはフリートをバッチ単位で段階的に更新します。
既存のコンピューティングリソースを維持したまま、そのリソース上のアプリケーションバージョンを更新したい。追加環境のコストを最小化することが重要である。最も適切な方式はどれか。
B. カナリア方式
C. インプレース
D. リニア方式
答えと解説
答え:C
インプレースは新しい並行環境を作らず、既存コンピューティングリソース上のアプリケーションを更新します。
ブルー/グリーンデプロイについて正しいものを3つ選択してください。
B. 現在環境と新しい環境を並行して保持し、切替前に新しい環境を検証できる
C. 旧環境を保持していても、トラフィックの切戻しだけでシステム状態全体が自動的に元へ戻るとは限らない
D. 新しい環境は本番トラフィックを受ける前には検証できない
E. 新しい環境へのトラフィック移行は一括に限定される
F. 旧環境を保持している間はトラフィックを戻す復旧を設計しやすい
答えと解説
答え:B / C / F
ブルー/グリーンは新旧環境を並行保持して切替前検証とトラフィック切り戻しを設計しやすくします。ただしトラフィック切り戻しとシステム状態全体の復旧は同一ではありません。
カナリアデプロイのリスク制御として正しいものを3つ選択してください。
B. 最初からすべてのユーザーを新しいバージョンへ移行する
C. 外部公開割合を小さくすれば観測は不要である
D. メトリクスを観測して次の外部公開を判断する
E. ブルー/グリーン環境とは概念上組み合わせられない
F. ブルー/グリーン構成上のトラフィック切り替えとして利用できる
答えと解説
答え:A / D / F
カナリアは初期外部公開を限定し、観測後に次の外部公開を判断します。環境構成としてブルー/グリーンと組み合わせることもできます。
AWSのデプロイアーキテクチャでローリングデプロイとリニアトラフィック切り替えを比較した場合、違いとして最も適切な説明はどれか。
B. ローリングはリソースを段階更新し、リニアは新旧版のトラフィック比率を段階変更する
C. ローリングは完全な並行環境を作成し、リニアは既存インスタンスだけを更新する
D. 両者は名称が異なるだけで同じデプロイ戦略である
答えと解説
答え:B
ローリングはデプロイ単位の更新方法、リニアは本番トラフィックの段階的切り替えを表します。
インプレースとローリングデプロイについて正しいものを4つ選択してください。
B. インプレースは既存コンピューティングリソース上のアプリケーションを更新する
C. ローリングではフリートを段階的に更新できる
D. インプレースでは更新中の可用性に影響する可能性がある
E. ローリング中は古いバージョンと新しいバージョンが同時に存在する場合がある
F. ローリングで可用性を維持するにはブルー/グリーンと同じ完全な並行環境をデプロイ完了まで保持する
答えと解説
答え:B / C / D / E
インプレースは既存リソースを更新する方式で、フリートをローリングに段階更新する構成も可能です。ローリングでは古い / 新しいバージョンが一時的に混在する場合があります。
ブルー/グリーンデプロイで新バージョンを別環境へ展開し、問題時は旧環境へトラフィックを戻す設計である。ただし新バージョンは共有データベースへ後方互換性のないスキーマ変更を行う。旧環境への切り戻し可能性を維持するため、最も適切な対応はどれか。
B. 旧版と新版の両方が動ける互換スキーマを段階適用し、切替後に整理する
C. ブルー/グリーンならDB状態も自動で戻るため、スキーマ互換性は考慮しない
D. 新環境の検証前に旧環境を削除し、DBの二重対応期間をなくす
答えと解説
答え:B
ブルー/グリーンで戻せるのは主にトラフィック先とアプリケーション環境です。共有データベースの状態が自動的に巻き戻るわけではないため、切り戻し期間は旧版と新版の双方が利用できる後方互換なスキーマ変更を段階適用します。
現在のAWSのデプロイ機能について正しいものを4つ選択してください。
B. CodeDeployではAmazon EC2にインプレースとブルー/グリーンの両方を利用できる
C. CodeDeployのオンプレミスデプロイではインプレースを利用する
D. CodeDeployのAWS Lambda / Amazon ECSではカナリア・リニア・一括によるトラフィック切り替えを利用できる
E. Amazon ECSでカナリアを利用するには必ずCodeDeployが必要である
F. 現在 Amazon ECSのECS デプロイコントローラーはROLLING・BLUE_GREEN・LINEAR・CANARYをサポートする
答えと解説
答え:B / C / D / F
CodeDeployのEC2はインプレース / ブルー/グリーン、オンプレミスはインプレースです。Lambda / ECSではブルー/グリーン型デプロイでカナリア / リニア / 一括を利用できます。現在 ECSネイティブコントローラーも4 戦略をサポートします。
Amazon ECSのECS デプロイコントローラーを使用する。最初に新改訂へ10%の本番トラフィックを送り、一定時間観測した後、問題がなければ残り90%を一度に移行したい。最も適切なデプロイ戦略はどれか。
B. LINEAR
C. ROLLING
D. BLUE_GREEN
答えと解説
答え:A
ECS ネイティブのCANARYは初期割合を新改訂へ送り、観測期間 / 観測後に残りトラフィックを移行します。LINEARは一定割合ずつ段階的にトラフィックを移します。
ブルー/グリーンとカナリアの関係について、現在のAWSの実装レイヤーまで含めた説明として最も適切なのはどれか。
B. CodeDeployのLambda / ECSではブルー/グリーンデプロイのトラフィック切り替えとしてカナリアを利用できるが、Amazon ECS ネイティブではCANARY 戦略は利用できない
C. CodeDeployのLambda / ECSではカナリアをインプレースデプロイのトラフィック切り替えとして利用し、Amazon ECS ネイティブではBLUE_GREENとCANARYを同時に戦略指定する
D. CodeDeployのLambda / ECSではブルー/グリーンのトラフィック切り替えとしてカナリアを利用し、Amazon ECS ネイティブではCANARYを戦略として選びブルー / グリーン 改訂間でトラフィックを移す
答えと解説
答え:D
概念上ブルー/グリーン環境とカナリアトラフィック切り替えは組み合わせられます。CodeDeploy Lambda / ECSではブルー/グリーンのトラフィック切り替えとしてカナリアを利用し、ECS ネイティブではCANARYを戦略として選択します。