こんばんは。
システム開発では、複数のアプリケーション同士がデータをやり取りするためにメッセージキューを利用することがあります。
AWSには、Amazon SQSというメッセージキューサービスがありますが、それとは別にAmazon MQというサービスも提供されています。
Amazon MQ は、Apache ActiveMQ や RabbitMQ といったオープンソースのメッセージブローカーを、AWS がマネージドサービスとして提供するサービスです。
今回は、Amazon MQについて整理していきます。
Amazon MQとは
Amazon MQ は、Apache ActiveMQ や RabbitMQ をマネージドサービスとして提供するメッセージブローカーサービスです。
通常、ActiveMQ や RabbitMQ を利用する場合は、自分でサーバーを構築し、ソフトウェアのインストールやパッチ適用、障害対応などを行う必要があります。
Amazon MQ を利用すれば、これらの運用を AWS が管理してくれるため、利用者はアプリケーション開発に集中できます。
メッセージブローカーとは
メッセージブローカーとは、アプリケーション同士のメッセージの受け渡しを仲介する仕組みです。
例えば、ECサイトでは注文が入ると、
注文システム
│
▼
Amazon MQ
┌────┼────┐
▼ ▼
在庫管理 配送システム
▼
メール送信
注文システムは各システムへ直接通知する必要がなく、Amazon MQ がメッセージを受け取り、それぞれのシステムへ配信します。
このようにシステム同士を疎結合にできるため、システムの拡張や保守がしやすくなります。
Amazon MQ の特徴
- ActiveMQ・RabbitMQ を利用できる
- AWS がインフラを管理
- 高可用性(Multi-AZ)構成に対応
- 自動バックアップ
- 保存データや通信の暗号化に対応
- 認証・認可機能を利用可能
- JMS、AMQP、MQTT、STOMP、OpenWire など複数のプロトコルに対応(利用するブローカーによって異なる)
既存システムで ActiveMQ や RabbitMQ を利用している場合でも、比較的容易に AWS へ移行できます。
Amazon MQ が選ばれるケース
Amazon MQ は、次のような要件がある場合に適しています。
- オンプレミスの ActiveMQ を AWS へ移行したい
- RabbitMQ をそのままクラウドへ移行したい
- JMS や AMQP を利用した既存システムを移行したい
- アプリケーションの修正を最小限にしたい
既存システムとの互換性を維持したままクラウドへ移行できることが、Amazon MQ の最大の特徴です。
Amazon SQSとの違い
| 項目 | Amazon MQ | Amazon SQS |
|---|---|---|
| サービス | メッセージブローカー | メッセージキュー |
| 対応プロトコル | JMS、AMQP、MQTT など | AWS 独自 API |
| 既存システムとの互換性 | ◎ | △(実装変更が必要な場合がある) |
| 新規 AWS システム | ○ | ◎ |
| FIFO | ブローカーの機能による | FIFO キューを提供 |
| サーバーレスとの相性 | ○ | ◎ |
Amazon MQ は、既存のメッセージブローカーをクラウドへ移行したい場合に適しています。
一方、AWS 上で新規システムを開発する場合は、Amazon SQS を選択するケースが多くなります。
ActiveMQ と RabbitMQ
Amazon MQ では、次の 2 種類のブローカーを選択できます。
ActiveMQ
特徴
- Java 系システムで広く利用されている
- JMS をサポート
- OpenWire、AMQP、MQTT、STOMP など多くのプロトコルに対応
- エンタープライズシステムで採用実績が多い
既存の ActiveMQ 環境を AWS へ移行したい場合に適しています。
RabbitMQ
特徴
- 軽量で高速
- AMQP を中心としたメッセージング
- マイクロサービスとの相性が良い
- クラスター構成にも対応
- Kubernetes 環境でも広く利用されている
クラウドネイティブなシステムやマイクロサービスアーキテクチャで利用されることが多いブローカーです。
Amazon MQ を利用する場面
例えば、オンプレミスで ActiveMQ を利用している場合、
オンプレミス
アプリケーション
│
ActiveMQ
これを AWS へ移行すると、
AWS
アプリケーション
│
Amazon MQ
となり、アプリケーションを大きく変更することなくクラウドへ移行できます。
Amazon MQ と Amazon SQS はどちらを選ぶ?
| 利用シーン | 選ぶサービス |
|---|---|
| 新規開発 | Amazon SQS |
| ActiveMQ を移行したい | Amazon MQ |
| RabbitMQ を移行したい | Amazon MQ |
| JMS を利用したい | Amazon MQ |
| AWS ネイティブなシステム | Amazon SQS |
- 既存システムの移行 → Amazon MQ
- AWS 上で新規開発 → Amazon SQS
という考え方をすると選択しやすくなります。
まとめ
Amazon MQ は、Apache ActiveMQ や RabbitMQ を AWS がマネージドサービスとして提供するメッセージブローカーサービスです。
特徴をまとめると、
- ActiveMQ・RabbitMQ をマネージドで利用できる
- 既存システムを大きく変更せず AWS へ移行しやすい
- JMS や AMQP など複数のプロトコルに対応
- 新規開発では Amazon SQS が選ばれることが多い