学習内容の備忘録として、Amazon SQSの概要をまとめる。
Amazon SQSとは
- AWSが提供するメッセージキューシステム。
- メッセージキュー:クラウドアーキテクチャ(サーバーレス、マイクロサービスなど)で使用される非同期アプリ対アプリの通信形態。
Amazon SQS 構成要素
- プロデューサ
- キューにメッセージを送信するアプリケーション。
- コンシューマ
- キューのメッセージを取得するアプリケーション。
- メッセージ
- プロデューサが生成するデータ。
- キュー
Amazon SQS 利点
-
パフォーマンスの向上
- システムのコンポーネントが、別のコンポーネントの待機で処理を停止する必要がない。
- 非同期通信により、プロデューサは、処理を待たずにキューにリクエストを追加できる。
- コンシューマは、使用可能なときにのみメッセージを処理できる。
- システムのコンポーネントが、別のコンポーネントの待機で処理を停止する必要がない。
-
信頼性の向上
- メッセージキューでコンポーネントを切り離し、耐障害性を向上させることができる。
- システムの一部を利用できない場合でも、他システムはキューとのやり取りを継続できる。
-
拡張性
- リクエストに応じたスケーリングができる。
Amazon SQS ユースケース
バッファリング
ワークキュー
リクエストのオフロード
ターゲット ファンアウト
Amazon SQS導入判断基準
条件 | 内容 |
---|---|
アプリケーション間の送信データ形式 | メッセージデータ(連続データではない) |
同期/非同期方式 | 非同期(処理待機不要) |
処理タイミング | Pull方式(コンシューマの任意のタイミング) |
コンシューマ数 | 1 or N(SNSと組み合わせる) |
キューの種類
標準キュー | FIFOキュー | |
---|---|---|
スループット | 〇:ほぼ無制限 | △:最大 300 メッセージ/秒 |
配信方式 | △:最低1回配信(2回以上も有り得る) ※同じメッセージを何度処理しても結果が変化しない設計とする or 重複実行しない仕組みが必要 |
〇:1回のみ配信 |
配信順序 | △:順序が変わる可能性あり | 〇:順序性保持 |
※料金はややFIFOが高い。
メッセージ取得方法
ショートポーリング
- 即時応答方式。
- キューにメッセージが存在しない場合に、キューが「空」であることを応答する。
- 処理
- 複数キューから特定のキューをランダムに選択。
- そのキューのメッセージを取得。
- 空のキューを選択した場合、そのキューからのメッセージ取得数は0。
ロングポーリング
- 最大20秒取得待機し、応答する方式。
- キューにメッセージが存在しない場合に、タイムアウトとしてキューが「空」であることを応答する。
- 通常はロングポーリングを推奨。
その他の機能
Dead Letter Queue
- 正常に処理できないメッセージがキュー内に滞留しないように分離先として利用するキュー。
- 不具合の原因分析やアラーム設定による不具合検知に利用できる。
メッセージ暗号化
- AWS Key Management Service(KMS)で管理する鍵を使用して、キュー内のメッセージを暗号化保護できる。
- キューへのアクセス権+KMSへのアクセス権を持つユーザーがメッセージの送受信できる。