【いべんとくどうあーきてくちゃ】

イベント駆動アーキテクチャ とは?

💡 「何かが起きたら反応する」で疎結合なシステムを作る
📌 このページのポイント
イベント駆動アーキテクチャ Producer 1 注文サービス Producer 2 決済サービス Producer 3 ユーザーサービス イベント発行 Event Bus (メッセージブローカー) Kafka / RabbitMQ / SQS 配信 Consumer 1 在庫管理 Consumer 2 通知送信 Consumer 3 分析・ログ Producer と Consumer は互いを知らない(疎結合) Consumer を追加しても Producer に影響なし
イベント駆動アーキテクチャのイメージ
ひよこ ひよこ

具体的にどういう仕組み?

ペンギン先生 ペンギン先生

ECサイトで注文が入ったら「OrderPlaced」イベントを発行。在庫サービスはそれを受けて在庫を減らし、決済サービスは課金処理し、通知サービスはメールを送る。注文サービスは他のサービスの存在を知らなくていい。イベントを発行するだけで、誰がどう処理するかは各サービスの責任なんだよ

ひよこ ひよこ

リクエスト・レスポンス方式と何が違う?

ペンギン先生 ペンギン先生

リクエスト方式は「注文サービスが在庫API→決済API通知APIを順番に呼ぶ」。1つでも落ちると全体が失敗。イベント駆動は「注文サービスがイベントを発行して完了」。各サービスが独立して処理するから、通知サービスが落ちても注文は成立する。ただし即座に結果がわからないので、結果整合性の設計が必要だよ

ひよこ ひよこ

デメリットは?

ペンギン先生 ペンギン先生

デバッグが難しい(イベントが飛び交うとフローの追跡が大変)、②結果整合性(最終的には整合するが即座には反映されない)、③イベントの順序保証が必要な場面での複雑さ、④イベントスキーマの管理。分散トレーシングJaeger等)やイベントカタログで可観測性を確保することが重要だよ

ひよこ ひよこ

おもしろい!どういう規模で導入すべき?

ペンギン先生 ペンギン先生

モノリスで十分な規模で無理に導入する必要はない。マイクロサービスに分割して、サービス間の依存が複雑になってきたら検討する。最初はAWS EventBridgeやGoogle Cloud Pub/Subのようなマネージドサービスで始めて、需要に応じてKafkaに移行するのが現実的だよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
イベント駆動アーキテクチャ」って出てきたら「イベントを中心にシステムが連携するアーキテクチャ」と思えればだいたいOK!
📖 おまけ:英語の意味
「Event-Driven Architecture」 = イベント駆動型アーキテクチャ
💬 Event(出来事)にDriven(駆動される)Architecture(設計)。出来事が起きるたびに反応するよ
← 用語集にもどる