Amazon MQ とは
Amazon MQ というサービスがありますが、名前しか知らないので調べてみました。
Amazon MQ とは
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
メッセージを送信する側のことです。「メッセージを送信する人」のことじゃなくて、「メッセージを送信する処理を行なうプログラム」等のことを指します。
Publisherは発行したいTopicへメッセージを送信します
PublisherはSubscriberの購読プロトコルごとにメッセージをカスタマイズして発行できる
・HTTP/S
・Amazon Labmda
etc...
PublisherとしてAWS Step FunctionsやAmazon CloudWatchなどのAWSサービスを選択可能
Subscriber
メッセージを受信する側のことです。これも、「メッセージを読む人」とかじゃなくて、「メッセージを受信するプログラム」等のことを言ってます。
Publisher とセットで出てきますね。
SNS ではメールアドレスや Lambda 関数などを選択できますね。
Broker
Publisherからメッセージを受け取り、Subscriberに送信するサーバー等のことです。イメージ的には、郵便屋さんみたいなイメージでしょうか。
Publisher と Subscriber の間にあるイメージでしょうか。
Amazon SQS および Amazon SNS はキューおよびトピックサービスであり、高度にスケーラブルでシンプルに使用でき、メッセージブローカーをセットアップする必要がありません。
SQS や SNS はブローカーを用意しなくても裏で動いてくれていそうです。
MQのメリットと特徴
マネージドサービス
Amazon MQ を使用すれば、AWS マネジメントコンソール、AWS CloudFormation、コマンドラインインターフェイス (CLI)、シンプルな API コールを使用して、本番環境に対応したメッセージブローカーを数分で起動できます。ハードウェアのプロビジョン、ブローカーの設定、ソフトウェアのアップグレード、障害の検出とリカバリといった管理タスクは Amazon MQ によって処理されます。
フルマネージドですね。
自分でやろうと思ったらブローカー用のサーバーとかが必要なんでしょうね。
セキュリティ
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、メモリ、ネットワークパフォーマンスをさまざまな組み合わせで利用できます。mq.t3.micro インスタンスは製品の初期評価向けに、mq.m5.large インスタンスはデフォルトの本番使用向けにそれぞれ設計されています。また、Amazon MQ は、評価やテストに適した単一インスタンスブローカーと、本番環境に推奨される複製された非常に可用性の高いデプロイメントモードの両方もサポートします。
実態はEC2ということですかね。
従量制の料金体系
Amazon MQ ではコスト効率に優れた柔軟なキャパシティーが提供され、最低料金もありません。お支払いいただくのは、ブローカーインスタンスを実行した時間数と月ごとに使用したストレージに対する料金です。ブローカーを新しく作成してキャパシティーを増やすことも簡単かつ安価に実行できます。詳細については、Amazon MQ 料金を参照してください。
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 を使用して、マイクロサービス、分散型システム、サーバーレスアプリケーションをデカップリングおよびスケールさせ、信頼性を向上できます。
メッセージングを利用している既存のアプリのクラウドへの移行の場合は MQ、新規に構築する場合は SNS または SQS という使い分けのようです。
まとめ
今回は Amazon MQ について調べてみました。
以下がポイントでした。
- マネージド型メッセージブローカーサービス
- Broker は Publisher と Subscriber の中継役
- 業界標準のプロトコルを使ってるため既存のアプリから移行しやすい
- 複数 AZ 間に保存するから耐障害性も高い
- 暗号化や SSL による接続、IAM によるアクセス制御が可能
- 既存のアプリのクラウドへの移行の場合は MQ
- 新規に構築する場合は SNS または SQS
どなたかの参考になれば幸いです。
Discussion