Orchestrazione vs. Coreografia


182

Quali sono le differenze tra orchestrazione del servizio e coreografia del servizio da un punto di vista all'interno dell'organizzazione.

Risposte:


334

Tecnologie di base come (XML, SOAP, WSDL) forniscono mezzi per descrivere, localizzare e invocare servizi come entità a sé stante. Tuttavia, queste tecnologie non forniscono un ricco dettaglio comportamentale sul ruolo del servizio in una collaborazione più complessa. Questa collaborazione include una sequenza di attività e relazioni tra attività che costruiscono il processo aziendale. Esistono due modi per creare questo processo: orchestrazione del servizio e coreografia del servizio.

Orchestrazione di servizio

L'orchestrazione del servizio rappresenta un singolo processo aziendale eseguibile centralizzato (l'orchestratore) che coordina l'interazione tra i diversi servizi. L'orchestratore è responsabile dell'invocazione e della combinazione dei servizi.

Le relazioni tra tutti i servizi partecipanti sono descritte da un singolo endpoint (ovvero il servizio composito). L'orchestrazione include la gestione delle transazioni tra singoli servizi. L'orchestrazione utilizza un approccio centralizzato per la composizione del servizio.

Orchestrazione

Coreografia di servizio

La coreografia del servizio è una descrizione globale dei servizi partecipanti, definita dallo scambio di messaggi, dalle regole di interazione e dagli accordi tra due o più endpoint. La coreografia utilizza un approccio decentralizzato per la composizione del servizio.

Coreografia

La coreografia descrive le interazioni tra più servizi, in cui l'orchestrazione rappresenta il controllo dalla prospettiva di una parte. Ciò significa che una coreografia differisce da un'orchestrazione rispetto a dove dovrebbe risiedere la logica che controlla le interazioni tra i servizi coinvolti.


7
Immagini fantastiche per mostrare i due! Dove li hai presi?
David Mann,

6
@DavidMann Mille grazie per il tuo commento e per favore vota se ritieni che ti sia stato utile. Ho realizzato questi diagrammi in Visio e come ispirazione ho usato un po 'di letteratura nella composizione del servizio. Tuttavia, mi sono reso conto che questa risposta era 2 anni fa quando ho appena iniziato a leggere sulla composizione del servizio. Aggiornerò questa risposta con riferimenti ed espanderò le proprietà di entrambi
Andrei,

@Andrei: non avrebbe potuto essere più semplice di così.
Anshul Nigam,

È ragionevole mescolare orchestrazione e coreografia? ad es. disporre di un'orchestrazione per il flusso di lavoro sincrono di base, ma poi alcune coreografie per trasmettere gli eventi asincroni alle funzionalità di origine (microservizi). Nel mio scenario, questo approccio potrebbe risparmiarmi a dover fare saga / macchina a stati e logica di compensazione.
Ryan.Bartsch,

1
Alcuni lettori potrebbero dedurre dal diagramma dell'orchestrazione che orchestrazione significa invocazioni sincrone dal servizio di controllo alla fornitura di servizi. Vorrei chiarire che la comunicazione Invoke-Reply può anche essere realizzata utilizzando metodi asincroni, incl. tramite un broker di messaggi.
Christoph,

34

Orchestrazione di servizi : si mettono insieme diversi servizi secondo una logica fissa. Questa logica è descritta in un unico posto. Puoi immaginare una squadra di persone con un manager che fa micro-gestione. Il manager dice in modo preciso cosa, quando e chi dovrebbe fare. I membri del team non si occupano dell'intero obiettivo del lavoro, il manager combina i risultati in un unico risultato. Un esempio pratico è un processo BPEL. Il processo BPEL contiene la logica, può invocare diversi servizi e combinare le loro risposte in una singola risposta di servizio.

Coreografia del servizio : la logica decisionale è distribuita, senza punto centralizzato. Puoi immaginare una casa, dove tutti mirano al bene comune e lavorano in modo proattivo senza micro-gestione. Oppure puoi immaginare un corpo umano, in cui membri diversi sono interdipendenti e lavorano per l'obiettivo comune. Un esempio pratico è l'elaborazione basata su eventi, in cui un agente viene attivato da un evento e fa il suo lavoro. Tutti gli agenti creano un sistema insieme. Non esiste una logica centralizzata. Le possibilità della coreografia possono andare oltre l'orchestrazione poiché è più allineata con il mondo reale.

La mia opinione è che non abbiamo bisogno di distinguere molto tra questi due, in quanto dobbiamo concentrarci sulla logica aziendale. Laddove un singolo punto logico svolge il lavoro, facciamo l'orchestrazione. Laddove un problema non può essere coperto da una logica centralizzata, siamo comunque costretti alla coreografia. Questo è il motivo per cui spesso ci imbattiamo nell'orchestrazione dell'IT, mentre la coreografia rimane più un concetto accademico e un argomento di ricerca. E molto spesso facciamo coreografie senza saperlo davvero, come nel mondo reale.


21

I servizi possono essere distinti tra servizi atomici e servizi composti da altri servizi. Tali composizioni sono chiamate "orchestrazione". A volte flusso di lavoro, a volte processo aziendale. Ad esempio, BPEL è un linguaggio di orchestrazione, ma si definisce "linguaggio di esecuzione dei processi aziendali".

Non è necessario che i servizi debbano essere composti gerarchicamente. Ciò significa che due servizi possono parlare tra loro. Il protocollo che corre tra loro si chiama "coreografia". Possono essere due servizi, ma di solito sono coinvolti più di due servizi. Ogni servizio in una coreografia può essere visto come un orchestratore dei servizi del partner. Ogni servizio che prende parte a una coreografia può essere realizzato come orchestrazione / flusso di lavoro / processo.

Un'orchestrazione mostra il comportamento completo di ciascun servizio mentre la coreografia combina le descrizioni del comportamento dell'interfaccia di ciascun servizio.

Un buon articolo scientifico che distingue la coreografia, il comportamento dell'interfaccia, il comportamento del provider e l'orchestrazione è il seguente: Dijkman, R. & Dumas, M. Design orientato ai servizi: un approccio multi-punto di vista International Journal of Cooperative Information Systems, 2004, 13, 337-368


19

Dato che il thread è vecchio, ma ancora scrivendo ad esso per coloro che sono inciampati qui alla ricerca di questa domanda come ho fatto io. Questa è una domanda molto dibattuta nell'architettura orientata ai servizi (SOA) che richiede una spiegazione molto più chiara per i principianti.

Orchestrazione: processo eseguibile

  • Utilizzato nei processi aziendali privati
  • Un processo centrale (che può essere un altro servizio Web) prende il controllo dei servizi Web coinvolti e coordina l'esecuzione di diverse operazioni sui servizi Web coinvolti nell'operazione
  • I servizi Web coinvolti non "sanno" (e non hanno bisogno di sapere) di essere coinvolti in un processo di composizione e di prendere parte a un processo aziendale di livello superiore.
  • Solo il coordinatore centrale dell'orchestrazione è a conoscenza di questo obiettivo, quindi l'orchestrazione è centralizzata con definizioni esplicite delle operazioni e l'ordine di invocazione dei servizi Web.

inserisci qui la descrizione dell'immagine

Coreografia: collaborazione multipartitica

  • La coreografia, al contrario, non si basa su un coordinatore centrale. Piuttosto, ogni servizio Web coinvolto nella coreografia sa esattamente quando eseguire le sue operazioni e con chi interagire. La coreografia è uno sforzo collaborativo incentrato sullo scambio di messaggi nei processi aziendali pubblici.

  • Tutti i partecipanti alla coreografia devono essere consapevoli del processo aziendale, delle operazioni da eseguire, dei messaggi da scambiare e dei tempi degli scambi di messaggi.

inserisci qui la descrizione dell'immagine

Coreografia vs. Orchestrazione

  • Dal punto di vista della composizione dei servizi Web per l'esecuzione dei processi aziendali, l'orchestrazione è un paradigma più flessibile e presenta i seguenti vantaggi rispetto alla coreografia:

  • Il coordinamento dei processi dei componenti è gestito centralmente da un coordinatore noto.

  • I servizi Web possono essere incorporati senza essere consapevoli del fatto che stanno prendendo parte a un processo aziendale più ampio.

  • È possibile creare scenari alternativi in ​​caso di guasti.

1
In realtà, la coreografia di solito si basa su un coordinatore centrale - e di solito quel coordinatore è una qualche forma di broker di messaggi distribuiti. Non usare qualcosa come un broker di messaggi collegherebbe i tuoi servizi in modi molto inflessibili, portando a fragilità e bassa riusabilità.
Rodney P. Barbati,

8

Andrei e altri hanno fatto un buon lavoro spiegando cos'è l'orchestrazione e cos'è la coreografia. Per l'architetto del software che sceglie tra queste due alternative, è anche importante confrontarle rispetto alle diverse qualità.

Vantaggi dell'orchestrazione sulla coreografia

  • Affidabilità: le piattaforme di orchestrazione hanno il supporto integrato per la gestione degli errori e la gestione delle transazioni (compensazione delle transazioni). Nella coreografia, il flusso di lavoro sviluppato su misura e la gestione degli errori tende ad essere più incline agli errori.
  • Modificabilità: la creazione e la modifica di flussi di lavoro di processo e composizioni di servizi complessi è più semplice negli strumenti di BPM visivi presenti nelle piattaforme di orchestrazione.

La coreografia va oltre l'orchestrazione

  • Prestazioni: l' orchestrazione comporta un sovraccarico di prestazioni a causa dell'interpretazione degli script del flusso di lavoro e del livello aggiuntivo della piattaforma di orchestrazione stessa.

  • Costo: la coreografia non richiede middleware o lingua aggiuntivi, che hanno curve di apprendimento e oneri di governance associati.

MODIFICARE

Una soluzione di orchestrazione potrebbe introdurre uno SPOF se l'elemento dell'orchestratore non utilizza un meccanismo per l'alta disponibilità. Grazie @Deepak per averlo sottolineato in un commento.


3
Tranne la coreografia richiede middleware aggiuntivo. I requisiti (attività) devono essere abbinati a nodi diversi. Successivamente la coreografia viene distribuita, messa in atto, monitorata e adattata. Tutta questa gestione richiede strumenti che sono generalmente forniti da un middleware.
Andrei,

1
L'orchestrazione non porta uno svantaggio di un singolo punto di fallimento, cosa che non è il caso della coreografia?
Deepak


6

L'orchestrazione è utile quando hai il controllo su tutti gli attori in un processo, quando sono tutti in un dominio di controllo e puoi dettare il flusso delle attività. Questo è ovviamente il più delle volte quando si specifica un processo aziendale che verrà attuato all'interno di un'organizzazione su cui si ha il controllo.

La coreografia è un modo per specificare come due o più parti - nessuna delle quali abbia alcun controllo sui processi delle altre parti, o forse qualsiasi visibilità di tali processi - possano coordinare le loro attività e processi per condividere informazioni e valore. Usa la coreografia quando è richiesto il coordinamento tra domini di controllo / visibilità. Puoi pensare alla coreografia, in uno scenario semplice, come a un protocollo di rete. Stabilisce schemi accettabili di richieste e risposte tra le parti.


5

Un altro modo di guardare Service Orchestration vs. Coreografia:

- Service Orchestration: Around a Business Domain.
- Coreografia di servizio: tra più domini aziendali.


1

Nell'orchestrazione c'è un direttore e ci sono musicisti. I giocatori giocano in base a come conduce il conduttore. Se il conduttore viene sostituito, l'espressione armonica sarà diversa, ovvero sarà sempre lo stesso gioco (servizio) ma con un risultato diverso. Ad esempio, per fornire una proposta di accordo finanziario, il servizio di orchestrazione condurrà chiedendo (invocando) a ciascun giocatore (entità o servizio di utilità, ad esempio controllo del credito) di giocare (restituire risultati o regolare / aggiornare la propria esecuzione) in base al modello del conduttore (attività commerciale regole). Nella coreografia c'è un coreografo e ci sono gruppi di ballerini. La coreografia è una direzione, ma ogni gruppo di ballerini è autonomo su come realizzare quella direzione.


-1

Un'orchestrazione collega in genere servizi di livello inferiore. È come un mediatore . Una coreografia aiuta a ridurre ulteriormente l'accoppiamento. Ho spiegato questo in modo più dettagliato qui .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.