Amazon MQ
# Amazon MQ
https://d1.awsstatic.com/webinars/jp/pdf/services/20190703_AWS-Blackbelt_AmazonMQ.pdf
## メッセージング概要
- 小売業のオーダー処理
- フロントエンドとバックエンド、在庫と請求、マーケティングを接続
- 銀行の金融トランザクション
- すべての取引や決済を取り込み
- 各ステップが確実に実行されることを保証
- メディア企業のコンテンツ公開
- 各ステップを独立して処理(再フォーマット、翻訳)
- 文書を多様な送信先へ発信
メッセージ指向ミドルウェア(MoM)またはメッセージブローカーのコンポーネントが必要になってくる
## Amazon MQとは
- マネージドメッセージブローカーサービス
- セキュリティ
- 通信、保管データを暗号化
- ネットワーク、セキュリティグループでアクセスを制御
- モニタリング
- Apache ActiveMQをサポート
- 多様な連携パターンをサポートするオープンソースメッセージブローカー
- キュー
- Producer -> Queue ->> Consumer *x
- メッセージの順序性とonce and only once配信をサポート
- 各メッセージは単一のコンシューマのみが取得
- メッセージ処理準備が整ったコンシューマがキューからメッセージを取得
- トピック
- Pub/Sub型
- メッセージはアクティブなサブスクリプションを持つ全てのユーザに配信
- 複合送信先
- 仮想トピック
- 仮想トピックから対応するキューに転送される。各キューからコンシューマがアクセスしてメッセージを取得
- フェイルオーバートランスポート
- 複数のエンドポイントを指定し、障害時にフェイルオーバー
- スケジュールメッセージ
- クライアントから送信される配信タイミングの制御
- 認可マップ
- ユーザーロールによる、read/write/admin の権限制御
- ブローカーのネットワーク(複数ブローカーの運用)
- 豊富なメッセージング機能
- 低遅延かつ高耐久性
- 複数AZでメッセージストアをレプリケート
- 標準的なAPIやプロトコルに対応
- Amazon MQの構成要素
## ユースケース
- マネージドサービスなので高可用性を維持しながらライセンスコストを削減
- オンプレのMoM からAmazon MQへメッセージを送信。その先でオンプレからAWSに移行したアプリを運用しLift-and-shift を進める
## ベストプラクティス
- セキュリティ
- パブリックIPはできるだけ使わない
- クライアント側の暗号化も有効化する
- 認可マップを設定する
- 不要なプトロコルをセキュリティグループでブロックする
- 接続性
- パフォーマンス
## Amazon MQ と Amazon SQS/SNSの使い分け
- Amazon SQS /SNS はクラウドネイティブなアプリケーションに最適化されている。Amazon MQを利用する場合は、現在のオンプレ環境からAWS環境へリフトアンドシフトしようとしている場合。
- Apache ActiveMQとの互換性があるので最小限のコード変更でオーバーヘッドとコストを削減できる
## 雑感
メインの使いどころとしては、現行のオンプレ環境からクラウド環境に移行するときに変更点を少なくしつつ移行できることを実現するサービス。
マネージドサービスで高可用性・高耐久性・セキュアを実現できるものの、設定変更をしたい場合も再起動が必要だったりして、制約がいろいろとある印象。