Respuestas:
Las tecnologías básicas como (XML, SOAP, WSDL) proporcionan medios para describir, ubicar e invocar servicios como una entidad por derecho propio. Sin embargo, estas tecnologías no brindan un rico detalle de comportamiento sobre el papel del servicio en una colaboración más compleja. Esta colaboración incluye una secuencia de actividades y relaciones entre actividades, que construyen el proceso de negocio. Hay dos formas de construir este proceso: orquestación de servicios y coreografía de servicios.
La orquestación de servicios representa un único proceso comercial ejecutable centralizado (el orquestador) que coordina la interacción entre los diferentes servicios. El orquestador es responsable de invocar y combinar los servicios.
La relación entre todos los servicios participantes se describe mediante un único punto final (es decir, el servicio compuesto). La orquestación incluye la gestión de transacciones entre servicios individuales. La orquestación emplea un enfoque centralizado para la composición del servicio.
La coreografía de servicios es una descripción global de los servicios participantes, que se define mediante el intercambio de mensajes, reglas de interacción y acuerdos entre dos o más puntos finales. La coreografía emplea un enfoque descentralizado para la composición del servicio.
La coreografía describe las interacciones entre múltiples servicios, donde la orquestación representa el control desde la perspectiva de una de las partes. Esto significa que una coreografía difiere de una orquestación con respecto a dónde debería residir la lógica que controla las interacciones entre los servicios involucrados.
Servicio de orquestación : reúne varios servicios mediante una lógica fija. Esta lógica se describe en un solo lugar. Puedes imaginar un equipo de personas con un gerente haciendo microgestión. El gerente le dice con precisión qué, cuándo y quién debe hacer. Los miembros del equipo no se preocupan por el objetivo completo del trabajo, el gerente combina los resultados en una sola entrega. Un ejemplo práctico es un proceso BPEL. El proceso BPEL contiene la lógica, puede invocar varios servicios y combinar sus respuestas en una única respuesta de servicio.
Coreografía de servicio : la lógica de decisión se distribuye, sin punto centralizado. Puede imaginar una casa, donde todos buscan el bien común y trabajan de manera proactiva sin microgestión. O puede imaginar un cuerpo humano, donde los diferentes miembros son interdependientes y trabajan para el objetivo común. Un ejemplo práctico es el procesamiento impulsado por eventos, donde un agente es activado por un evento y hace su trabajo. Todos los agentes hacen un sistema juntos. No hay lógica centralizada. Las posibilidades de la coreografía pueden ir más allá de la orquestación, ya que está más alineada con el mundo real.
Mi opinión es que no necesitamos distinguir mucho entre estos dos, ya que debemos centrarnos en la lógica de negocios. Cuando un solo punto de lógica hace el trabajo, hacemos orquestación. Cuando un problema no puede ser cubierto por una lógica centralizada, nos vemos obligados a la coreografía de todos modos. Es por eso que a menudo nos encontramos con la orquestación en TI, mientras que la coreografía sigue siendo más un concepto académico y un tema de investigación. Y muy a menudo hacemos coreografías sin saberlo realmente, como en el mundo real.
Los servicios se pueden distinguir entre servicios atómicos y servicios compuestos de otros servicios. Tales composiciones se llaman "orquestación". A veces flujo de trabajo, a veces proceso de negocio. Por ejemplo, BPEL es un lenguaje de orquestación, pero se llama a sí mismo "lenguaje de ejecución de procesos de negocios".
No hay ningún requisito de que los servicios deban estar compuestos jerárquicamente. Eso significa que dos servicios pueden hablar entre sí. El protocolo que se ejecuta entre ellos se llama "coreografía". Pueden ser dos servicios, pero generalmente hay más de dos servicios involucrados. Cada servicio en una coreografía puede verse como el orquestador de los servicios asociados. Cada servicio que participa en una coreografía puede realizarse como orquestación / flujo de trabajo / proceso.
Una orquestación muestra el comportamiento completo de cada servicio, mientras que la coreografía combina las descripciones de comportamiento de la interfaz de cada servicio.
Un buen artículo científico que distingue la coreografía, el comportamiento de la interfaz, el comportamiento del proveedor y la orquestación es el siguiente: Dijkman, R. & Dumas, M. Diseño orientado a servicios: un enfoque de múltiples puntos de vista International Journal of Cooperative Information Systems, 2004, 13, 337-368
Dado que el hilo es viejo, pero aún está escrito para aquellos que tropezaron aquí en busca de esta pregunta como lo hice yo. Esta es una pregunta muy debatida en la arquitectura orientada a servicios (SOA) que necesita una explicación mucho más limpia para los principiantes.
Orquestación: proceso ejecutable
Coreografía: colaboración multipartidista
La coreografía, por el contrario, no depende de un coordinador central. Más bien, cada servicio web involucrado en la coreografía sabe exactamente cuándo ejecutar sus operaciones y con quién interactuar. La coreografía es un esfuerzo de colaboración centrado en el intercambio de mensajes en los procesos comerciales públicos.
Todos los participantes en la coreografía deben conocer el proceso comercial, las operaciones a ejecutar, los mensajes a intercambiar y el momento de los intercambios de mensajes.
Coreografía vs. Orquestación
Desde la perspectiva de componer servicios web para ejecutar procesos de negocios, la orquestación es un paradigma más flexible y tiene las siguientes ventajas sobre la coreografía:
La coordinación de los procesos de los componentes es administrada centralmente por un coordinador conocido.
Los servicios web se pueden incorporar sin que sepan que están participando en un proceso comercial más amplio.
Andrei y otros hicieron un buen trabajo explicando qué es la orquestación y qué es la coreografía. Para el arquitecto de software que elige entre estas dos alternativas, también es importante compararlas con respecto a las diferentes cualidades.
Ventajas de la orquestación sobre la coreografía
Las ventajas de la coreografía sobre la orquestación
Rendimiento: la orquestación conlleva una sobrecarga de rendimiento debido a la interpretación del script de flujo de trabajo y la capa adicional de la plataforma de orquestación.
Costo: la coreografía no requiere middleware o lenguaje adicional, que tienen curvas de aprendizaje asociadas y una carga de gobernanza.
Una solución de orquestación podría introducir un SPOF si el elemento del orquestador no emplea un mecanismo para alta disponibilidad. Gracias @Deepak por señalar esto en un comentario.
Yo diría que la coreografía es adecuada internamente para organizaciones altamente descentralizadas. No necesitará un ejecutor central de procesos comerciales. Esto facilita el crecimiento y desarrollo independiente de cada una de las subunidades de la organización.
(Me suscribo a esta interpretación de la pregunta de orquestación vs. coreografía: http://geekexplains.blogspot.com/2008/07/ways-of-combining-web-services.html )
La orquestación es útil cuando tienes control sobre todos los actores en un proceso, cuando todos están en un dominio de control y puedes dictar el flujo de actividades. Por supuesto, esto ocurre con mayor frecuencia cuando especifica un proceso de negocio que se implementará dentro de una organización sobre la que tiene control.
La coreografía es una forma de especificar cómo dos o más partes, ninguna de las cuales tiene control sobre los procesos de las otras partes, o tal vez cualquier visibilidad de esos procesos, puede coordinar sus actividades y procesos para compartir información y valor. Utilice la coreografía cuando se requiera coordinación entre dominios de control / visibilidad. Puede pensar en la coreografía, en un escenario simple, como un protocolo de red. Dicta patrones aceptables de solicitudes y respuestas entre las partes.
Otra forma de ver Service Orchestration vs. Coreografía:
- Orquestación de servicios: alrededor de un dominio empresarial.
- Coreografía de servicios: entre múltiples dominios comerciales.
En orquestación, hay un director y hay intérpretes de instrumentos. Los jugadores juegan de acuerdo a cómo conduce el conductor. Si se reemplaza el conductor, la expresión armónica será diferente, es decir, seguirá siendo la misma jugada (servicio) pero con un resultado diferente. Por ejemplo, para proporcionar una propuesta de acuerdo financiero, el servicio de orquestación se llevará a cabo pidiendo (invocando) a cada jugador (entidad o servicio público, por ejemplo, verificación de crédito) que juegue (devuelva resultados o ajuste / actualice su juego) de acuerdo con la plantilla del director (negocio reglas). En coreografía, hay un coreógrafo y hay grupos de bailarines. La coreografía es una dirección, pero cada grupo de bailarines es autónomo en cómo realizar esa dirección.