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

EC サイトで顧客からの注文を処理するシステムを Amazon SQS FIFO キューで実装しています。同じ顧客の注文は必ず送信した順序で処理される必要がありますが、異なる顧客の注文は並行して処理してスループットを向上させたいと考えています。この要件を満たすための正しいアプローチはどれですか?

A
各メッセージに一意の MessageDeduplicationId を設定し、重複排除によって順序を保証する
MessageDeduplicationId は重複排除のためのものであり順序保証には使いません。
B
顧客 ID を MessageGroupId として設定し、同一 MessageGroupId のメッセージを順序通りに処理しつつ、異なる MessageGroupId のメッセージを並行処理する
✓ 正解
SQS FIFO キューの MessageGroupId は、同じグループ内のメッセージが送信順に処理されることを保証します。顧客 ID を MessageGroupId に設定することで、同一顧客の注文は順序が保たれ、異なる MessageGroupId を持つメッセージは並行処理されます。
C
VisibilityTimeout を十分長く設定し、コンシューマーが同一顧客のメッセージを順番に処理できるようにする
VisibilityTimeout はメッセージ処理中に他のコンシューマーが同じメッセージを取得できないようにする設定であり、順序を保証するメカニズムではありません。
D
顧客ごとに個別の SQS FIFO キューを作成し、それぞれのキューで順序を保証する
顧客ごとにキューを作成すると、顧客数の増加に伴いキュー管理コストが大幅に増加し現実的ではありません。

解説

SQS FIFO キューの MessageGroupId は、同じグループ内のメッセージが送信順に処理されることを保証します。顧客 ID を MessageGroupId に設定することで、同一顧客の注文は順序が保たれ、異なる MessageGroupId を持つメッセージは並行処理されます。 選択肢Aの MessageDeduplicationId は重複排除のためのものであり順序保証には使いません。 選択肢Cの VisibilityTimeout はメッセージ処理中に他のコンシューマーが同じメッセージを取得できないようにする設定であり、順序を保証するメカニズムではありません。 選択肢Dは、顧客ごとにキューを作成すると、顧客数の増加に伴いキュー管理コストが大幅に増加し現実的ではありません。

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

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

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