はじめに
Amazon SQS、Amazon SNS、Amazon MQ は、いずれも「メッセージ連携」に関係するAWSサービスですが、試験では役割の違いを正確に見分けることが重要です。特に AWS Certified Cloud Practitioner では、「どのサービスがどの用途に向くか」を問う問題が出やすいため、名称を覚えるだけでは不十分です。
まず結論を先に整理すると、次のように覚えると区別しやすくなります。
- Amazon SQS:メッセージをためるキューサービス
- Amazon SNS:メッセージを複数先へ配る通知サービス
- Amazon MQ:既存のメッセージブローカー資産を活かして移行しやすいマネージドブローカーサービス
まず押さえたい全体像
| サービス | 基本的な役割 | 試験での見分け方 |
|---|---|---|
| Amazon SQS | メッセージキュー | 非同期処理、疎結合化、後で順番に処理したい |
| Amazon SNS | Pub/Sub による通知配信 | 1つのイベントを複数の購読先へ配信したい |
| Amazon MQ | ActiveMQ / RabbitMQ 互換のマネージドブローカー | 既存アプリを大きく書き換えず移行したい |
Amazon SQS とは
Amazon SQS(Simple Queue Service)は、アプリケーション間でやり取りするメッセージをキューに格納し、受信側が都合のよいタイミングで取り出して処理するためのサービスです。送信側と受信側を直接つなげずに済むため、疎結合な構成を作りやすくなります。
ここでいう疎結合とは、一方のシステムに障害や遅延があっても、もう一方への影響を小さくしやすい設計のことです。たとえば、ECサイトで注文情報を受け取った直後に、在庫更新や請求処理を全部同時に終えなくても、いったん SQS に入れて後続システムが順に処理できます。
SQSの試験ポイント
- キューにためるサービスである
- 受信側はメッセージをポーリングして取得する
- システム間の非同期処理に向いている
- 負荷の急増を吸収するバッファとして使いやすい
Standard キューと FIFO キュー
SQS では、主に Standard キュー と FIFO キュー の違いを理解することが重要です。
- Standard キュー:高スループット。at-least-once delivery で、同一メッセージが重複して届く可能性がある
- FIFO キュー:順序保証が必要なときに使う。AWS公式では exactly-once processing を提供すると説明されている
試験では、「多少の重複は許容できるが大規模で高速に処理したい」なら Standard、「順番どおり・重複なしが重要」なら FIFO と考えると整理しやすいです。
Visibility Timeout と DLQ
Visibility Timeout は、受信したメッセージを一定時間ほかのコンシューマーから見えなくする仕組みです。処理中のメッセージを別の処理系が重複して扱いにくくするための機能で、デフォルトは 30 秒です。
また、何度受信しても正常に処理できないメッセージを隔離するために DLQ(Dead-Letter Queue) を使います。これは障害解析や再処理の切り分けで重要です。
SQSを選ぶべき典型例
- 注文データを受け取り、後段で順番に処理したい
- フロント処理とバックエンド処理を分離したい
- アクセス急増時にも後続処理を安定させたい
- マイクロサービス間を疎結合にしたい
Amazon SNS とは
Amazon SNS(Simple Notification Service)は、Publish / Subscribe(Pub/Sub) 型の通知サービスです。送信元がトピックにメッセージを発行すると、そのトピックを購読している複数の宛先へメッセージが配信されます。
イメージとしては「一斉配信」に近く、1つのイベントを複数システムへ同時に知らせたい場面に向いています。
SNSの試験ポイント
- 1対多のメッセージ配信に向く
- トピックを中心に配信する
- 代表的な配信先として、Amazon SQS、AWS Lambda、HTTP/S、Email、SMS、Amazon Data Firehose などがある
- ファンアウト構成を作れる
ファンアウトとは何か
ファンアウトとは、1つのメッセージを複数の宛先へ広げて配信する考え方です。たとえば「注文が確定した」という1件のイベントを、同時に以下へ配ることができます。
- 請求処理用のシステム
- 在庫更新用のシステム
- 分析用のシステム
- 管理者通知用のメール
このように、「同じイベントを複数の処理系に配りたい」という問題文なら SNS を優先的に考えます。
SNSを選ぶべき典型例
- 1つのイベントを複数のシステムへ同時配信したい
- アラートを Email や SMS で通知したい
- あるイベントを Lambda と SQS の両方で受けたい
- Pub/Sub パターンを使いたい
Amazon MQ とは
Amazon MQ は、Apache ActiveMQ Classic と RabbitMQ 向けのマネージドメッセージブローカーサービスです。AWS がブローカーのセットアップ、運用、保守を管理してくれるため、自前でブローカーを構築・管理する負担を軽減できます。
Cloud Practitioner 試験で重要なのは、Amazon MQ が「AWSネイティブなキュー/通知サービスそのもの」ではなく、既存のメッセージブローカーとの互換性を重視したサービスだという点です。
Amazon MQの試験ポイント
- ActiveMQ Classic / RabbitMQ ベースの既存システムを AWS に移しやすい
- メッセージングコードを大きく書き換えずに移行しやすい
- JMS、NMS、AMQP、STOMP、MQTT、WebSocket などの互換性が強み
- 「既存資産を活かす」ことが選定理由になりやすい
Amazon MQを選ぶべき典型例
- すでに ActiveMQ や RabbitMQ を使っている
- アプリケーションのメッセージング部分を書き換えたくない
- 既存プロトコルや既存クライアントライブラリを維持したい
試験でよくある比較問題
1. 注文メッセージを後で確実に処理したい
答え:Amazon SQS
理由は、SQS がメッセージをキューに格納し、後続システムが順次取り出して処理するためです。非同期処理と疎結合化の代表例です。
2. 1つのイベントを複数システムへ配信したい
答え:Amazon SNS
理由は、SNS がトピックベースの Pub/Sub により、複数の購読先へファンアウトできるためです。
3. 既存の ActiveMQ / RabbitMQ アプリを大きく直さずクラウド移行したい
答え:Amazon MQ
理由は、Amazon MQ が既存メッセージブローカーとの互換性を重視したマネージドサービスだからです。
4. SNS と SQS を組み合わせるケース
試験では SNS → SQS の組み合わせも重要です。SNS で1つのイベントを複数の SQS キューへ配り、それぞれのシステムが自分のキューから非同期に処理する構成は非常によく使われます。
つまり、SNS は「配る役」、SQS は「ためる役」と整理すると覚えやすくなります。
直前復習向けの覚え方
- SQS:ためる。後で処理する。非同期。
- SNS:配る。通知する。一斉送信。
- Amazon MQ:既存ブローカー互換。移行向け。
迷ったときは、問題文が「キュー」「複数配信」「既存メッセージブローカー移行」のどれを求めているかを見ると判断しやすくなります。
まとめ
SQS、SNS、Amazon MQ はいずれもメッセージ連携に関係するサービスですが、試験で問われる本質は明確に異なります。
- SQS は 非同期処理のためのキュー
- SNS は 複数宛先への通知配信
- Amazon MQ は 既存ブローカー互換を重視した移行向けサービス
Cloud Practitioner では、細かな実装よりも「どの要件にどのサービスを選ぶべきか」を判断できることが重要です。この3つは頻出の比較対象なので、用途ベースで区別できるようにしておくと得点しやすくなります。
参考URL(AWS公式)
- Amazon SQS Developer Guide: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html
- Amazon SQS queue types: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-queue-types.html
- Amazon SQS visibility timeout: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-visibility-timeout.html
- Amazon SQS dead-letter queues: https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-dead-letter-queues.html
- Amazon SNS Developer Guide: https://docs.aws.amazon.com/sns/latest/dg/welcome.html
- Amazon SNS to Amazon SQS subscription: https://docs.aws.amazon.com/sns/latest/dg/subscribe-sqs-queue-to-sns-topic.html
- Amazon MQ Developer Guide: https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/welcome.html
- Amazon MQ FAQs: https://aws.amazon.com/amazon-mq/faqs/
- AWS Certified Cloud Practitioner: https://aws.amazon.com/certification/certified-cloud-practitioner/
- AWS Certified Cloud Practitioner Exam Guide (CLF-C02): https://docs.aws.amazon.com/pdfs/aws-certification/latest/cloud-practitioner-02/cloud-practitioner-02.pdf
