AWSのメッセージイングサービスを整理する。
皆さん、こんにちは。技術開発グループのn-ozawanです。
一見すると新潟県と山形県の県境ですが、よく見ると新潟県と山形県の間に福島県が細長く食い込んでいます。
本題です。
AWSでは、さまざまなソフトウェアやエンドデバイスと情報のやり取りを行うためのメッセージングサービスが充実しています。今回はそのうち有名な3つ、Amazon MQ、Amazon SQS、Amazon SNSの違いなどを整理します。
目次
メッセージングサービス
AWSが提供するメッセージングサービスには以下の通りです。
- Amazon MQ
- Amazon SQS
- Amazon SNS
- Amazon Pinpoint
- Amazon Kinesis Streams
- AWS IoT Message Broker
Amazon MQ
Amazon MQは、メッセージブローカーサービスです。メッセージブローカーとは、異なるシステム間でメッセージの送受信する際に、その間に入ることで最適化する中間システムです。
システムが処理できる数には上限があり、その上限を超えた場合、他システムからのメッセージは拒否されます。拒否された他システムは、処理してくれるまでそのメッセージを再送する必要があり、場合によってはその間のシステムは停止してしまいます。メッセージブローカーはその中間に入り、システム間のメッセージを保持します。これにより、各システム間のやり取りを効率化します。

Amazon MQは、AMQPやMQTTなどの標準メッセージプロトコルをサポートしています。
Amazon SQS
Amazon SQSは、Simple Queue Serviceの略称で、Amazon MQと似たメッセージブローカーサービスです。MQとの違いは、MQはApache ActiveMQやRabbitMQなどのオープンソースのメッセージブローカーに対応していますが、SQSはAWSクラウドに最適化されています。
AWSでは、新規に開発する場合はSQSを推奨しています。一方で、従来のメッセージブローカーをクラウドへ移行する場合はMQを推奨しています。
SQSは「標準キュー」と「FIFOキュー」の2つが利用可能です。FIFOはFirst In, First Outのことで、先入先出のキューになります。FIFOキューはメッセージの順序を保持する一方、標準キューは順序は保障されません。標準キューはスループットが無制限なことやコストが低いなどのメリットが多いため、AWSは標準キューの利用を推奨しています。

「Amazon SQS」をグラレコで解説
Amazon SNS
Amazon SNSは、Simple Notification Serviceの略称で、プッシュ型のメッセージサービスです。先ほどのMQとSQSは、システム側からメッセージを取得するのに対して、SNSは相手側へメッセージを送信します。
メッセージは、メールやHTTPエンドポイント、SMSによるスマートフォンへのプッシュ配信が可能です。例えば、CloudWatchでAWSの料金を監視して、閾値を超えたらSNSで通知する、などと言ったことも可能です。

おわりに
余談ですが、SQSやSNSの公式ページを見ると、それぞれSimple Queue ServiceやSimple Notification Serviceと略さず書かれているのですが、MQだけはMQで書かれているんですね。MQはMessage Queuingの略だと思うのですが、何か意図があるのでしょうか。
ではまた。