SAA-C03高パフォーマンスなアーキテクチャの設計MEDIUM単一選択

ある企業が、Amazon SQS を使ってメッセージキューイングを実装しており、消費者(Consumer)の EC2 インスタンスがキューのメッセージを定期的にポーリングしている。現在はメッセージが来てから Consumer が取得するまでに数秒〜数十秒の遅延が発生している。この遅延を最小化したい。最も適切な方法はどれか。

  1. A. SQS の可視性タイムアウトを延長してメッセージの重複取得を防ぐ。
  2. B. SQS キューを FIFO キューに変更して順序保証を追加する。
  3. C. Consumer の EC2 インスタンス数を増やして並列処理を強化する。
  4. D. SQS のロングポーリング(Long Polling)を使用する。ReceiveMessage の WaitTimeSeconds を最大 20 秒に設定することで、メッセージが到着したら即座に返却され、空ポーリングを削減できる。
解答と解説を見る

正解: D

SQS のロングポーリング(Long Polling)は WaitTimeSeconds を設定することで、Consumer がメッセージのポーリングリクエストを送信した後、メッセージが来るまで最大 20 秒待機できる機能である。ショートポーリング(WaitTimeSeconds=0)では Consumer が定期的に空のポーリングを繰り返すため遅延と無駄なコストが発生するが、ロングポーリングではメッセージが到着した瞬間に Consumer に返却されるため遅延が大幅に削減される。選択肢CのConsumer インスタンス数増加は処理スループットを向上させるが、メッセージ到達から Consumer への通知遅延(ポーリング遅延)は解消しない。選択肢BのFIFO キューへの変更は順序保証のためであり、ポーリング遅延の改善には関係しない。選択肢Aの可視性タイムアウト延長は処理中のメッセージの再取得防止のためであり、ポーリング遅延とは無関係。

▸ この試験を本気で演習する(全150問・無料)