オーケストレーションと振付


回答:


334

(XML、SOAP、WSDL)などの基本的なテクノロジーは、サービスをエンティティとして独自に記述、検索、および呼び出す手段を提供します。ただし、これらのテクノロジーは、より複雑なコラボレーションにおけるサービスの役割について、動作の詳細を提供しません。このコラボレーションには、ビジネスプロセスを構築する一連のアクティビティとアクティビティ間の関係が含まれます。このプロセスを構築するには、サービスオーケストレーションとサービスコレオグラフィーの2つの方法があります。

サービスオーケストレーション

サービスオーケストレーションは、さまざまなサービス間の相互作用を調整する単一の集中型実行可能ビジネスプロセス(オーケストレーター)を表します。オーケストレーターは、サービスの呼び出しと結合を担当します。

参加しているすべてのサービス間の関係は、単一のエンドポイント(つまり、複合サービス)によって記述されます。オーケストレーションには、個々のサービス間のトランザクションの管理が含まれます。オーケストレーションは、サービス構成に集中型アプローチを採用しています。

オーケストレーション

サービスの振り付け

サービスの振り付けは、参加しているサービスのグローバルな説明であり、メッセージの交換、相互作用のルール、および2つ以上のエンドポイント間の合意によって定義されます。コレオグラフィーは、サービス構成に分散型アプローチを採用しています。

振付

コレオグラフィーは、複数のサービス間の相互作用を記述します。オーケストレーションは、一方の当事者の観点からの制御を表します。これは、コレオグラフィ オーケストレーションは異なり、関連するサービス間の相互作用を制御するロジックが存在する必要があることを意味します。


7
2つを表示する素晴らしい画像!どこで手に入れたの?
デビッドマン

6
@DavidMannコメントに感謝します。役に立ったと思ったら投票してください。これらの図はVisioで作成しました。インスピレーションとして、サービス構成でいくつかの文献を使用しました。しかし、私がこの答えが2年前にサービス構成について読み始めたばかりであることに気付きました。私はこの回答を参照で更新し、両方の
Andrei

@Andrei:これ以上簡単にはできませんでした。
Anshul Nigam

オーケストレーションと振付を混ぜることは理にかなっていますか?たとえば、コア同期ワークフローのオーケストレーションがありますが、その後、非同期イベントをソース機能(マイクロサービス)にストリーミングするコレオグラフィーがあります。私のシナリオでは、このアプローチにより、佐賀/ステートマシンと補償ロジックを実行する必要がなくなります。
Ryan.Bartsch

1
一部の読者は、オーケストレーション図から、オーケストレーションは制御サービスからサービスの提供への同期呼び出しを意味すると推測する場合があります。Invoke-Reply通信も非同期メソッドを使用して実行できることを明確にしたいと思います。メッセージブローカー経由。
クリストフ・

34

サービスオーケストレーション:固定ロジックによっていくつかのサービスをまとめます。このロジックは1か所で説明されています。マネージャーがミクロ管理をしている人々のチームを想像できます。マネージャーは、何をいつ、誰がすべきかを正確に伝えます。チームメンバーはジョブの目標全体を気にせず、マネージャーが出力を1つの成果物に結合します。実用的な例は、BPELプロセスです。BPELプロセスはロジックを含み、複数のサービスを呼び出し、それらの応答を単一のサービス応答に結合できます。

サービスの振り付け:決定ロジックは分散されており、一元化されたポイントはありません。あなたは誰もが共通の利益を目指しており、マイクロ管理なしで積極的に働く家を想像することができます。または、異なるメンバーが相互に依存し、共通の目標のために働く人体を想像できます。実際の例は、イベント駆動型処理です。この場合、エージェントはイベントによってアクティブ化され、そのジョブを実行します。すべてのエージェントが一緒にシステムを作ります。一元化されたロジックはありません。振付の可能性は、現実の世界とより整合しているため、オーケストレーションをはるかに超える可能性があります。

ビジネスロジックに焦点を当てる必要があるので、これら2つをあまり区別する必要はないとは考えています。単一のロジックポイントが機能する場合、オーケストレーションを行います。一元化されたロジックでは問題をカバーできない場合でも、とにかく振り付けを余儀なくされます。そのため、ITのオーケストレーションに出くわすことがよくありますが、コレオグラフィは、より学術的な概念であり、研究対象となっています。そして、現実の世界のように、実際にそれを知らずに振り付けをすることもよくあります。


21

サービスは、アトミックサービスと他のサービスで構成されるサービスとを区別できます。このような構成は「オーケストレーション」と呼ばれます。時にはワークフロー、時にはビジネスプロセス。たとえば、BPELはオーケストレーション言語ですが、それ自体を「ビジネスプロセス実行言語」と呼んでいます。

サービスを階層的に構成する必要はありません。つまり、2つのサービスが互いに通信する可能性があります。それらの間で実行されるプロトコルは、「コレオグラフィー」と呼ばれます。2つのサービスの場合がありますが、通常は2つ以上のサービスが関係しています。コレオグラフィーの各サービスは、パートナーサービスのオーケストレーターと見なされる場合があります。コレオグラフィーに参加する各サービスは、オーケストレーション/ワークフロー/プロセスとして実現できます。

オーケストレーションは各サービスの完全な動作を示しますが、コレオグラフィーは各サービスのインターフェース動作の説明を組み合わせています。

コレオグラフィー、インターフェースの振る舞い、プロバイダーの振る舞い、およびオーケストレーションを区別する優れた科学記事は、次のものです 。 337-368


19

スレッドは古いですが、私と同じようにこの質問を探してここでつまずいた人のためにスレッドに書いています。これは、サービス指向アーキテクチャー(SOA)でかなり議論されている質問であり、初心者にはより明確な説明が必要です。

オーケストレーション:実行可能プロセス

  • プライベートビジネスプロセスで使用
  • 中央プロセス(別のWebサービスの場合もあります)は、関連するWebサービスを制御し、操作に関連するWebサービスでのさまざまな操作の実行を調整します
  • 関与するWebサービスは、それらが構成プロセスに関与していること、およびより高いレベルのビジネスプロセスに参加していることを「認識」していない(そして知る必要はありません)。
  • オーケストレーションの中央コーディネーターのみがこの目標を認識しているため、オーケストレーションは、操作の明示的な定義とWebサービスの呼び出し順序で集中化されます。

ここに画像の説明を入力してください

振付:マルチパーティコラボレーション

  • 対照的に、振付は中央コーディネーターに依存していません。むしろ、コレオグラフィーに関与する各Webサービスは、その操作をいつ実行し、誰と対話するかを正確に知っています。コレオグラフィーは、パブリックビジネスプロセスでのメッセージの交換に焦点を合わせた共同作業です。

  • コレオグラフィーのすべての参加者は、ビジネスプロセス、実行する操作、交換するメッセージ、およびメッセージ交換のタイミングを認識する必要があります。

ここに画像の説明を入力してください

振付とオーケストレーション

  • Webサービスを構成してビジネスプロセスを実行する観点から見ると、オーケストレーションはより柔軟なパラダイムであり、コレオグラフィーに比べて次の利点があります。

  • コンポーネントプロセスの調整は、既知のコーディネーターによって集中管理されます。

  • Webサービスは、より大きなビジネスプロセスに参加していることを意識することなく組み込むことができます。

  • 障害が発生した場合に備えて、代替シナリオを導入できます。

1
実際、振付は通常、中央のコーディネーターに依存しています。通常、そのコーディネーターは何らかの形の分散メッセージブローカーです。メッセージブローカーのようなものを使用しないと、非常に柔軟性のない方法でサービスが結合され、脆弱性と再利用性が低下します。
Rodney P. Barbati、

8

アンドレイと他の人々は、オーケストレーションとは何で、振付とは何かを説明するのに優れた仕事をしました。ソフトウェアアーキテクトがこれらの2つの選択肢のどちらかを選択する場合、それらを異なる品質に関して比較することも重要です。

振付に加えてオーケストレーションプラス

  • 信頼性:オーケストレーションプラットフォームには、エラー処理とトランザクション管理(補正トランザクション)のサポートが組み込まれています。振付では、カスタム開発のワークフローとエラー処理はエラーが発生しやすくなります。
  • 変更可能性:オーケストレーションプラットフォームにあるビジュアルBPMツールを使用すると、プロセスワークフローと複雑なサービス構成の作成と変更が簡単になります。

オーケストレーションを超える振り付けプラス

  • パフォーマンス:オーケストレーションでは、ワークフロースクリプトの解釈とオーケストレーションプラットフォーム自体の追加レイヤーにより、パフォーマンスのオーバーヘッドが発生します。

  • コスト:振り付けは、関連する学習曲線とガバナンスの負担がある追加のミドルウェアや言語を必要としません。

編集

オーケストレーター要素が高可用性のメカニズムを採用していない場合、オーケストレーションソリューションはSPOFを導入する可能性があります。コメントでこれを指摘してくれた@Deepak porに感謝します。


3
振り付けを除いて、追加のミドルウェアが必要です。要件(タスク)は異なるノードに一致させる必要があります。その後、振付が展開、制定、監視、および調整されます。このすべての管理には、通常ミドルウェアによって提供されるツールが必要です。
Andrei

1
オーケストレーションは、コレオグラフィーの場合にはない単一障害点の欠点をもたらしませんか?
ディーパック

6

振付は、高度に分散化された組織にとって内部的に適していると思います。中央のビジネスプロセスエグゼキュータは必要ありません。これにより、組織の各サブユニットによる独立した成長と発展が促進されます。

(私はこのオーケストレーション対振付の質問の解釈に同意します:http : //geekexplains.blogspot.com/2008/07/ways-of-combining-web-services.html


6

オーケストレーションは、プロセス内のすべてのアクターを制御できる場合に役立ちます。それらはすべて1つの制御ドメインにあり、アクティビティのフローを指示できます。もちろん、これは、自分が制御できる1つの組織内で制定されるビジネスプロセスを指定する場合に最も頻繁に発生します。

コレオグラフィーは、2人以上の関係者(他の関係者のプロセス、またはおそらくそれらのプロセスの可視性)を制御できない関係者がアクティビティとプロセスを調整して情報と価値を共有する方法を指定する方法です。制御/可視性のドメイン間の調整が必要な場合は、振り付けを使用します。振付は、ネットワークプロトコルのような単純なシナリオで考えることができます。当事者間の要求と応答の許容可能なパターンを決定します。


5

サービスオーケストレーションとコレオグラフィーの別の見方:

-サービスオーケストレーション:ビジネスドメインの周囲。
-Service Choreography:複数のビジネスドメイン間。


1

オーケストレーションには指揮者と楽器奏者がいます。プレイヤーは指揮者の行動に従ってプレーします。導体を交換した場合、ハーモニック表現は異なります。つまり、同じプレー(サービス)ですが、結果が異なります。たとえば、金銭的な取り決めの提案を提供するために、オーケストレーションサービスは、指揮者のテンプレート(ビジネスの結果を返すか、その演奏を調整/更新する)を各プレーヤー(エンティティまたはユーティリティサービス、信用調査など)に要求(呼び出し)して実施します(ビジネスルール)。振付には、振付家とダンサーのグループがあります。振付は方向性ですが、ダンサーの各グループはその方向性を実現する方法において自律的です。


-1

オーケストレーションは通常、下位レベルのサービスを結び付けます。それは調停者のようなものです。コレオグラフィーは、カップリングをさらに減らすのに役立ちます。これについては、ここで詳しく説明しました

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.