Q35 — AWS SAA-C03 第5章
第 35/65 問 | ← 第5章
Q335. ある企業がアプリケーションをAWSクラウド上にホストしています。このアプリケーションは、Auto Scalingグループ内のAmazon EC2インスタンス上で実行され、Elastic Load Balancerの後ろで動作し、Amazon DynamoDBテーブルを使用しています。企業は、最小限のダウンタイムで、このアプリケーションを別のAWSリージョンでも利用可能にしたいと考えています。ソリューションアーキテクトは、これらの要件を満たすために、ダウンタイムを最も小さく抑えるにはどうすればよいでしょうか?
- A. 障害復旧用リージョンにAuto Scalingグループおよびロードバランサを作成します。DynamoDBテーブルをグローバルテーブルとして設定します。DNSフェイルオーバーを構成し、障害復旧用リージョンのロードバランサを指すようにします。 ✓
- B. 必要に応じてEC2インスタンス、ロードバランサ、DynamoDBテーブルを作成するためのAWS CloudFormationテンプレートを作成します。DNSフェイルオーバーを構成し、障害復旧用リージョンのロードバランサを指すようにします。
- C. 必要に応じてEC2インスタンスおよびロードバランサを作成するためのAWS CloudFormationテンプレートを作成します。DynamoDBテーブルをグローバルテーブルとして設定します。DNSフェイルオーバーを構成し、障害復旧用リージョンのロードバランサを指すようにします。
- D. 障害復旧用リージョンにAuto Scalingグループおよびロードバランサを作成します。DynamoDBテーブルをグローバルテーブルとして設定します。Amazon CloudWatchアラームを作成し、そのアラームがトリガーされた際にAmazon Route 53のエンドポイントを障害復旧用ロードバランサに更新するAWS Lambda関数を起動するように設定します。
正解: A. 障害復旧用リージョンにAuto Scalingグループおよびロードバランサを作成します。DynamoDBテーブルをグローバルテーブルとして設定します。DNSフェイルオーバーを構成し、障害復旧用リージョンのロードバランサを指すようにします。
解説
最小限のダウンタイムでアプリケーションを別のAWSリージョンで利用可能にするには、事前に障害復旧環境(DR環境)を対象リージョンに構築しておき、DNSフェイルオーバーによりトラフィックを即座に切り替える必要があります。選択肢Aは、障害復旧用リージョンにAuto Scalingグループとロードバランサを事前に作成し、DynamoDBテーブルをグローバルテーブルとして設定することを提案しており、正解です。グローバルテーブルは自動的なマルチリージョンレプリケーションを提供し、世界中のユーザーに対して低遅延なデータアクセスを実現します。さらにDNSフェイルオーバーを設定することで、ヘルスチェックの失敗などを検知した時点で即座にトラフィックを障害復旧環境へ切り替えられるため、ダウンタイムを最小限に抑えられます。一方、選択肢BおよびCは、障害発生時にCloudFormationテンプレートを実行してインフラを展開する方式であり、展開時間(特に大規模なDynamoDBテーブルの初期化や同期)が発生するため、ダウンタイムが避けられません。また、DNSレコードの更新先がまだ存在しない状態でRoute 53を設定することは現実的ではありません。選択肢Dは、CloudWatchアラーム→Lambda→Route 53更新というフローですが、DNSのTTLや伝搬遅延により即時切り替えは不可能であり、ダウンタイムが発生します。したがって、事前構築+DNSフェイルオーバーというシンプルかつ確実な選択肢Aが、最小ダウンタイムを達成する最も適切な設計です。