イベント駆動アーキテクチャとは?Kafka・RabbitMQでマイクロサービスを疎結合に設計する方法
オープンソースラボ編集部 ・ 2026年6月13日
マイクロサービスが増えると「どのサービスが何を呼ぶか」が複雑化します。イベント駆動アーキテクチャ(EDA)はサービス間の直接呼び出しをやめ、イベントを介した疎結合設計でこの問題を解決します。
イベント駆動アーキテクチャとは
従来のRPCアーキテクチャではサービスAがサービスBを直接呼びます。EDAでは:
- サービスAが「注文が作成された」イベントを発行
- メッセージブローカー(Kafka等)がイベントを保存
- 関心のあるサービス(在庫・請求・通知等)がイベントを購読・処理
メリット: 疎結合・スケールアウト容易・失敗の局所化
メッセージブローカーOSS比較表
| ツール | 保持期間 | スループット | 用途 | 特徴 |
|---|---|---|---|---|
| Kafka | 永続 | ◎ | ストリーミング・ログ集約 | 最高スループット・保持ありリプレイ可 |
| RabbitMQ | 一時 | ○ | タスクキュー・RPC | シンプル・AMQP標準 |
| NATS | 一時/JetStream | ◎ | マイクロサービス・IoT | 超軽量・Go製 |
| Redis Streams | 永続 | ○ | 軽量キュー | Redisで完結 |
Apache Kafka:大規模イベントストリーミング
Kafka(公式サイト↗・GitHub↗)はLinkedInが開発してOSSになった分散メッセージングシステムです。1秒間に数百万件のイベントを処理でき、イベントを永続保存してリプレイできます。
Kafkaのセットアップと基本的なプロデューサー/コンシューマーのコードはKafka公式ドキュメント↗を参照。またRabbitMQ公式サイト↗もタスクキューの参考になります。
DevOps関連OSSはDevOpsカテゴリから。データパイプラインのETLツールはETLツール比較記事も参照。
RabbitMQ:シンプルなタスクキュー
RabbitMQ(公式サイト↗・GitHub↗)はAMQPプロトコルのメッセージブローカーOSSです。Kafkaより設定がシンプルで、タスクキュー(メール送信・画像処理等)の非同期処理に最適です。
パターン:イベントソーシング
EDAと組み合わせるパターンとして「イベントソーシング」があります。DBのデータを直接更新するのではなく、すべての変更をイベントとして記録し、現在の状態はイベントの集積で導きます。
選び方
| ユースケース | 推奨 |
|---|---|
| 大規模ログ集約・ストリーミング | Kafka |
| タスクキュー・非同期処理 | RabbitMQ |
| マイクロサービス・軽量 | NATS |
| 既にRedis利用中 | Redis Streams |
まとめ
2026年のメッセージブローカーOSS:大規模ストリーミングはKafka、シンプルなタスクキューはRabbitMQが2大選択肢です。
よくある質問(FAQ)
Q. KafkaとRabbitMQはどちらを選ぶべきですか?
タスクキュー(注文処理・メール送信等)はRabbitMQがシンプルです。ログ集約・リアルタイム分析・イベントリプレイが必要な場合はKafkaです。初めてならRabbitMQから始めることを推奨します。
Q. Kafkaのセルフホストは難しいですか?
Kafka単体のセットアップはRedpanda(Kafkaプロトコル互換・軽量版)を使うと簡単です。本番クラスター構成はKRaft(ZooKeeper不要)モードが2024年以降の標準です。
Q. AWSのSQS・SNSをOSSで代替できますか?
はい。RabbitMQはSQS相当、Kafkaはキネシス相当のOSS代替です。ElasticMQ(SQSプロトコル互換)もローカル開発に便利です。
関連リンク・公式情報
ここで紹介したツールの一次情報(公式サイト・ソースコード)と、オープンソースラボ内の関連ページをまとめました。導入検討の際にご活用ください。
公式サイト・ソースコード(外部リンク)
オープンソースラボの関連ページ(内部リンク)
