Réponses:
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.
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.
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.
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.
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.
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
É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
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.
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.
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
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.
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.
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 )
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.
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é.
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.