📝
Amazon Simple Queue Serviceってなんだろ?
Amazon Simple Queue Service (SQS)について調べてみました。
Amazon SQS(サーバーレスアプリのためのメッセージキューサービス)| AWS
概要
- 完全マネージド型のメッセージキューイングサービス
- マイクロサービス、分散システム、およびサーバーレスアプリケーションの切り離しとスケーリングが可能
- メッセージ指向ミドルウェアの管理や運用に関連する複雑さやオーバーヘッドを排除できるため、開発者が差別化作業に集中することができる
- あらゆる量のソフトウェアコンポーネント間でメッセージを送信、保存、受信
- メッセージが失われることはなく、他のサービスを利用可能にしておく必要もない
- 標準キューとFIFO キューがある
メリット
- 管理オーバーヘッドの排除
- 前払い料金、メッセージングソフトウェアの取得、インストール、設定が不要
- キューが動的に作成され自動的にスケール
- 機密データを安全に保つ
- サーバー側の暗号化 (SSE) によって各メッセージの本文を暗号化
- AWS Key Management Service (KMS) の統合
- 暗号化キーが使用されるたびに AWS KMS によって AWS CloudTrail に記録
- 確実にメッセージを配信
- メッセージすべての複数のコピーが複数のアベイラビリティーゾーンで冗長的に保存
- 伸縮自在に、コスト効率良くスケールする
- アプリケーションで伸縮自在にスケールされるため、容量計画や事前プロビジョニングについて心配する必要がない
- キューあたりのメッセージ数に制限はなく、標準キューではほぼ無制限のスループットが提供
よくある質問 - Amazon SQS | AWS
Q: 自社製や市販パッケージのメッセージキューイングシステムと比較して、Amazon SQS にはどのようなメリットがありますか?
- ハードやソフトの管理が不要
Q: Amazon SQS と Amazon SNS の違いは何ですか?
- SNSはプッシュ型
- サブスクライバー(通知を受け取る側)に任意のタイミングでメッセージを送信できる
- ポーリング不要
- SQSはポーリングでメッセージをやり取りする
- 分散型アプリで使用
- コンポーネントの送受信を切り離す
Amazon SQS と Amazon MQ の違いは何ですか?
- 既存アプリのメッセージング機能をクラウドに移行する場合はMQ
- 新しいアプリでメッセージング機能を構築する場合はSQS、SNS
Amazon SQS にはメッセージの順序付け機能がありますか?
- FIFOキューでは順序保証
- 標準キューでは順序保証されない(ベストエフォート)
Q: Amazon SQS では、メッセージの配信は保証されていますか?
- 標準キューでは1回以上(複数回配信の可能性もある)
- FIFOキューでは1回だけ
Q: Amazon SQS と Amazon Kinesis Streams の違いは何ですか?
- SQS は、分散アプリケーションのコンポーネント間でデータを移動し、これらのコンポーネントを分離する場合に役立つ
- Amazon Kinesis クライアントライブラリ (KCL) では、特定のパーティションキーのすべてのレコードが同じレコードプロセッサに提供されるため、同じ Amazon Kinesis ストリームから読み取りを行う複数のアプリケーションを構築することが容易
- カウント、集計、フィルタリングの実行など
Q: Amazon SQS の無料利用枠で何ができますか?
- 毎月 100 万件のリクエストまで無料
特徴 - Amazon SQS | AWS
標準キュー
- 無制限のスループット
- API アクションあたり、ほぼ無制限の数の 1 秒あたりのトランザクション (TPS) をサポート
- 少なくとも 1 回の配信
- メッセージは少なくとも 1 回は確実に配信されますが、複数のメッセージのコピーが配信されることもあります
- ベストエフォート型の順序付け
- メッセージが送信されたときと異なる順序で配信されることがあります。
FIFO キュー
- 高スループット
- デフォルトでは、FIFO キューは毎秒最大 300 件のメッセージをサポート (毎秒送信、受信、または削除オペレーション 300 件)
- オペレーションあたり 10 件のメッセージ (最大) というバッチ処理を実行する場合、FIFO キューは 1 秒あたり最大 3,000 件のメッセージをサポート可能
- FIFO の高スループットモードを有効にすると、バッチ処理ありで 1 秒あたり最大 30,000 件のメッセージ、バッチ処理なしで 1 秒あたり最大 3,000 件のメッセージをサポート
- 1 回だけの処理
- メッセージは 1 度配信されると、ユーザーがそれを処理して削除するまでは使用可能な状態に保たれます。キューでメッセージの重複が起きることはありません。
- 先入れ先出し配信
- メッセージが送信または受信された順序が厳密に保持されます (先入れ先出し)。
動画
AWS再入門ブログリレー SQS編 | Developers.IO
Amazon Simple Queue Service(SQS)とは?
- フルマネージド型のメッセージキューサービス
- 「メッセージをSQSの送信」、「SQSからメッセージをポーリング」
- 軽い受付処理をした結果をSQSに登録し、別のサーバーからメッセージをポーリングし、重い処理を済ませる
- SQS側で処理予定のタスクをバッファーでき、スパイク的なアクセスに耐えれる構成を作成できる
- SQSに登録されているキューに基づいてSQSをポーリングし、処理を行うサーバーをスケールする事ができる
- SQSをトリガーにLambdaをキックし、サーバーレスが捗る
「注文はチーズバーガー→お会計130円です→チーズバーガーを作成→チーズバーガーを返す」
ような同期的なアプリケーションを
「レジ側: 注文はチーズバーガー→お会計130円です(SQSにキューを登録)」
「厨房側: SQSをポーリング、チーズバーガーを作成、チーズバーガーを返す」
のように、レジと厨房を非同期で処理できるため、レジでは注文と会計のみの仕事に集中もできますし、何よりチーズバーガーを作る作業は厨房に丸投げするため、お客様にも待たさずに次々と注文を受け付けられます。
前提知識
- メッセージをSQSに送信するアプリケーションのことを「プロデューサー」と呼ぶ
- SQSからメッセージをポーリングするアプリケーションのことを「コンシューマー」と呼ぶ
- SQSに送信できる最大サイズは256KB
- SQS側での最長保持期間は14日
SQSのタイプ
- 標準キュー
- 順不同な可能性がある
- 複数回配信される可能性がある
- ほぼ無制限に送信ができる
- FIFOキュー
- 順番配信
- 重複キューの削除
- 一回だけの配信
- 1秒に送信できるキューに制限がある
SQSのライフサイクル
- 可視性タイムアウト
- コンシューマーがメッセージを受信してから可視性タイムアウトの間、他のコンシューマーなどにキューを配信しない
- メッセージ保持期間
- SQSにメッセージ保持する期間
- SQSに登録されてから処理されずにSQSに溜まったメッセージが削除されるまでの期間
コンソール
まとめ
今回はAmazon Simple Queue Service (SQS)について調べてみました。
以下がポイントでした。
- 完全マネージド型のメッセージキューイングサービス
- 分散型アプリで使用
- 標準キューとFIFO キューがある
- 標準キューは順不同、複数回配信、無制限に送信
- FIFOキューは順番配信、重複キューの削除、一回だけの配信、1秒に送信できるキューに制限がある
- 可視性タイムアウトの間、他のコンシューマーなどにキューを配信しない
- SQSに送信できる最大サイズは256KB
- SQS側での最長保持期間は14日
参考になれば幸いです。
Discussion