Orchestration vs chorégraphie

182

Quelles sont les différences entre l'orchestration de services et la chorégraphie de services d'un point de vue intra-organisationnel.

PetrosB
la source

Réponses:

334

Les technologies de base telles que (XML, SOAP, WSDL) fournissent des moyens de décrire, localiser et invoquer des services en tant qu'entité à part entière. Cependant, ces technologies ne donnent pas de détails comportementaux riches sur le rôle du service dans une collaboration plus complexe. Cette collaboration comprend une séquence d'activités et de relations entre les activités, qui construisent le processus métier. Il existe deux façons de créer ce processus: l'orchestration des services et la chorégraphie des services.

Orchestration des services

L'orchestration de services représente un seul processus métier exécutable centralisé (l'orchestrateur) qui coordonne l'interaction entre différents services. L'orchestrateur est responsable de l'appel et de la combinaison des services.

La relation entre tous les services participants est décrite par un seul point d'extrémité (c'est-à-dire le service composite). L'orchestration comprend la gestion des transactions entre les services individuels. L'orchestration utilise une approche centralisée pour la composition des services.

Orchestration

Chorégraphie de service

La chorégraphie des services est une description globale des services participants, qui est définie par l'échange de messages, des règles d'interaction et des accords entre deux ou plusieurs points d'extrémité. La chorégraphie utilise une approche décentralisée pour la composition des services.

Chorégraphie

La chorégraphie décrit les interactions entre plusieurs services, où l'orchestration représente le contrôle du point de vue d'une partie. Cela signifie qu'une chorégraphie diffère d'une orchestration en ce qui concerne l'emplacement de la logique qui contrôle les interactions entre les services impliqués.

Andrei
la source
7
Des images fantastiques pour montrer les deux! Où les as tu eu?
David Mann
6
@DavidMann Merci beaucoup pour votre commentaire, et merci de voter si vous pensez qu'il vous a été utile. J'ai créé ces diagrammes dans Visio et, comme source d'inspiration, j'ai utilisé de la littérature sur la composition de services. Cependant, j'ai réalisé que cette réponse remonte à 2 ans lorsque je viens de commencer à lire sur la composition des services. Je mettrai à jour cette réponse avec des références et développerai les propriétés des deux
Andrei
@Andrei: Cela n'aurait pas pu être plus simple que ça.
Anshul Nigam
Est-il raisonnable de mélanger orchestration et chorégraphie? par exemple avoir une orchestration pour le flux de travail synchrone principal, mais ensuite une certaine chorégraphie pour diffuser les événements asynchrones vers les capacités source (microservices). Dans mon scénario, cette approche pourrait m'éviter d'avoir à faire une logique de saga / machine à états et de compensation.
Ryan.Bartsch
1
Certains lecteurs peuvent déduire de votre diagramme d'orchestration que l'orchestration signifie des appels synchrones du service de contrôle à la fourniture de services. Je tiens à préciser que la communication Invoke-Reply peut également être réalisée en utilisant des méthodes asynchrones, incl. via un courtier de messages.
Christoph le
34

Orchestration de services : vous assemblez plusieurs services par une logique fixe. Cette logique est décrite à un seul endroit. Vous pouvez imaginer une équipe de personnes avec un manager faisant de la micro-gestion. Le responsable dit précisément quoi, quand et qui doit faire. Les membres de l'équipe ne se soucient pas de l'objectif entier du travail, le gestionnaire combine les résultats en un seul livrable. Un exemple pratique est un processus BPEL. Le processus BPEL contient la logique, peut appeler plusieurs services et combiner leurs réponses en une seule réponse de service.

Chorégraphie de service : la logique de décision est distribuée, sans point centralisé. Vous pouvez imaginer une maison, où tout le monde vise le bien commun et travaille de manière proactive sans micro-gestion. Ou vous pouvez imaginer un corps humain, où différents membres sont interdépendants et travaillent pour un objectif commun. Un exemple pratique est le traitement événementiel, dans lequel un agent est activé par un événement et fait son travail. Tous les agents font un système ensemble. Il n'y a pas de logique centralisée. Les possibilités de chorégraphie peuvent aller plus loin au-delà de l'orchestration car elles sont plus alignées sur le monde réel.

Mon opinion est que nous n'avons pas besoin de faire beaucoup de distinction entre les deux, car nous devons nous concentrer sur la logique métier. Là où un seul point de logique fait le travail, nous faisons l'orchestration. Là où un problème ne peut pas être couvert par une logique centralisée, nous sommes de toute façon obligés de chorégraphier. C'est pourquoi on rencontre souvent l'orchestration en informatique, alors que la chorégraphie reste plus un concept académique et un sujet de recherche. Et très souvent, nous faisons des chorégraphies sans le savoir, comme dans le monde réel.

KarelHusa
la source
21

Les services peuvent être distingués entre les services atomiques et les services composés d'autres services. De telles compositions sont appelées "orchestration". Parfois flux de travail, parfois processus métier. Par exemple, BPEL est un langage d'orchestration, mais s'appelle lui-même «langage d'exécution de processus métier».

Il n'est pas nécessaire que les services soient composés de manière hiérarchique. Cela signifie que deux services peuvent se parler. Le protocole qui court entre eux est appelé "chorégraphie". Il peut s'agir de deux services, mais généralement, il y a plus de deux services impliqués. Chaque service d'une chorégraphie peut être vu comme l'orchestrateur des services partenaires. Chaque prestation participant à une chorégraphie peut être réalisée sous forme d'orchestration / workflow / process.

Une orchestration montre le comportement complet de chaque service tandis que la chorégraphie combine les descriptions de comportement d'interface de chaque service.

Un bon article scientifique distinguant la chorégraphie, le comportement d'interface, le comportement du fournisseur et l'orchestration est le suivant: Dijkman, R. & Dumas, M. Design orienté service: une approche multi-points de vue International Journal of Cooperative Information Systems, 2004, 13, 337-368

Koppor
la source
19

Étant donné que le fil est vieux mais y écrit encore pour ceux qui trébucheront ici à la recherche de cette question comme je l'ai fait. C'est une question très débattue dans l' architecture orientée services (SOA) qui nécessite une explication beaucoup plus claire pour les débutants.

Orchestration: processus exécutable

  • Utilisé dans les processus commerciaux privés
  • Un processus central (qui peut être un autre service Web) prend le contrôle des services Web impliqués et coordonne l'exécution des différentes opérations sur les services Web impliqués dans l'opération
  • Les services Web impliqués ne «savent» pas (et n'ont pas besoin de savoir) qu'ils sont impliqués dans un processus de composition et qu'ils participent à un processus métier de plus haut niveau.
  • Seul le coordinateur central de l'orchestration est conscient de cet objectif, l'orchestration est donc centralisée avec des définitions explicites des opérations et de l'ordre d'appel des services Web.

entrez la description de l'image ici

Chorégraphie: collaboration multipartite

  • La chorégraphie, en revanche, ne repose pas sur un coordinateur central. Au contraire, chaque service Web impliqué dans la chorégraphie sait exactement quand exécuter ses opérations et avec qui interagir. La chorégraphie est un effort collaboratif axé sur l'échange de messages dans les processus commerciaux publics.

  • Tous les participants à la chorégraphie doivent être conscients du processus métier, des opérations à exécuter, des messages à échanger et du calendrier des échanges de messages.

entrez la description de l'image ici

Chorégraphie vs orchestration

  • Du point de vue de la composition de services Web pour exécuter des processus métier, l'orchestration est un paradigme plus flexible et présente les avantages suivants par rapport à la chorégraphie:

  • La coordination des processus des composants est gérée de manière centralisée par un coordinateur connu.

  • Les services Web peuvent être incorporés sans qu'ils sachent qu'ils participent à un processus métier plus large.

  • Des scénarios alternatifs peuvent être mis en place en cas de pannes.
Cyclotron3x3
la source
1
En fait, la chorégraphie repose généralement sur un coordinateur central - et généralement ce coordinateur est une forme de courtier de messages distribués. Ne pas utiliser quelque chose comme un courtier de messages lierait vos services entre eux de manière très rigide, ce qui entraînerait une fragilité et une faible réutilisabilité.
Rodney P. Barbati
8

Andrei et d'autres ont fait du bon travail en expliquant ce qu'est l'orchestration et ce qu'est la chorégraphie. Pour l'architecte logiciel choisissant entre ces deux alternatives, il est également important de les comparer par rapport à différentes qualités.

Avantages de l'orchestration par rapport à la chorégraphie

  • Fiabilité: les plates-formes d'orchestration ont un support intégré pour la gestion des erreurs et la gestion des transactions (transactions de compensation). Dans la chorégraphie, le flux de travail développé sur mesure et la gestion des erreurs ont tendance à être plus sujets aux erreurs.
  • Modifiabilité: la création et la modification de flux de travail de processus et de compositions de services complexes sont plus faciles dans les outils BPM visuels des plates-formes d'orchestration.

Chorégraphie plus que l'orchestration

  • Performances: l' orchestration entraîne une surcharge de performances en raison de l'interprétation des scripts de flux de travail et de la couche supplémentaire de la plate-forme d'orchestration elle-même.

  • Coût: La chorégraphie ne nécessite pas de middleware ou de langage supplémentaire, qui ont des courbes d'apprentissage et une charge de gouvernance associées.

ÉDITER

Une solution d'orchestration peut introduire un SPOF si l'élément orchestrateur n'emploie pas de mécanisme de haute disponibilité. Merci @Deepak pour l'avoir signalé dans un commentaire.

Paulo Merson
la source
3
Sauf que la chorégraphie nécessite un middleware supplémentaire. Les exigences (tâches) doivent être adaptées à différents nœuds. Ensuite, la chorégraphie est déployée, mise en scène, suivie et adaptée. Toute cette gestion nécessite des outils qui sont généralement fournis par un middleware.
Andrei
1
L'orchestration n'apporte-t-elle pas un inconvénient de point de défaillance unique ce qui n'est pas le cas de la chorégraphie?
Deepak le
6

Je dirais que la chorégraphie convient bien en interne aux organisations hautement décentralisées. Vous n'aurez pas besoin d'un exécuteur central de processus métier. Cela facilite la croissance et le développement indépendants de chacune des sous-unités de l'organisation.

(Je souscris à cette question d'interprétation de l'orchestration vs chorégraphie: http://geekexplains.blogspot.com/2008/07/ways-of-combining-web-services.html )

Danijel Arsenovski
la source
6

L'orchestration est utile lorsque vous contrôlez tous les acteurs d'un processus - lorsqu'ils sont tous dans un domaine de contrôle et que vous pouvez dicter le flux des activités. C'est bien sûr le plus souvent lorsque vous spécifiez un processus métier qui sera mis en œuvre au sein d'une organisation sur laquelle vous avez le contrôle.

La chorégraphie est un moyen de spécifier comment deux ou plusieurs parties - dont aucune n'a aucun contrôle sur les processus des autres parties, ou peut-être une visibilité de ces processus - peuvent coordonner leurs activités et processus pour partager des informations et de la valeur. Utilisez la chorégraphie lorsque la coordination entre les domaines de contrôle / visibilité est requise. Vous pouvez penser à la chorégraphie, dans un scénario simple, comme à un protocole réseau. Il dicte des modèles acceptables de demandes et de réponses entre les parties.

Peter Piper
la source
5

Une autre façon de voir l'orchestration de service par rapport à la chorégraphie:

- Orchestration de services: autour d'un domaine d'activité.
- Chorégraphie de service: parmi plusieurs domaines d'activité.

Michael Qin
la source
1

Dans l'orchestration, il y a un chef d'orchestre et des musiciens d'instruments. Les joueurs jouent en fonction de la conduite du chef d'orchestre. Si le conducteur est remplacé, l'expression harmonique sera différente c'est-à-dire qu'il s'agit toujours du même jeu (service) mais avec un résultat différent. Par exemple, pour fournir une proposition d'arrangement financier, le service d'orchestration effectuera en demandant (invoquant) chaque joueur (entité ou service public, par exemple, vérification de crédit) de jouer (renvoyer les résultats ou ajuster / mettre à jour son jeu) selon le modèle du chef d'orchestre (entreprise règles). En chorégraphie, il y a un chorégraphe et des groupes de danseurs. La chorégraphie est une direction, mais chaque groupe de danseurs est autonome dans la manière de réaliser cette direction.

Fibre
la source
-1

Une orchestration relie généralement des services de niveau inférieur. C'est comme un médiateur . Une chorégraphie permet de réduire encore davantage le couplage. J'ai expliqué cela plus en détail ici .

ottodidakt
la source