DVAAWSのサービスを使用した開発

SQS(Simple Queue Service)キューからメッセージを取得して処理するEC2上のワーカーアプリケーションがあります。現在はショートポーリング(WaitTimeSeconds=0)を使用しており、CloudWatchのメトリクスを確認すると空レスポンス(メッセージなし)が全体の約80%を占め、ReceiveMessageのAPIコスト増大と不要な処理負荷が問題になっています。最小限のコード変更でコストを削減する方法はどれですか?

A
SQSキューを標準キュー(Standard Queue)からFIFOキュー(FIFO Queue)に変更して順序保証を有効にする
FIFOキューは順序保証・重複排除のための変更であり、ポーリングコストとは無関係です。
B
ReceiveMessage APIのWaitTimeSecondsパラメータを最大20秒に設定してロングポーリングを有効にする
✓ 正解
SQSのロングポーリングはReceiveMessageのWaitTimeSecondsを1〜20秒に設定することで有効化されます。キューが空の場合でも設定時間まで待機してからレスポンスを返すため、空レスポンス数とAPIコール数が大幅に減少しコスト削減につながります。
C
メッセージの可視性タイムアウト(VisibilityTimeout)を延長して処理中の重複受信を防ぐ
可視性タイムアウトは同一メッセージの重複処理を防ぐためのパラメータです。
D
キューにデッドレターキュー(DLQ:Dead Letter Queue)を設定して処理失敗メッセージを自動退避する
DLQは処理失敗メッセージの退避先です。

解説

SQSのロングポーリングはReceiveMessageのWaitTimeSecondsを1〜20秒に設定することで有効化されます。キューが空の場合でも設定時間まで待機してからレスポンスを返すため、空レスポンス数とAPIコール数が大幅に減少しコスト削減につながります。 選択肢AのFIFOキューは順序保証・重複排除のための変更であり、ポーリングコストとは無関係です。 選択肢Cの可視性タイムアウトは同一メッセージの重複処理を防ぐためのパラメータです。 選択肢DのDLQは処理失敗メッセージの退避先です。

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

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

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