【あまぞんえすきゅーえす】

Amazon SQS とは?

最終更新:
💡 システム間の伝言を預かる「クラウドの伝言板」

AWSが提供するフルマネージドなメッセージキューサービス。システム間のメッセージを一時的に保管し、処理の非同期化と疎結合を実現する。

📌 このページのポイント
SQS(Simple Queue Service)の仕組み プロデューサー メッセージを 送信する側 SQS キュー msg1 msg2 msg3 受信側が処理して削除するまで保持(期限あり) コンシューマー メッセージを 受信・処理 送信側と受信側を分離し、非同期で安全にメッセージを受け渡す
SQSのイメージ
ひよこ ひよこ
SQSって何のために使うの?直接通信すればよくない?
ペンギン先生 ペンギン先生
例えばECサイトで注文が入ったとき、在庫更新・メール送信・ポイント付与を全部その場でやると、どれか1つが遅いだけで注文画面が待たされるよね。SQSにメッセージを入れておけば、各処理は自分のペースで取り出して処理できるから、注文画面は先に「受け付けました」を返せるんだ
ひよこ ひよこ
StandardキューとFIFOキューってどう選べばいいの?
ペンギン先生 ペンギン先生
Standardはほぼ無制限のスループットが出るけど、順序は崩れることがあるし、同じメッセージが2回届くこともあるよ。FIFOは送った順番を厳密に保って重複も排除するけど、高スループットモードを使わない場合はAPIごとに秒間300回(10件ずつのバッチなら秒間3,000件)が上限なんだ。順番が大事ならFIFO、順番を気にしない大量処理ならStandardが目安だね
ひよこ ひよこ
メッセージを受け取ったのに処理に失敗したらどうなるの?
ペンギン先生 ペンギン先生
SQSは受信側が「処理できたから削除して」と明示するまでメッセージを消さないんだ。取り出したメッセージは可視性タイムアウト(既定30秒)の間だけ他から見えなくなって、その間に削除されなければまた取り出せるようになる。何度も失敗するメッセージはデッドレターキューに移して、後で原因を調べるのが定番だよ
ひよこ ひよこ
同じメッセージが2回届いたら困らない?
ペンギン先生 ペンギン先生
困るから、受信側を「冪等」に作るんだ。冪等というのは、同じメッセージを2回処理しても結果が変わらないこと。例えば「ポイントを100加算」ではなく「注文ID XYZのポイント付与を済みにする」と記録すれば、2回目は何もしないで済むよ。FIFOでも処理の失敗や可視性タイムアウトの設定次第で再処理は起こり得るから、冪等にしておくと安心だね
ひよこ ひよこ
キューに入れておけば、ずっと残しておけるの?
ペンギン先生 ペンギン先生
ずっとではないよ。メッセージの保持期間は既定で4日、設定で最大14日までで、過ぎたメッセージは削除されるんだ。受信側が長く止まる可能性があるなら、保持期間や監視のアラームも合わせて設計しておこうね
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「SQS」って出てきたら「AWSのメッセージキューで、システム間の非同期通信に使うもの」と思えればだいたいOK!
📖 おまけ:英語の意味
「Simple Queue Service」 = シンプルなキューサービス
💬 Queue(キュー=待ち行列)にメッセージを預けておくサービスだよ。2004年にベータ版が公開され、2006年に正式提供された、AWSの中でも初期からあるサービスなんだ

参考資料

← 用語集にもどる