TOP業務システム> イベントドリブン方式
SOA/ESB
SOA/ESBの真の姿とは

第6回:リクエスト・リプライ方式とイベントドリブン方式の違い

著者:Fiorano Software  青島 茂   2007/11/2
前のページ  1  2  3  次のページ
イベントドリブン方式

   現実の業務処理では、何らかの事象(イベント)が発生するとそれに応じた業務処理が実行される、というケースが数多くあります。イベントには、例えば次のようなものがあります。
  • 倉庫に部品が入庫した
  • 製造ラインで不良品を検出した
  • 株価が変化した
  • 新規顧客がデータベースに登録された
  • 在庫数が閾値を超えた
  • POS端末で特定商品の売上げを検出した

表3:業務処理で発生するイベント

   イベントドリブンとは、イベントの発生によって特定の業務処理が駆動される方式を指します。最近よく耳にするEDA(イベントドリブンアーキテクチャ)も、この方式を指している言葉です。

   リクエスト・リプライ方式は、まだ行われていない処理を依頼するもので、イベントドリブンはすでに発生した事柄を他のシステムに通知することで、発生した事柄の処理を促すものです。この観点から、リクエスト・リプライ方式をプル型、イベントドリブン方式をプッシュ型の業務処理方法と呼びます。

   ここでも例を基に考えることとしましょう。次の図4は在庫管理のシステムの例で、システム間の連携を示しています。

在庫管理のシステム連携
図4:在庫管理のシステム連携

   処理フローは図5のようになります。

処理フロー
図5:処理フロー

   一連の処理フローを表4に示します。

  1. 倉庫には、完成した製品が不定期に運送されてきます。不特定数の製品が箱の中に梱包されており、この箱の数もまた搬入ごとに異なります。搬入された製品は直ちにベルトコンベヤーに載せられ、製品に貼り付けられているRFID(ICタグ)をスキャンすることで製品の種類とその数を判別します。スキャンデータは、倉庫管理システムに送られます。

  2. 倉庫管理システムでは、製品ごとの在庫数を管理しています。決められた在庫数の閾値を超えるような搬入があると、本社のERPシステムに通知します。

  3. ERPには、2ヶ所の倉庫から在庫数オーバーのデータが届きます。ERPは、データを受け取ると、当該製品の生産計画を変更するよう生産管理システムにデータを送ります。

  4. 同時に、ERPはSCMに対しても当該製品の部品供給量を調整するようデータを送ります。

表4:処理フローの解説

   さて、この例題をリクエスト・リプライ方式で構築することを考えてみましょう。

   リクエスト・リプライ方式で構築する場合、一番の問題は誰が全体のフローの制御を行うかという点です。

   中央に位置するERPがその候補として考えられますが、スキャンシステムにリクエストを送る場面を想定してみてください。製品の搬入が不定期であるため、スキャンを実施するタイミングとERPがリクエストを出すタイミングをシンクロさせることは不可能です。

   これはERPからスキャンシステムにポーリングを繰り返すことで、ある程度解消することは可能です。

   ただし、スキャン中にリクエストを受け取った場合の処理方法など、スキャンシステムにもERPにも複雑な処理ロジックが必要になり、処理のオーバーヘッドも発生してしまいます。

   また、ある1つのリクエストに対する処理を行っている間にもベルトコンベヤー上を製品が流れていきますので、スキャンシステムがスキャンし損なう可能性もでてきます。在庫管理システムに対するリクエストについても同じことがいえるでしょう。

   今回の例のように、関係する他のシステムが関知できないタイミングである処理がなされたり、予期できないタイミングである事象が発生する場合、リクエスト・リプライ方式で実装すると、システムのどこかに大きな無理が生まれるのです。

   そのような場合は、処理がなされた時点や事象の発生を検知した時点で他の関係するシステムに通知するイベントドリブン方式が適しているといえます。次の図6は、今回の例をイベントドリブン方式で連携した場合です。

イベントの連鎖
図6:イベントの連鎖

   図6からもわかるように、複数のアプリケーションからなるビジネスプロセスは、イベントの連鎖(イベントのパイプライン)として形成されます。イベントの連鎖とは、あるイベントの通知によって別のイベントが発生し、そのイベントの通知によってさらにまた別のイベントが発生するという状態を指しています。

   イベントの連鎖は、中心でフロー制御を行う必要がなく(むしろフローをコントロールできないといったほうがよいでしょう)、新たなイベントが次々とアプリケーションに渡されていくパイプラインとなります。

   図6を見て、ピンとくる方もおられると思いますが、パイプラインによる連携はバス形式であるESBと非常に相性がよいものです。

前のページ  1  2  3  次のページ


Fiorano Software, Inc. 日本オフィス ジャパン オペレーション マネージャ 青島 茂
著者プロフィール
Fiorano Software, Inc.
日本オフィス ジャパン オペレーション マネージャ
青島 茂
SOA/ESBの分野に2003年1月からたずさわる。2005年3月にFiorano Softwareの日本オフィスを開設し、現在SOA/ESB製品の国内市場への普及に専心している。


INDEX
第6回:リクエスト・リプライ方式とイベントドリブン方式の違い
  リクエスト・リプライ方式とイベントドリブン方式
イベントドリブン方式
  イベントドリブンとESB