フィオラノ ソフトウェア ジャパン ブログ
    Twitter
  • Facebook
  • Google+

コレオグラフィ vs オーケストレーション

corp_brochure_168x203-OLD

SOA や BPM の世界では、ビジネス プロセスの構築や実行制御を指すものとして、コレオグラフィ と オーケストレーション という 2 つの用語が使われています。

Fiorano Software では、ビジネス プロセスの構築/実行を指す言葉として コレオグラフィ を意図的に用いています。

これは、コレオグラフィとオーケストレーションという言葉が意味するものが、ビジネス プロセスの構築/実行においてそれぞれ異なるからです。

1. 辞書的意味

コレ1. オグラフィ (choreography) とオーケストレーション (orchestration) の辞書などに掲載されている意味合いは、次のようになっています。

  • コレオグラフィ (choreography)
    バレーや舞踏などの振り付け
  • オーケストレーション (orchestration)
    オーケストラによる演奏方法

バレーとオーケストラとの間の大きな違いは、実演中に指揮者が存在するか否かという点にあります。
これを、ビジネス プロセスの構築/実行に当てはめて説明してみましょう。

2. オーケストレーションによるビジネス プロセス

オーケストレーションでは、下図に示すように、中央の指揮者がサービス (アプリケーション) の呼び出し (あるいはインボケーション) をコントロールし、ビジネス プロセスの実行を指揮します。

orchest_jp

オーケストレーション方式のビジネス プロセスでは、中央の指揮者に該当するブローカー (旧 EAI) もしくはプロセス エンジン (BPEL エンジンなど) が、ビジネス プロセスの制御を司る “ハブ & スポーク” の形態となります。
各サービスは中央からのリクエストによってロジックを実行し、実行結果をレスポンスとして中央に返す、リクエスト-リプライ方式となります。

3. コレオグラフィによるビジネス プロセス

コレオグラフィでは、サービス (アプリケーション) の呼び出しをコントロールし、ビジネス プロセスの指揮を執る指揮者は存在しません。
個々のサービスは、自律的に動き、あらかじめ振り付けられた相手 (他のサービス) に働きかけます。いつ、どのような条件で他のサービスに働きかけるかは、振り付けの中に含まれています。

choreo_jp

コレオグラフィでは、サービスが中央からの依頼 (リクエスト) によってロジックを実行し、その結果を依頼者 (中央) にレスポンスするという考え方は、基本的にはありません。
サービスは、中央からの制御 (もしくはリクエスト) が無くても、振り付け時 (ビジネス プロセス構築時) に定められた条件に従って自律して稼動し、条件に合致した他のサービスにデータを送ります。

4. リクエスト リプライとイベント ドリブン

4.1 オーケストレーションとリクエストリプライ

オーケストレーションは、リクエスト リプライ方式のアプリケーション連携を構築、実行するものです。
リクエスト リプライ方式は、次の特徴を持っています。

  • リクエスト リプライとは、自身の処理ロジックの一部を他のシステムに依頼する方式である
  • 依頼した処理の実行結果を受け取る
  • 依頼先 (サービス) の呼び出しタイミングやどの条件で呼び出すかなどの制御は、中央の指揮者が行う
  • 依頼先のサービスも含めて、全体が業務処理上の同じステートで実行される。
    例えば注文書の受注処理の場合、呼出されるどのサービスも、またサービスの呼出し側も同じ注文書に対する処理を行い、あるサービスだけ 別の注文書の処理を行うということがありません。

リクエスト リプライとは、自身の処理の一部を他のシステムに依頼 (もしくは委譲) する方式で、依頼した処理の結果は原則として自身の側で利用するという業務処理の方法です。
他のシステムの処理結果を自身の側に持ってくるもので、いわゆるプル型の業務方式です。

この考えかたは、サブルーチン コールやメソッド インボケーションと同じアナロジーとして、IT 技術者にとっても理解しやすいものとなっています。Web サービスや BPEL などの標準仕様もこのリクエスト リプライに基づくものです。

4.2 コレオグラフィとイベントドリブン

現実の業務処理では、何らかの事象 (イベント) が発生するとそれに応じた業務処理が実行される、というケースが数多くあります。
イベントには、例えば、次のようなものがあります。

  • 倉庫に部品が入庫した
  • 株価が変化した
  • 新規顧客がデータベースに登録された
  • 在庫数が閾値を超えた
  • POS 端末で特定商品の売上げを検出した

イベント ドリブンとは、イベントの発生によって特定の業務処理が駆動される方式を指しています。

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

関係する他のシステムが関知できないタイミングである処理が為されたり、予期できないタイミングである事象が発生するケースでは、処理が為された時点や事象の発生を検知した時点で他の関係するシステムに通知するイベント ドリブン方式が適しています。
リクエスト リプライ方式では、指揮者がこのようなイベントの発生を検知することが非常に難しく、ビジネス イベントの発生に対するリアルタイムな業務処理が行えません。ビジネス イベントは、指揮者の側で発生するのではなく、むしろサービス (アプリケーション) の側で発生するからです。
イベント ドリブンでは、処理タイミングを中央で制御するものではなく、ビジネス イベントの発生時に発生場所 (アプリケーション) で即座に関連するアプリケーションに通知することができます。これによって、ビジネス イベントの関連アプリケーションが即座に処理を行え、リアルタイム性に非常に優れています。

コレオグラフィによるアプリケーション連携は、イベントの処理に適したものです。
特にイベントが次々と連鎖して発生するような業務処理においては、非常にマッチしたものとなります。

Fiorano Software の連携プラットフォーム

Fiorano Software のプラットフォーム製品は、イベント ドリブンとリクエスト リプライの両方式をサポートしており、業務処理の形態に応じて柔軟に方式を選択できます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>