無限ノック › DVA 練習問題一覧 › 問題
DVAトラブルシューティングと最適化複数選択

開発者はSQS標準キューをイベントソースとするLambda関数を構築している。処理に失敗したメッセージが再試行後に消失してエラー分析ができない問題と、Lambda関数のタイムアウトが30秒に設定されているにもかかわらず同一メッセージが複数のLambda実行に重複配信される問題が発生している。システムの信頼性を高めるために設定すべき項目を2つ選んでください。

A
SQSキューにデッドレターキュー(DLQ)を設定し、maxReceiveCountを適切な値(例:3〜5)に設定する
✓ 正解
SQSキューにデッドレターキューを設定し、maxReceiveCountを3~5に設定することで、指定回数リトライ後にメッセージをDLQへ移動します。失敗メッセージの保持と分析が実現できます。
B
Lambda関数の非同期呼び出し設定(Asynchronous invocation)にデッドレターキューを設定する
LambdaのDLQ設定は非同期呼び出し専用であり、SQS統合実行では機能しません。失敗メッセージをSQSで保持するにはSQS側のDLQ設定が必須です。
C
SQSキューの可視性タイムアウト(Visibility Timeout)をLambda関数のタイムアウト(30秒)の少なくとも6倍以上(180秒以上)に設定する
✓ 正解
可視性タイムアウトがLambdaタイムアウトより短いと処理中にメッセージが再度Visibleになり重複配信が発生します。AWSの推奨はLambdaタイムアウトの6倍以上です。
D
Lambda関数のReserved Concurrencyを1に設定して同時実行による重複処理を防ぐ
Reserved Concurrency=1に設定すると同時実行が1に制限され、スループットが著しく低下し実用的ではありません。

解説

SQS+Lambdaアーキテクチャで信頼性を高めるには、失敗メッセージの保持と重複配信の防止という2つの問題を個別に解決する必要があります。 選択肢AのSQSキューへのDLQ設定はmaxReceiveCount超過後に失敗メッセージをDLQに移動し、エラー分析を可能にします。SQSトリガー(同期呼び出し)では、Lambda関数のDLQではなくSQSキュー自体にDLQを設定する必要があります。 選択肢BのLambda非同期呼び出しへのDLQ設定はSQSトリガー(同期呼び出し)では機能しません。DLQはSQSキュー自体に設定する必要があります。 選択肢CのSQS可視性タイムアウトの設定はLambdaタイムアウト(30秒)より可視性タイムアウトが短いと、処理中にメッセージが再度Visibleになり重複配信が発生します。AWSの推奨はLambdaタイムアウトの6倍以上(180秒以上)です。 選択肢DのReserved Concurrency=1の設定は同時実行を1に制限することで処理スループットを著しく低下させます。根本原因は可視性タイムアウトの設定不足であり、同時実行制限は解決策として不適切です。

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

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

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