メッセージキュー
プロデューサーとコンシューマーを非同期に接続し、メッセージを一時的に保持する通信基盤
非同期アーキテクチャ
メッセージキューとは
メッセージキュー (Message Queue) は、プロデューサー (送信者) とコンシューマー (受信者) を非同期に接続し、メッセージを一時的に保持する通信基盤である。SQS が AWS の代表的なメッセージキュー。
同期 vs 非同期 (キュー)
同期:
API → 処理 (5秒) → レスポンス
→ ユーザーが 5 秒待つ
非同期 (キュー):
API → SQS にメッセージ送信 → レスポンス (即座)
SQS → Lambda (バックグラウンドで処理)
→ ユーザーは待たない
メッセージキューのメリット
重い処理をバックグラウンドに回す非同期処理が可能になり、トラフィックの急増をバッファリングで吸収できる。プロデューサーとコンシューマーが独立するため疎結合になり、失敗したメッセージの自動リトライも実現できる。コンシューマーを増やすだけで並列処理をスケールできる。
SQS vs SNS vs EventBridge
| サービス | パターン | 用途 |
|---|---|---|
| SQS | キュー (1 対 1) | バックグラウンド処理 |
| SNS | Pub/Sub (1 対多) | ファンアウト通知 |
| EventBridge | イベントバス (1 対多) | イベント駆動、フィルタリング |
SQS Standard vs FIFO
| 観点 | Standard | FIFO |
|---|---|---|
| 順序 | ベストエフォート | 厳密な順序保証 |
| 重複 | At-least-once | Exactly-once |
| スループット | ほぼ無制限 | 300 msg/秒 (バッチで 3,000) |
| 用途 | 一般的な非同期処理 | 順序が重要な処理 |
デッドレターキュー (DLQ)
メッセージ処理失敗 (1 回目) → リトライ
メッセージ処理失敗 (2 回目) → リトライ
メッセージ処理失敗 (3 回目) → DLQ に移動
→ DLQ のメッセージを調査・再処理
詳しくは関連書籍を参照。