📝

Amazon MQってなんだろ?

2021/04/22に公開約4,800字

Amazon MQというサービスがありますが、名前しか知らないので調べてみました。

AWS公式

Amazon MQ(ActiveMQ 向けマネージド型メッセージブローカーサービス)| AWSより

オープンソースメッセージブローカー向け完全マネージド型サービス

Amazon MQ は、AWS でメッセージブローカーの設定や運用を簡単に行えるようにしてくれる、 Apache ActiveMQ および RabbitMQ 向けのマネージド型メッセージブローカーサービスです。Amazon MQ は、メッセージブローカーのプロビジョニング、セットアップ、メンテナンスを管理することにより、運用上の責任を軽減します。Amazon MQ は業界標準の API とプロトコルを使用して現在のアプリケーションに接続するため、コードを書き直すことなく AWS に簡単に移行できます。

メッセージブローカー、業界標準あたりがポイントでしょうか。
メッセージブローカーが分からないので先に調べます。

メッセージブローカー

MQTTってどんなもの? | さきブログより

MQTT

MQTT(Message Queue Telemetry Transport)は、通信プロトコルの一種です。Webページを見るならHTTP、ファイル転送するならFTP、といったように、目的に応じていくつかの通信プロトコルがあります。
MQTTは、簡単に言うと、非同期で軽量のメッセージをやり取りするためのプロトコルです。

Publisher

メッセージを送信する側のことです。「メッセージを送信する人」のことじゃなくて、「メッセージを送信する処理を行なうプログラム」等のことを指します。

[AWS] SNS自分用まとめ - Qiitaでも分かりやすく説明されていたので、こちらもご覧ください。

Publisherは発行したいTopicへメッセージを送信します
PublisherはSubscriberの購読プロトコルごとにメッセージをカスタマイズして発行できる
・HTTP/S
・Email
・Amazon Labmda
etc...
PublisherとしてAWS Step FunctionsやAmazon CloudWatchなどのAWSサービスを選択可能

Subscriber

メッセージを受信する側のことです。これも、「メッセージを読む人」とかじゃなくて、「メッセージを受信するプログラム」等のことを言ってます。

Publisherとセットで出てきますね。
SNSではメールアドレスやLambda関数などを選択できますね。

Broker

Publisherからメッセージを受け取り、Subscriberに送信するサーバー等のことです。イメージ的には、郵便屋さんみたいなイメージでしょうか。

PublisherとSubscriberの間にあるイメージでしょうか。

Amazon SQS および Amazon SNS はキューおよびトピックサービスであり、高度にスケーラブルでシンプルに使用でき、メッセージブローカーをセットアップする必要がありません。
Amazon MQ とは - Amazon MQより

SQSやSNSはブローカーを用意しなくても裏で動いてくれていそうです。

MQのメリットと特徴

迅速な移行

業界標準 API やメッセージング用プロトコルを使用しているため、現在のアプリケーションを簡単に Amazon MQ に接続することができます。これにより、アプリケーションのエンドポイントを更新して Amazon MQ に接続するだけで、これらの標準を使用するメッセージブローカーから AmazonMQ に移行できます。

AWS独自の方法ではなく業界標準のプロトコルを使ってるため、今までのアプリから接続先をMQに変えるだけで簡単に移行できるようです。

運用上の責任を軽減

Amazon MQ は、メッセージブローカーの管理とメンテナンスを管理し、インフラストラクチャを自動的にプロビジョニングして可用性を高めます。ハードウェアをプロビジョニングしたり、ソフトウェアをインストールして管理したりする必要はありません。Amazon MQ が、ソフトウェアのアップグレード、セキュリティの更新、障害の検出と回復などのタスクを自動的に管理します。

フルマネージドですね。
自分でやろうと思ったらブローカー用のサーバーとかが必要なんでしょうね。

耐久性のあるメッセージングを簡単に実現

Amazon MQ は、メッセージブローカーに接続する際に、高可用性とメッセージの耐久性のために自動的にプロビジョニングされます。Amazon MQ は、AWS リージョン内の複数のアベイラビリティーゾーン (AZ) にメッセージを冗長的に保存し、コンポーネントまたは AZ に障害が発生した場合でも引き続き利用できます。

複数AZ間に保存するから耐障害性も高いとのことです。

セキュリティ

Amazon MQ では、保管中と転送中のメッセージを暗号化できます。メッセージが暗号化されたフォーマットで安全に保存されるようにすることも簡単です。ブローカーへの接続には SSL が使用され、Amazon VPC 内のプライベートエンドポイントのみにアクセスを限定できるため、独自の仮想ネットワーク内にブローカーを隔離できます。

メッセージの暗号化やSSLによる接続もできるようです。
また、IAMとの統合によりブローカーへのアクセス権限もコントロールできるようです。

モニタリング

Amazon MQ は Amazon CloudWatch および AWS CloudTrail と統合されています。CloudWatch では、ブローカー、キュー、トピックスのメトリクスをモニターできます。例えば、キューの深さをモニタリングし、メッセージが詰まったときにアラームを生成できます。CloudTrail では、Amazon MQ API コールをログ記録し、連続的にモニター、保持できます。

ブローカーのインスタンスタイプ

Amazon MQ は現在 mq.t2.micro、mq.t3.micro、mq.m4.large、mq.m5.large、mq.m5.xlarge、mq.m5.2xlarge、mq.m5.4xlarge という 7 種類のブローカーインスタンスタイプに対応しているため、CPU、メモリ、ネットワークパフォーマンスをさまざまな組み合わせで利用できます。

実態はEC2ということですかね。

料金

詳しくは割愛しますが、従量課金です。
無料枠は以下の通りです。

AWS 無料利用枠には、1 年間にわたり、最大 750 時間のシングルインスタンス mq.t2.micro または mq.t3.micro ブローカーと、ActiveMQ ブローカーの場合は 1 か月あたり最大 5GB の Amazon EFS ストレージ、RabbitMQ ブローカーの場合は最大 20GB の Amazon EBS ストレージが含まれます 。

SNSやSQSとの使い分け

Q: Amazon MQ は、Amazon SQS や SNS とどのように使い分けますか?
Amazon MQ、Amazon SQS、Amazon SNS は、スタートアップ企業からエンタープライズ企業まで、すべての方にとって適切なメッセージングサービスです。既存のアプリケーションで処理しているメッセージングを、クラウドにすばやく簡単に移したい場合、Amazon MQ のご検討をお勧めします。業界標準の API とプロトコルがサポートされているため、どのような標準に準拠したメッセージブローカーからでも、アプリケーション内のメッセージングコードを書き換えることなく Amazon MQ に切り替えられます。クラウド上でまったく新しいアプリケーションを構築される場合は、Amazon SQS と Amazon SNS のご検討をお勧めします。Amazon SQS と SNS は、ほぼ無制限にスケーリングでき、シンプルで使いやすい API を提供する、軽量な完全マネージド型のメッセージキューサービスおよびトピックサービスです。Amazon SQS と SNS を使用して、マイクロサービス、分散型システム、サーバーレスアプリケーションをデカップリングおよびスケールさせ、信頼性を向上できます。
よくある質問 - Amazon MQ | AWSより

メッセージングを利用している既存のアプリのクラウドへの移行の場合はMQ、新規に構築する場合はSNSまたはSQSという使い分けのようです。

まとめ

今回はAmazon MQについて調べてみました。
以下がポイントでした。

  • マネージド型メッセージブローカーサービス
  • BrokerはPublisherとSubscriberの中継役
  • 業界標準のプロトコルを使ってるため既存のアプリから移行しやすい
  • 複数AZ間に保存するから耐障害性も高い
  • 暗号化やSSLによる接続、IAMによるアクセス制御が可能
  • 実態はEC2(?)
  • 既存のアプリのクラウドへの移行の場合はMQ
  • 新規に構築する場合はSNSまたはSQS

どなたかの参考になれば幸いです。

参考資料

Amazon MQ(ActiveMQ 向けマネージド型メッセージブローカーサービス)| AWS
MQTTってどんなもの? | さきブログ
[AWS] SNS自分用まとめ - Qiita
Amazon MQ とは - Amazon MQ
よくある質問 - Amazon MQ | AWS

Discussion

ログインするとコメントできます