Amazon SQSとは?
Amazon Simple Queue Service(SQS)は、分散アプリケーション間で非同期にメッセージを送受信できるマネージド型のメッセージキューサービスです。SQSを活用することで、システムの疎結合化、スケーラビリティ向上、耐障害性の強化が可能になります。
Amazon SQSのユースケース
1. 非同期処理の実装
例:ECサイトの注文処理
- ユーザーが注文を確定すると、注文情報をSQSに送信。
- バックエンドで在庫確認や決済処理を非同期で実行。
2. マイクロサービス間の疎結合化
例:異なるマイクロサービス間のデータ連携
- 直接API通信をせず、SQSを経由することで、マイクロサービスの独立性を向上。
3. バッチ処理のトリガー
例:データ処理パイプライン
- SQSに蓄積したデータをLambdaやEC2のバッチジョブで一定間隔ごとに処理。
4. システムの耐障害性向上
例:分散システムのリカバリ
- 一時的な障害が発生しても、SQSがメッセージを保持し、システムが復旧した後に処理を再開可能。
標準キュー(Standard Queue)とFIFOキューの違い
🟢 標準キュー(Standard Queue)
-
特長
- 高スループット(秒間数万メッセージ)
- ベストエフォートの順序保証(順番が変わる可能性あり)
- 少なくとも1回の配信(メッセージが重複する可能性あり)
-
適用例
- スケーラブルな非同期処理(例:ログ処理、行動分析)
- 順序が厳密でなくてもよいシステム
🔵 FIFOキュー(First-In-First-Out Queue)
-
特長
- メッセージの順序保証
- 重複排除(Exactly-Once Processing)
- スループットは標準キューより低め(最大3,000メッセージ/秒)
-
適用例
- 金融取引の処理(決済処理など)
- タスクのワークフロー管理(ジョブキュー)
AWSサービスとの連携例
1. AWS Lambda + SQS(イベント駆動の非同期処理)
📌 例:画像アップロード → SQS → Lambdaでサムネイル生成
2. Amazon EC2 / ECS + SQS(ワーカー処理)
📌 例:動画変換ジョブをキューに送信 → EC2が順次処理
3. Amazon SNS + SQS(ファンアウトパターン)
📌 例:注文通知をSNSで複数のSQS(在庫管理、請求処理、メール通知)に配信
4. Amazon EventBridge + SQS(イベント駆動型アーキテクチャ)
📌 例:S3のオブジェクト削除イベント → SQS経由でログ保存処理を実行
まとめ
✅ 標準キュー:高スループット、順序保証なし、重複あり → 汎用的な非同期処理向け
✅ FIFOキュー:順序保証、重複なし → 厳密な順序管理が必要なケース向け
✅ AWSサービスと組み合わせることで、柔軟でスケーラブルなアーキテクチャを構築可能
Amazon SQSを活用して、より効率的で信頼性の高いシステムを構築しましょう!