イベント駆動型アーキテクチャ(EDA)は、システムのコンポーネントがイベント、つまり発生した変化やアクションに関するメッセージを通じて相互作用するアプローチです。システムは、イベント生成者(producers)、消費者(consumers)、およびイベントを配信するメッセージバス(message bus、broker)で構成されます。
EDAを使用すると、柔軟にスケール可能で、疎結合なシステムを作成できます。1つのコンポーネントの変更は他のコンポーネントの修正を必要とせず、イベントの生成と処理のみが求められます。
コードの例(Node.jsでのイベント生成と処理):
const EventEmitter = require('events'); class MyEmitter extends EventEmitter {} const emitter = new MyEmitter(); // イベントハンドラー emitter.on('userCreated', (user) => { console.log('ユーザーが作成されました:', user); }); // イベントの生成 emitter.emit('userCreated', { id: 1, name: 'Ivan' });
主な特徴:
EDAはマイクロサービスアーキテクチャの対極ですか?
いいえ、それは対極ではありません。マイクロサービスは、サービス間の通信にEDAをしばしば使用します。
EDAはメッセージブローカーとだけ使用できますか?
必ずしもそうではありません。ローカルイベント(例えば、Observerパターンを介して)もEDAを実現しますが、ブローカーは分散システムを構築するのに役立ちます。
EDAはデータの不変性を保証しますか?
いいえ。EDAはコンポーネントの相互作用に関するものであり、再処理の耐性(冪等性)やデータの整合性は明示的に実装する必要があります。