Orchestrierung vs. Choreografie


Antworten:


330

Grundlegende Technologien wie (XML, SOAP, WSDL) bieten Mittel zum Beschreiben, Lokalisieren und Aufrufen von Diensten als eigenständige Einheit. Diese Technologien liefern jedoch keine umfassenden Verhaltensdetails über die Rolle des Dienstes bei einer komplexeren Zusammenarbeit. Diese Zusammenarbeit umfasst eine Abfolge von Aktivitäten und Beziehungen zwischen Aktivitäten, die den Geschäftsprozess bilden. Es gibt zwei Möglichkeiten, diesen Prozess zu erstellen: Service-Orchestrierung und Service-Choreografie.

Service-Orchestrierung

Die Service-Orchestrierung stellt einen einzelnen zentralisierten ausführbaren Geschäftsprozess (den Orchestrator) dar, der die Interaktion zwischen verschiedenen Services koordiniert. Der Orchestrator ist für das Aufrufen und Kombinieren der Dienste verantwortlich.

Die Beziehung zwischen allen teilnehmenden Diensten wird durch einen einzelnen Endpunkt (dh den zusammengesetzten Dienst) beschrieben. Die Orchestrierung umfasst die Verwaltung von Transaktionen zwischen einzelnen Diensten. Orchestration verwendet einen zentralisierten Ansatz für die Servicekomposition.

Orchestrierung

Service-Choreografie

Service-Choreografie ist eine globale Beschreibung der teilnehmenden Services, die durch den Austausch von Nachrichten, Interaktionsregeln und Vereinbarungen zwischen zwei oder mehr Endpunkten definiert wird. Die Choreografie verwendet einen dezentralen Ansatz für die Zusammensetzung von Diensten.

Choreographie

Die Choreografie beschreibt die Interaktionen zwischen mehreren Diensten, wobei Orchestrierung die Kontrolle aus Sicht einer Partei darstellt. Dies bedeutet, dass sich eine Choreografie von einer Orchestrierung darin unterscheidet , wo sich die Logik befinden soll, die die Interaktionen zwischen den beteiligten Diensten steuert.


7
Fantastische Bilder, um die beiden zu zeigen! Woher hast du die?
David Mann

6
@ DavidMann Vielen Dank für Ihren Kommentar und bitte stimmen Sie zu, wenn Sie der Meinung sind, dass er für Sie nützlich war. Ich habe diese Diagramme in Visio erstellt und als Inspiration Literatur in der Servicekomposition verwendet. Mir wurde jedoch klar, dass diese Antwort vor zwei Jahren erfolgte, als ich gerade anfing, über die Zusammensetzung von Diensten zu lesen. Ich werde diese Antwort mit Referenzen aktualisieren und die Eigenschaften von beiden erweitern
Andrei

@Andrei: Einfacher geht es nicht.
Anshul Nigam

Ist es sinnvoll, Orchestrierung und Choreografie zu mischen? zB Orchestrierung für den synchronen Kernworkflow, dann aber einige Choreografien, um asynchrone Ereignisse zurück zu den Quellfunktionen (Microservices) zu streamen. In meinem Szenario könnte dieser Ansatz mir ersparen, dass ich Saga / State-Machine- und Kompensationslogik ausführen muss.
Ryan.Bartsch

1
Einige Leser schließen möglicherweise aus Ihrem Orchestrierungsdiagramm, dass Orchestrierung synchrone Aufrufe vom Steuerungsdienst zur Bereitstellung von Diensten bedeutet. Ich möchte klarstellen, dass die Invoke-Reply-Kommunikation auch mit asynchronen Methoden erfolgen kann. über einen Nachrichtenbroker.
Christoph

34

Service-Orchestrierung : Sie stellen mehrere Services nach einer festen Logik zusammen. Diese Logik wird an einer Stelle beschrieben. Sie können sich ein Team von Leuten mit einem Manager vorstellen, der Mikromanagement betreibt. Der Manager sagt genau, was, wann und wer zu tun ist. Die Teammitglieder kümmern sich nicht um das gesamte Ziel des Jobs, der Manager kombiniert die Ergebnisse zu einem einzigen Ergebnis. Ein praktisches Beispiel ist ein BPEL-Prozess. Der BPEL-Prozess enthält die Logik, kann mehrere Dienste aufrufen und ihre Antworten zu einer einzigen Dienstantwort kombinieren.

Service-Choreografie : Die Entscheidungslogik wird ohne zentralen Punkt verteilt. Sie können sich ein Zuhause vorstellen, in dem jeder auf das Gemeinwohl abzielt und proaktiv ohne Mikromanagement arbeitet. Oder Sie können sich einen menschlichen Körper vorstellen, in dem verschiedene Mitglieder voneinander abhängig sind und für das gemeinsame Ziel arbeiten. Ein praktisches Beispiel ist die ereignisgesteuerte Verarbeitung, bei der ein Agent durch ein Ereignis aktiviert wird und seine Arbeit erledigt. Alle Agenten bilden zusammen ein System. Es gibt keine zentralisierte Logik. Choreografiemöglichkeiten können über die Orchestrierung hinausgehen, da sie stärker auf die reale Welt ausgerichtet sind.

Meiner Meinung nach müssen wir nicht viel zwischen diesen beiden unterscheiden, da wir uns auf die Geschäftslogik konzentrieren müssen. Wo ein einzelner logischer Punkt die Arbeit erledigt, führen wir Orchestrierung durch. Wo ein Problem nicht durch eine zentralisierte Logik abgedeckt werden kann, sind wir sowieso zur Choreografie gezwungen. Aus diesem Grund stoßen wir in der IT häufig auf Orchestrierung, während Choreografie eher ein akademisches Konzept und ein Forschungsthema bleibt. Und sehr oft machen wir Choreografie, ohne es wirklich zu wissen, wie in der realen Welt.


21

Dienste können zwischen atomaren Diensten und Diensten, die aus anderen Diensten bestehen, unterschieden werden. Solche Kompositionen werden "Orchestrierung" genannt. Manchmal Workflow, manchmal Geschäftsprozess. Beispielsweise ist BPEL eine Orchestrierungssprache, nennt sich jedoch "Geschäftsprozessausführungssprache".

Es ist nicht erforderlich, dass Dienste hierarchisch zusammengesetzt werden müssen. Das heißt, zwei Dienste können miteinander kommunizieren. Das zwischen ihnen laufende Protokoll heißt "Choreografie". Es können zwei Dienste sein, aber normalerweise sind mehr als zwei Dienste beteiligt. Jeder Dienst in einer Choreografie kann als Orchestrator der Partnerdienste angesehen werden. Jeder an einer Choreografie teilnehmende Dienst kann als Orchestrierung / Workflow / Prozess realisiert werden.

Eine Orchestrierung zeigt das vollständige Verhalten jedes Dienstes, während die Choreografie die Beschreibungen des Schnittstellenverhaltens jedes Dienstes kombiniert.

Ein guter wissenschaftlicher Artikel, der Choreografie, Schnittstellenverhalten, Anbieterverhalten und Orchestrierung unterscheidet, ist der folgende: Dijkman, R. & Dumas, M. Serviceorientiertes Design: Ein Ansatz mit mehreren Blickwinkeln International Journal of Cooperative Information Systems, 2004, 13, 337-368


19

Da der Thread alt ist, aber immer noch für diejenigen schreibt, die hier auf der Suche nach dieser Frage stolpern werden, wie ich es getan habe. Dies ist eine viel diskutierte Frage in der serviceorientierten Architektur (SOA), die für Anfänger viel sauberer erklärt werden muss.

Orchestrierung: Ausführbarer Prozess

  • Wird in privaten Geschäftsprozessen verwendet
  • Ein zentraler Prozess (der ein anderer Webdienst sein kann) übernimmt die Kontrolle über die beteiligten Webdienste und koordiniert die Ausführung verschiedener Vorgänge auf den an dem Vorgang beteiligten Webdiensten
  • Die beteiligten Webdienste "wissen" nicht (und müssen nicht wissen), dass sie an einem Kompositionsprozess beteiligt sind und an einem übergeordneten Geschäftsprozess teilnehmen.
  • Nur der zentrale Koordinator der Orchestrierung ist sich dieses Ziels bewusst, daher wird die Orchestrierung mit expliziten Definitionen der Operationen und der Reihenfolge des Aufrufs von Webdiensten zentralisiert.

Geben Sie hier die Bildbeschreibung ein

Choreografie: Zusammenarbeit zwischen mehreren Parteien

  • Die Choreografie hingegen ist nicht auf einen zentralen Koordinator angewiesen. Vielmehr weiß jeder an der Choreografie beteiligte Webdienst genau, wann er seine Operationen ausführen und mit wem er interagieren muss. Choreografie ist eine gemeinsame Anstrengung, die sich auf den Austausch von Nachrichten in öffentlichen Geschäftsprozessen konzentriert.

  • Alle Teilnehmer an der Choreografie müssen den Geschäftsprozess, die auszuführenden Vorgänge, die auszutauschenden Nachrichten und den Zeitpunkt des Nachrichtenaustauschs kennen.

Geben Sie hier die Bildbeschreibung ein

Choreografie vs. Orchestrierung

  • Unter dem Gesichtspunkt der Erstellung von Webdiensten zur Ausführung von Geschäftsprozessen ist die Orchestrierung ein flexibleres Paradigma und bietet gegenüber der Choreografie die folgenden Vorteile:

  • Die Koordination der Komponentenprozesse wird zentral von einem bekannten Koordinator verwaltet.

  • Webdienste können integriert werden, ohne dass sie wissen, dass sie an einem größeren Geschäftsprozess teilnehmen.

  • Für den Fall, dass Fehler auftreten, können alternative Szenarien eingerichtet werden.

1
Tatsächlich stützt sich die Choreografie normalerweise auf einen zentralen Koordinator - und normalerweise ist dieser Koordinator eine Art verteilter Nachrichtenbroker. Wenn Sie so etwas wie einen Nachrichtenbroker nicht verwenden, werden Ihre Dienste auf sehr unflexible Weise miteinander verbunden, was zu Sprödigkeit und geringer Wiederverwendbarkeit führt.
Rodney P. Barbati

8

Andrei und andere haben gute Arbeit geleistet und erklärt, was Orchestrierung und was Choreografie ist. Für den Softwarearchitekten, der zwischen diesen beiden Alternativen wählt, ist es auch wichtig, sie hinsichtlich unterschiedlicher Qualitäten zu vergleichen.

Orchestrierung plus Choreografie

  • Zuverlässigkeit: Orchestrierungsplattformen bieten integrierte Unterstützung für die Fehlerbehandlung und das Transaktionsmanagement (Kompensation von Transaktionen). In der Choreografie sind kundenspezifische Workflows und Fehlerbehandlungen tendenziell fehleranfälliger.
  • Modifizierbarkeit: Das Erstellen und Ändern von Prozessworkflows und komplexen Servicezusammensetzungen ist mit den visuellen BPM-Tools auf Orchestrierungsplattformen einfacher.

Choreografie plus Orchestrierung

  • Leistung: Die Orchestrierung verursacht aufgrund der Interpretation des Workflow-Skripts und der zusätzlichen Ebene der Orchestrierungsplattform selbst einen Leistungsaufwand.

  • Kosten: Für die Choreografie ist keine zusätzliche Middleware oder Sprache erforderlich, die mit Lernkurven und Governance-Aufwand verbunden ist.

BEARBEITEN

Eine Orchestrierungslösung kann einen SPOF einführen, wenn das Orchestrator-Element keinen Mechanismus für hohe Verfügbarkeit verwendet. Vielen Dank an @Deepak por, der in einem Kommentar darauf hinweist.


3
Außer Choreografie erfordert zusätzliche Middleware. Anforderungen (Aufgaben) müssen an verschiedene Knoten angepasst werden. Anschließend wird die Choreografie eingesetzt, inszeniert, überwacht und angepasst. Für all diese Verwaltung sind Tools erforderlich, die normalerweise von einer Middleware bereitgestellt werden.
Andrei

1
Bringt Orchestrierung nicht den Nachteil eines einzelnen Fehlerpunkts mit sich, was bei der Choreografie nicht der Fall ist?
Deepak


6

Orchestrierung ist nützlich, wenn Sie die Kontrolle über alle Akteure in einem Prozess haben - wenn sie sich alle in einem Kontrollbereich befinden und Sie den Ablauf der Aktivitäten bestimmen können. Dies ist natürlich am häufigsten der Fall, wenn Sie einen Geschäftsprozess angeben, der in einer Organisation ausgeführt wird, über die Sie die Kontrolle haben.

Mit der Choreografie kann festgelegt werden, wie zwei oder mehr Parteien - von denen keine die Prozesse der anderen Parteien kontrolliert oder möglicherweise sichtbar macht - ihre Aktivitäten und Prozesse koordinieren können, um Informationen und Werte auszutauschen. Verwenden Sie Choreografie, wenn eine Koordination zwischen Kontroll- / Sichtbarkeitsbereichen erforderlich ist. Sie können sich Choreografie in einem einfachen Szenario wie ein Netzwerkprotokoll vorstellen. Es schreibt akzeptable Muster von Anfragen und Antworten zwischen Parteien vor.


5

Eine andere Sichtweise auf Service Orchestration vs. Choreography:

- Service Orchestration: Rund um eine Geschäftsdomäne.
- Service-Choreografie: Unter mehreren Geschäftsbereichen.


1

In der Orchestrierung gibt es einen Dirigenten und Instrumentenspieler. Die Spieler spielen nach dem Verhalten des Dirigenten. Wenn der Dirigent ersetzt wird, ist der harmonische Ausdruck unterschiedlich, dh es handelt sich immer noch um dasselbe Spiel (Dienst), jedoch mit einem anderen Ergebnis. Um beispielsweise einen Vorschlag für eine finanzielle Vereinbarung zu unterbreiten, fordert der Orchestrierungsdienst jeden Spieler (Unternehmen oder Versorgungsunternehmen, z. B. Bonitätsprüfung) auf, gemäß der Vorlage des Dirigenten (Geschäft) zu spielen (Ergebnisse zurückzugeben oder das Spiel anzupassen / zu aktualisieren) Regeln). In der Choreografie gibt es einen Choreografen und Gruppen von Tänzern. Choreografie ist eine Richtung, aber jede Gruppe von Tänzern ist autonom in der Verwirklichung dieser Richtung.


-1

Eine Orchestrierung verbindet normalerweise Dienste niedrigerer Ebene. Es ist wie ein Vermittler . Eine Choreografie hilft, die Kopplung noch weiter zu reduzieren. Ich habe dies hier ausführlicher erklärt .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.