はじめに
IBMのConfluent買収にあたって、KafkaとMQの違いについて社内で学んだ内容の個人メモです。
IBM MQ と Apache Kafka は、得意分野がまったく違う 技術です。
この記事では、最低限知っておけば OK な3ポイントだけに絞って解説します。
1. MQ と Kafka の違いを一言で
- MQ:特定の相手に「この処理をしてください」という コマンドを確実に届ける 技術
- Kafka:「注文が発生した」「在庫が変わった」といった 出来事(イベント)を流通・蓄積する 技術
→ MQ は “命令伝達”、Kafka は “出来事共有”。
2. MQ が向いている用途 / Kafka が向いている用途
MQ が向いているケース(確実さが必要)
- 注文処理
- 決済処理
- 在庫引当
- 業務システム間の確実な連携
- トランザクション性が重要な処理
Kafka が向いているケース(広く使うデータ)
- イベント流通
- リアルタイムデータ連携
- 分析用データ供給
- 監査ログ・履歴の蓄積
- 複数システムへの同報配信
3. なぜ MQ はコマンド処理に強く、Kafka はイベントに強いのか
MQ が強い理由
- メッセージはキューに入り、処理されるまで保持される
- トランザクションや永続化により 1件も漏らさない設計がしやすい
Kafka が強い理由
- イベントをログとして保持し、
複数システムがそれぞれのタイミングで繰り返し読める - 通知用途・分析用途・監査用途などに同じデータを流用しやすい
まとめ
- MQ:コマンドを確実に届ける
- Kafka:イベントを広く流す・貯める
- 用途が違うので、それぞれに合ったものを使用する