SQS - AWS
最終更新日: 2026-07-24
TOP(About this memo)) > 一覧(AWS) > SQS
AWS SQS
Amazon SQS(Simple Queue Service)は、AWSが提供するサーバーレスなキューイングサービス。
「キューイング」は日本語にすると「待ち行列」という意味。人気店で行列ができるのと同様に、システム用語では「処理の順番待ち」という意味で使われる。このキューイングにより、分散アプリケーション上で非同期に処理を進められるようになる。
通常、システム間の処理連携(メッセージング)は同期的に行われる。しかし同期メッセージングでは受信側の状態に問題があった場合、送信側はメッセージを送信できず、送信側のシステムが処理できないままスタック(停止)してしまう。そこでキューイングを使うと、送信側は受信側の状態に左右されずメッセージを投げて自分の仕事に戻ることができ、システムが疎結合になる。
重要な用語
- プロデューサー: キューにメッセージをプロデュース(提供)する側のアプリケーション
- コンシューマー: キューに溜まったメッセージをコンシューム(消費)する側のアプリケーション
Amazon SQSではキューイングされたキューの処理を以下の流れで行う。
- ポーリング
- 取得&処理
- 削除
ポーリングでキューを取得して処理し、処理されたキューは一定時間後に削除される。キューには2つのタイプがある。
- 「スタンダードキュー」: 処理の順番を保証しない
- 「FIFOキュー」: 先入れ先出し方式でキューを処理できる
具体的な用途
- Eコマース: 受注してから行われる各種在庫処理をSQSで分散処理することで、大規模なEコマースアプリケーションの安定した運用を支援できる。
- チャット機能: リアルタイム性が注目されがちだが、チャットで交わされた会話をいつどのように保存するかという課題もある。Amazon SQSを利用して、チャットシステムのバックグラウンドで会話内容をデータベースに保存する、といった用途が考えられる。
他サービスとの連携
- Amazon SQS × Amazon SNS
- 通常、Amazon SQSではプロデューサーとコンシューマーが1対1の関係でつながるが、pub/sub型(送信型と受信側の非同期型)のメッセージングサービスであるAmazon SNS(Simple Notification Service)を組み合わせることで、1対Nの関係でメッセージを一斉に送受信するシステムを構築できる。メッセージングの並列処理を行いたい場合に組み合わせたい方法。
- Amazon SQS × S3 × Lambda
- 重たい処理をいかに高速に処理するかは常に課題になる。画像の加工処理は重たい処理の代表例だが、これをAmazon SQSと他のAWSサービスを連携させることで実現できる。例えば画像データ自体はAWSの「S3」に配置し、「Lambda」で画像処理を行う、といった方法で分散処理を行い、これらをAmazon SQSでつなぐ。
ユースケース