ある企業が AWS 上で稼働するアプリケーションのレイテンシーを改善したいと考えています。アプリケーションは Amazon SQS + Lambda のサーバーレスアーキテクチャで、Lambda が SQS から 10 件ずつメッセージをバッチ取得して処理しています。調査の結果、SQS キューにメッセージが来てから Lambda が処理を開始するまでの遅延(Lag)が平均 10 秒あることが判明しました。Lambda 自体の処理時間は問題ありません。レイテンシーを改善するには、どの設定が最も効果的ですか?
- A. Lambda 関数のメモリを 3,008MB に増加して処理速度を上げる
- B. SQS イベントソースマッピングの MaximumBatchingWindowInSeconds を 0(または最小値)に設定し、メッセージが到着したらできる限り素早く Lambda を起動する。また Lambda の予約済み同時実行数を適切な値に設定してスケールを確保する
- C. SQS の可視性タイムアウトを短くしてメッセージを早く再表示させる
- D. Lambda 関数を EventBridge スケジュール(5 分ごと)でポーリングして SQS から手動でメッセージを取得する
解答と解説を見る
正解: B
SQS イベントソースマッピングの MaximumBatchingWindowInSeconds はメッセージをバッチにまとめるために待機する最大時間です。デフォルトは 0 ですが、設定によっては数秒の待機が発生します。この値を 0 に設定することで、メッセージが到着したらすぐに Lambda 起動が試みられます。また、同時実行数の設定でスケールアウト速度も最適化できます。 A: Lambda のメモリ増加は処理速度の改善には有効ですが、SQS からの取得遅延(Lag)の問題は Lambda の処理速度ではなくポーリングタイミングにあります。 C: 可視性タイムアウトを短くすると、処理中のメッセージが他の Lambda にも表示され、二重処理のリスクが高まります。 D: 手動ポーリングに変更すると、最大 5 分のレイテンシーが発生し、問題を悪化させます。
📚 関連サービスの解説: Amazon SQS ・ AWS Lambda