Q62 — AWS DVA-C02 第2章
第 62/100 問 | ← 第2章
ある開発者が、顧客が音楽コンサートの座席を選択できるサーバーレスアプリケーションを設計しています。顧客は、AWS Lambda関数をバックエンドとするAmazon API Gateway APIを通じて予約リクエストを送信し、この関数が注文を処理して注文IDを生成します。このアプリケーションには、在庫管理および支払い処理のための2つの追加Lambda関数が含まれており、これらは注文をAmazon DynamoDBテーブルに保存します。このアプリケーションは、以下の要件を満たす必要があります:座席を正しく割り当てるために、最初に受信された注文にのみ座席を割り当て、その注文の支払いのみを処理する。ただし、最初の注文の支払い処理中に拒否された場合、2番目に受信された注文に座席を割り当て、その注文の支払いを処理する必要があります。この要件を満たす解決策はどれですか?
- A. 注文IDをAmazon Simple Notification Service (Amazon SNS) FIFOトピックに送信し、このトピックを2つのAmazon Simple Queue Service (Amazon SQS) FIFOキュー(1つは在庫管理用、もう1つは支払い処理用)にファンアウトする。 ✓
- B. 注文IDを生成するLambda関数を変更し、在庫管理のLambda関数を起動した後、支払い処理のLambda関数を起動する。
- C. 注文IDをAmazon Simple Notification Service (Amazon SNS) トピックに送信し、在庫管理および支払い処理のLambda関数をこのトピックにサブスクライブする。
- D. 注文IDをAmazon Simple Queue Service (Amazon SQS) キューに送信し、在庫管理および支払い処理のLambda関数をこのキューをポーリングするよう設定する。
正解: A. 注文IDをAmazon Simple Notification Service (Amazon SNS) FIFOトピックに送信し、このトピックを2つのAmazon Simple Queue Service (Amazon SQS) FIFOキュー(1つは在庫管理用、もう1つは支払い処理用)にファンアウトする。
解説
選択肢Aは、注文IDをAmazon SNS FIFOトピックに送信し、このトピックを在庫管理および支払い処理のそれぞれに専用のAmazon SQS FIFOキューに配信することで、各注文を独立して処理できるようにします。これにより、座席が誤って重複販売された場合でも、最初の注文が対応するキューに先に到着し、座席の割り当てが正しく行われ、最初の注文の支払いのみが処理されます。もし最初の注文の支払い処理中に拒否された場合、2番目の注文は別のキューで待機し、その注文の支払いが処理されます。