無限ノック › SAA 練習問題一覧 › 問題
SAA弾力性に優れたアーキテクチャの設計

あるEコマース企業は、注文処理システムをAmazon SQSとAWS Lambdaを使用して構築しています。注文メッセージはSQSキューに配置され、Lambda関数が外部決済APIを呼び出して処理します。外部APIへの一時的な障害により処理が失敗するケースがあります。失敗したメッセージを失わず、一時的なエラーはリトライし、永続的な失敗メッセージは隔離して、正常なメッセージの処理をブロックしないようにするための最適な設計はどれですか?

A
SQS FIFOキューを使用し、Lambda関数の予約済み同時実行数を1に設定する。処理失敗時はLambdaの宛先設定(OnFailure)でSNSに通知する
SQS FIFO キューと同時実行数1は、スループットを著しく低下させ要件に反します。
B
SQS標準キューにデッドレターキュー(DLQ: Dead Letter Queue、処理失敗メッセージの隔離先キュー)を設定し、maxReceiveCountを3に設定する。SQSの可視性タイムアウトをLambda関数のタイムアウトの6倍以上に設定する
✓ 正解
AWS は SQS の可視性タイムアウトを Lambda 関数のタイムアウトの6倍以上に設定することを推奨しています。タイムアウトが短すぎると処理中のメッセージがキューに戻り重複処理が発生します。DLQ と maxReceiveCount により規定回数を超えたメッセージは隔離されます。SQS 標準キューは FIFO と異なり並列処理が可能で他のメッセージの処理をブロックしません。
C
SQS標準キューにデッドレターキュー(DLQ: Dead Letter Queue、処理失敗メッセージの隔離先キュー)を設定し、maxReceiveCountを3に設定する。SQSの可視性タイムアウトをLambda関数のタイムアウトと同じ値に設定する
SQS の可視性タイムアウトを Lambda 関数のタイムアウトと同じ値に設定することは、タイムアウトが短すぎるため重複処理が発生します。
D
SQS標準キューを使用し、Lambda関数のタイムアウトを最大15分に延長する。失敗したメッセージはEventBridgeを経由して別のLambda関数で再処理する
DLQ を設定しないため永続的な失敗メッセージの隔離ができず、EventBridge を介した再処理は構成が複雑で SQS 組み込みのリトライ・隔離機能を活用できていません。

解説

AWS は SQS の可視性タイムアウトを Lambda 関数のタイムアウトの6倍以上に設定することを推奨しています。タイムアウトが短すぎると処理中のメッセージがキューに戻り重複処理が発生します。DLQ と maxReceiveCount により規定回数を超えたメッセージは隔離されます。SQS 標準キューは FIFO と異なり並列処理が可能で他のメッセージの処理をブロックしません。 選択肢A の SQS FIFO キューと同時実行数1は、スループットを著しく低下させ要件に反します。 選択肢C の SQS の可視性タイムアウトを Lambda 関数のタイムアウトと同じ値に設定することは、タイムアウトが短すぎるため重複処理が発生します。 選択肢D の DLQ を設定しないため永続的な失敗メッセージの隔離ができず、EventBridge を介した再処理は構成が複雑で SQS 組み込みのリトライ・隔離機能を活用できていません。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでSAAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← SAA の問題一覧に戻る