イベントの基礎 - EDA (イベント 基盤 アーキテクチャ)

※本記事は以下のサイトから転載し、翻訳をしたものになります(一部加筆修正しています)。

http://cafe.naver.com/xplatform101/33

 

 

イベントについては、基礎が不足していると、ある段階まで行くと限界に達してしまいます。

 

一般的なWebプログラミングモデルに慣れてしまうと、イベントを適切に使用するよりも、既存の使い慣れた方法を使用してしまいます。

ところが、こういった場合、最適なパフォーマンスを担保することが難しくなります。さらには誤ったイベント処理によって取り返しのつかない問題をもたらしたります(特にこのような問題は、テスト中には発見されません。大体の場合はこのようなシナリオは考慮せずテストケースを作成するからです)。

 

XPLATFORMのアプリケーションは、EDAを基本にしています。

イベント駆動アーキテクチャ(Event Driven Architecture)の略で、プログラミングに限定される概念ではなくもっと汎用的な概念です。

ウィキペディアの定義を見ると、自動車の例を挙げています。

http://en.wikipedia.org/wiki/Event-driven_architecture

http://bigstory.tistory.com/entry/Event-Driven-Architecture

 

販売中(for sale)の自動車が、顧客に購入され、「販売済」(sold)に状態が変わると、自動車の状態の変化を検出したシステムでイベントが発生し、財務、マーケティング、関連部門システムに自動的に転送されます。そして転送されたイベントは、各システムの要件に応じて適切な処理がされます。

f:id:xplatform:20130308181356p:plain

http://onepixelahead.com/2010/08/11/leveraging-event-driven-architectures/

 

ここで重要なのは、分散されたシステム間でイベントが生成・送信され、必要に応じて処理されるシステムアーキテクチャということです。そして、各イベントは、注目すべき状態の変化(notable thing)を意味します。

 

EDAを構成する要素は、大きくイベントコンストラクタ(Event generator)、イベントチャネル(Event channel)、イベント処理エンジン(Event processing engine)の3つに区分されます。

 

イベントコンストラクタはシステムの状態変化を検出して、標準化された形式のイベントを生成します。

イベントチャネルは、イベントを各システムに配信する役割をします。

そしてイベント処理エンジンでは、受信したイベントを適切に処理し、必要に応じてイベントを発生させたりします。

 

EDAを適用することは、異なるトランザクションを接続し、イベント処理に伴う流れを持つようになるので、おなじみのワークフローモデルを思い起こさせます。

 

EDAの議論でよく出てくるのがloosely coupledの話です。

イベント生成側は生成されたイベントの処理を管理しません。イベントの発生と処理が分離され、これに伴う柔軟性を確保することができます。

 

このような基礎的な概念を持ってXPLATFORMのイベントを処理すると、もっと簡単に理解できると思います。