Amazon MQ
Apache ActiveMQ と RabbitMQ に対応したフルマネージドのメッセージブローカーサービス
何ができるか
Amazon MQ は、Apache ActiveMQ と RabbitMQ をクラウド上で簡単に運用できるフルマネージドのメッセージブローカーサービスです。既存のメッセージングアプリケーションを、コードの書き換えなしにクラウドへ移行できます。JMS、AMQP、STOMP、MQTT、OpenWire など業界標準のプロトコルに対応しており、オンプレミスで利用していたメッセージブローカーからの移行が容易です。ブローカーのプロビジョニング、パッチ適用、障害検知、復旧はすべて AWS が自動で管理します。
どのような場面で使うか
オンプレミスの ActiveMQ や RabbitMQ からのクラウド移行、レガシーシステムとクラウドネイティブアプリケーション間の非同期メッセージング、マイクロサービス間の疎結合な通信、注文処理システムのキューイング、IoT デバイスからの MQTT メッセージ受信など、標準プロトコルベースのメッセージングが必要な場面で活用されています。 この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
身近な例え
郵便局に例えるとわかりやすいでしょう。送り主 (プロデューサー) が手紙 (メッセージ) を郵便局 (ブローカー) に預けると、受取人 (コンシューマー) の都合のよいタイミングで届けてくれます。郵便局の建物の管理や配達員の手配はすべて AWS が行うため、利用者は手紙の内容だけに集中できます。
Amazon MQ とは
Amazon MQ は、業界標準のメッセージングプロトコルに対応したマネージドメッセージブローカーです。AWS には SQS や SNS といったクラウドネイティブなメッセージングサービスもありますが、これらは独自の API を使用します。既存のオンプレミスアプリケーションが ActiveMQ や RabbitMQ の API やプロトコルに依存している場合、Amazon MQ を使えばアプリケーションコードを変更せずにクラウドへ移行できます。新規開発でクラウドネイティブなメッセージングが必要な場合は SQS や SNS の利用が推奨されます。
ActiveMQ と RabbitMQ の選択
Amazon MQ では、ブローカーエンジンとして ActiveMQ と RabbitMQ のいずれかを選択できます。ActiveMQ は JMS (Java Message Service) との互換性が高く、Java ベースのエンタープライズアプリケーションとの統合に適しています。RabbitMQ は AMQP プロトコルのリファレンス実装として広く採用されており、柔軟なルーティング機能と高いスループットが特徴です。既存システムで使用しているエンジンに合わせて選択するのが基本ですが、新規導入の場合は要件に応じて比較検討することをおすすめします。
高可用性とセキュリティ
Amazon MQ はマルチ AZ 構成をサポートしており、プライマリブローカーに障害が発生した場合はスタンバイブローカーへ自動的にフェイルオーバーします。データは EFS (ActiveMQ) または EBS (RabbitMQ) に永続化され、メッセージの損失を防ぎます。通信は TLS で暗号化され、保存データも AWS KMS による暗号化が可能です。VPC 内にブローカーを配置することで、ネットワークレベルのアクセス制御も実現できます。
Azure・オンプレミスとの比較
AWS の優位点
- ActiveMQ と RabbitMQ の両方をマネージドサービスとして提供しており、既存のオンプレミス環境からコード変更なしでクラウドへ移行できる
- JMS、AMQP、STOMP、MQTT、OpenWire など業界標準の複数プロトコルに対応しており、多様なクライアントライブラリとの互換性が確保されている
- マルチ AZ 自動フェイルオーバーと TLS 暗号化が標準で組み込まれており、高可用性とセキュリティを追加設定なしで実現できる
注意点
- 新規開発でクラウドネイティブなメッセージングが必要な場合は、Amazon MQ ではなく SQS や SNS の利用を優先的に検討すること
- マルチ AZ 構成ではフェイルオーバー時に数十秒のダウンタイムが発生するため、クライアント側の再接続ロジックを実装しておくことが重要
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。