Q81 — AWS SAA-C03 第16章

第 81/100 問 | ← 第16章

Q1281. ある企業は、イベントデータを生成するサービスを保有しています。同社は、受信したイベントデータをAWS上でリアルタイムで処理したいと考えています。このデータは特定の順序で書き込まれており、処理全体を通してその順序を厳密に維持する必要があります。また、運用オーバーヘッドを最小限に抑えるソリューションを実装したいとしています。ソリューションアーキテクトは、この要件をどのように満たすべきでしょうか?

正解: A. メッセージを保持するためのAmazon Simple Queue Service (Amazon SQS) FIFOキューを作成し、そのキューからメッセージを処理するAWS Lambda関数を設定します。

解説

正しいソリューションは、イベントデータが受信された順序のまま正確に処理されることを保証しつつ、運用オーバーヘッドを最小限に抑える必要があります。各選択肢を検討します。 正解:A.Amazon Simple Queue Service (Amazon SQS) FIFOキューを作成し、そのキューからメッセージを処理するAWS Lambda関数を設定します。 選択肢Aが最適な理由: ・厳密なメッセージ順序保証:SQS FIFOキューは先入れ先出し(FIFO)配信を保証し、メッセージが送信された順序通りに処理されることを確実にします。 ・サーバーレスで運用オーバーヘッドが極小:AWS Lambdaはキューの負荷に応じて自動的にスケールし、EC2やECSと異なりインフラストラクチャ管理が不要です。 ・組み込みの再試行機能およびデッドレターキュー(DLQ)対応:処理に失敗した場合、Lambdaはデフォルトで最大2回までメッセージを再試行でき、さらに失敗したメッセージは分析用にDLQへ移送できます。 ・追加コンポーネント不要:SNSベースのソリューション(B、D)と異なり、トピックやサブスクリプションなどの追加構成が不要です。 他の選択肢が不適切な理由: B.Amazon SNSトピックを作成し、AWS Lambda関数をサブスクライバーとして設定する。 → 順序保証なし:SNSは複数のサブスクライバーに対して並列でメッセージを配信可能であり、Lambdaも複数の同時実行によりメッセージを受信順とは異なる順序で処理する可能性があります。 C.Amazon SQS標準キューを作成し、そのキューからメッセージを独立して処理するAWS Lambda関数を設定する。 → 標準キューでは順序保証なし:SQS標準キューは「最低1回」配信を提供しますが、メッセージの順序は保証されないため、逐次処理には不向きです。 D.Amazon SNSトピックを作成し、Amazon SQSキューをサブスクライバーとして設定する。 → SNS+SQSではデフォルトで順序が保証されません:SNSがSQSキューへ配信しても、複数のコンシューマー(例:LambdaやEC2)が同時にメッセージを取得・処理すると順序が乱れます。順序を保つにはFIFOキューが必要ですが、SNS標準トピックではFIFOキューへの配信はサポートされておらず、FIFOトピック(SNS FIFO)が必要です。 主要要件の比較: 要件|SQS FIFO + Lambda(A)|その他の選択肢 メッセージ順序の維持|○(FIFO保証)|×(B:SNSの並列配信、C:標準SQS、D:SNS+SQSでは順序保証なし) 運用オーバーヘッドの低減|○(サーバーレス、自動スケーリング)|×(B/D:SNSによる追加構成の複雑さ、C:順序保証なし) 失敗時の再試行ロジック|○(Lambdaによる組み込み再試行)|×(B/D:手動での再試行処理が必要、C:順序を保った再試行ができない) 結論:選択肢Aのみが以下のすべてを満たします。 ・メッセージ順序の保証(FIFOキュー) ・運用オーバーヘッドの最小化(サーバーレスLambdaによる処理) ・障害に対する堅牢な対応(再試行およびDLQ対応) 最終的な正解:A