Q72 — AWS SAA-C03 第13章
第 72/100 問 | ← 第13章
Q972. ある企業が、AWS上で注文処理システムをホストしています。このアーキテクチャはフロントエンドとバックエンドで構成されています。フロントエンドにはApplication Load Balancer(ALB)およびAuto Scalingグループ内のAmazon EC2インスタンスが含まれます。バックエンドにはEC2インスタンスとAmazon RDS MySQLデータベースが含まれます。不完全または失われた注文を防ぐため、企業は注文の状態が常に保持されることを保証したいと考えています。また、障害や一時停止後であっても、すべての注文が最終的に処理されることを保証したいと考えています。さらに、すべての注文は「正確に1回だけ」処理される必要があります。これらの要件を満たすソリューションはどれですか?
- A. バックエンド用にAuto ScalingグループおよびALBを作成します。RDSデータベースの読み取り専用レプリカを第2の可用性ゾーンに作成し、バックエンドのRDSエンドポイントを更新します。
- B. バックエンド用にAuto ScalingグループおよびALBを作成します。RDSデータベースの前にAmazon RDS Proxyを作成し、バックエンドのEC2インスタンスがAmazon RDS Proxyのエンドポイントを使用するように更新します。
- C. バックエンド用にAuto Scalingグループを作成します。バックエンドのEC2インスタンスがAmazon Simple Queue Service(Amazon SQS)FIFOキューからメッセージを受信するよう設定します。SQSキューに対してデッドレターキュー(DLQ)を設定します。 ✓
- D. バックエンドのEC2インスタンスを置き換えるためにAWS Lambda関数を作成します。この関数をAmazon Simple Notification Service(Amazon SNS)トピックにサブスクライブします。フロントエンドが注文をSNSトピックに送信するよう設定します。
正解: C. バックエンド用にAuto Scalingグループを作成します。バックエンドのEC2インスタンスがAmazon Simple Queue Service(Amazon SQS)FIFOキューからメッセージを受信するよう設定します。SQSキューに対してデッドレターキュー(DLQ)を設定します。
解説
正解はCです。バックエンド用にAuto Scalingグループを作成し、バックエンドのEC2インスタンスがAmazon SQS FIFOキューからメッセージを受信するよう設定します。SQSキューに対してデッドレターキュー(DLQ)を設定します。 解説: A. バックエンド用にAuto ScalingグループおよびALBを作成し、RDSデータベースの読み取り専用レプリカを第2の可用性ゾーンに作成してバックエンドのRDSエンドポイントを更新する。 ― このソリューションでは、「すべての注文が正確に1回だけ処理される」という要件を満たしません。読み取り専用レプリカは即時に更新されない可能性があり、同一注文が複数回処理されるリスクがあります。 B. バックエンド用にAuto ScalingグループおよびALBを作成し、RDSデータベースの前にAmazon RDS Proxyを作成してバックエンドのEC2インスタンスがRDS Proxyのエンドポイントを使用するよう更新する。 ― このソリューションも、「正確に1回だけ処理される」という要件を満たしません。RDS ProxyはExactly-once処理を保証しません。 C. バックエンド用にAuto Scalingグループを作成し、バックエンドのEC2インスタンスがAmazon SQS FIFOキューからメッセージを受信するよう設定し、SQSキューに対してデッドレターキュー(DLQ)を設定する。 ― これは正しいソリューションです。SQS FIFOキューを活用することで、各注文が正確に1回だけ処理されることを保証できます。また、処理に失敗した注文はデッドレターキューに移動されるため、調査・再処理が可能です。 D. バックエンドのEC2インスタンスを置き換えるためにAWS Lambda関数を作成し、これをAmazon SNSトピックにサブスクライブさせ、フロントエンドが注文をSNSトピックに送信するよう設定する。 ― このソリューションは、「正確に1回だけ処理される」という要件を満たしません。SNSトピックはExactly-once配信を保証せず、同一注文に対してLambda関数が複数回呼び出される可能性があります。 まとめると、正解はオプションCであり、SQS FIFOキューとデッドレターキューを組み合わせることで、すべての注文が正確に1回だけ処理され、かつ注文が失われないことを保証します。