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

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

最終更新:
💡 出来事を知らせ、必要な処理が反応する

起きた出来事をイベントとして伝え、それを受け取る処理が反応するシステムの設計。発行側と受信側の直接の依存を減らせる一方、配送・順序・重複・失敗への対応も必要になる。

📌 このページのポイント
イベント駆動:出来事に反応する注文を受付イベント発行イベントの経路購読先へ通知メールを送る分析記録を集計別の処理出来事に反応知らせたことと、処理完了は分けて見よう
注文受付の出来事を複数の処理が受け取る例。決済や在庫確保の成功・失敗は、別途業務の手順として扱います。
ひよこ ひよこ
出来事を知らせるって、どんな例?
ペンギン先生 ペンギン先生
例えば「注文を受け付けた」というイベントを発行し、通知や分析の処理が受け取って動く仕組みだよ。発行側が受信側を一つずつ直接呼び出す代わりに、イベントの経路を介して伝える。必要な処理を別々に追加しやすくなるんだ。
ひよこ ひよこ
イベントを出せば、注文は全部完了?
ペンギン先生 ペンギン先生
発行と、受信側の仕事の完了は別だよ。注文の成立に在庫確保や決済が必要なら、その成功・失敗も扱う手順が必要になる。通知処理を切り離せても、業務全体の成功まで自動的に保証されるわけではないんだ。
ひよこ ひよこ
失敗したイベントは、もう一度送ればいい?
ペンギン先生 ペンギン先生
再試行は大切だけれど、同じイベントが複数回届く場合を考えよう。受信側で重複して課金などをしないように設計し、順序が重要な処理は配送の保証も確認する。関連する処理を追えるIDやログ、失敗を調べる仕組みも役立つよ。
ひよこ ひよこ
マイクロサービスなら、必ず使うもの?
ペンギン先生 ペンギン先生
必須ではないよ。必要な応答時間、イベントを失わない条件、処理結果が反映されるまでの時間などで選ぼう。イベントの通知やストリームには異なる方式があり、イベントソーシングとも同じ意味ではない。サービス名やシステムの規模だけで決めないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「イベント駆動アーキテクチャ」って出てきたら「出来事の通知を受けて、各処理が反応するシステムの設計」と思えばだいたいOK!
📖 おまけ:英語の意味
「Event-Driven Architecture」 = イベント駆動型アーキテクチャ
💬 Event(出来事)にDriven(駆動される)Architecture(設計)。出来事が起きるたびに反応するよ

参考資料

← 用語集にもどる