複合イベント処理(Complex Event Processing; CEP)という用語は、2002年にDavid Luckman氏によって導入された。数年後に書かれたCEPについての論文(これやこれ)で、Luckman氏はイベント処理がどのようにして分散システムのコアになったのか、数十年間のシミュレーション、そしてCEPは進化でありコンテキスト切り替えと言われるものと同じではないということを示した。つまり、CEPはこのように要約することができる。
複合イベント処理とは、現実世界のイベントデータを、低遅延でフィルタリング、関連付け、集約、計算する技術です。
数年間、CEPはSOAのコンテキストで議論され、"コンピューティングの新たなフィジックス"と呼ばれたり、WebSphereのCTOであるJerry Cuomo氏から"次なる目玉"と呼ばれたりしてきた。
私はSOAのコンテキストの中で、次の目玉について色々な人から話を聞き、それはイベント処理だと心から思いました。皆さんがこれについてどの程度聞いたことがあるのか私には分かりませんが、我々はイベント処理についてとても真剣に話し合っています。イベント処理の範囲がわかってきました。シンプルな考え方で成功してきたイベント処理があります。
CEP製品を提供したり開発したりしている企業やオープンソースプロジェクトには、EsperやDrools Fusion、Oracle、Sybaseなどがある。それに加えて、イベントやCEPのコンセプトに基づいた、イベント駆動アーキテクチャ(Event Driven Architectures; EDA)やイベントストリーム処理(Event Stream Processing; ESP)についての議論も見受けられた。GartnerやOracleも、CEPとSOAの組み合わせが次世代SOA、つまりSOA 2.0の始まりだとしていたが、広く受け入れられることはなかった。Eric Roch氏の指摘によると、CEPという言葉は基本的なコンセプトを売り込むのを難しくしているのだという。
CEPという用語とその複合の考え方は、その技術に関係するユースケースによって、さらに悪化させられています。最も一般的なユースケースはアルゴリズムトレーディングです。あなたはCEOのところへ行って、Wall Streetでアルゴリズムトレーディングのために使われているクールな技術、CEPを自分も試したい、と言うことを想像できますか? もし、あなたがラッキーであれば、“一体なぜ我々のビジネスにそれが必要なのか”という答えを得るでしょう。そうでなければ、苛立って、素っ気なく睨まれることになるかもしれません。
Eric氏は、メッセージ指向のミドルウェアやルールエンジンといったCEPの基本的なコンセプトの裏側に、新しいことがそれほど多くあるわけではない、というLuckman氏の分析に同意している。だが、それでもクラウドの議論にとっては多くの複雑な用語がある。
しかし、複合イベント、イベントチャネル、推論エンジン、Reteネットワーク、前向き推論、状態マシン、タプル、アルゴリズムトレーディングといったバズワードを全て捨てれば、CEPはそれを動かすためにはPhDが必要なもののように思えます。
幸運にも、過去10年の間に実装は改善され、CEPツールは今や重要なコンポーネントである。
CEPツール、特に最も成熟したものは、モデル駆動であり、とても簡単に使えます。ビジネスルールを記述するための推論エンジンの内部を知る必要はありません。実際、CEPツールはネストされた大量のif文に比べて、簡単にビジネスルールを書くことができます。
しかし、過去数年、CEP関連の議論や派手な売り込みの量は減少した。これはSOAとの関連が減少したためかもしれないし、CEPが本当は当初期待されていたことを果たさなかったためかもしれない。もしくは、Luckman氏が指摘したように、イベントは数十年の間にソフトウェアシステムの一部となり、CEPは自然にSOA実装のコアや部品となり、人々に当たり前のように受け入れられるようになったのかもしれない。
当然、クラウドの出現と既存のソフトウェアへの投資をそちらへ移行しようという動きのために、SOAからCloudへという議論が行われてきており、これはCEPなどSOAに関係するもの全てを意味する。だがこれは、昨年Colin Clark氏によって報告されたように、簡単ではないようだ。
それは、現在のCEPプロダクトがグリッド配置に向いていないからでしょう。今の製品で、メッセージバスやキャッシュ、その他グリッド配置に必要なものを実装しているものはありません。そのような重要なコンポーネントがないので、おそらくCEP製品は“メッセージがどこから来て、それがどこへ行くのか気にしない”という世界向けのアーキテクチャにはならなかったのでしょう。我々は徐々にこのような世界に足を踏み入れています。このような世界はクラウドコンピューティングが適しています。
別の記事で述べられている通り、CEPの背後にある低遅延のような前提や、現在の実装の"複合"は、クラウドでそれらを使う上で障害となるかもしれない。それとも、過去50年の間にCEPが分散システムにとって重要なものとなったのと同じように、クラウドでもCEPは重要なものとなるのだろうか?あなたはSOAアプリケーションの中でCEPを使っているだろうか?それは、SOAインフラストラクチャの中核だろうか?あなたは、クラウドでもそれを使うことを検討しているだろうか?もしそうであれば、既存の実装は要件にマッチするだろうか?それとも、よりクラウド特有の何かが必要だろうか?