Orquestación vs. Coreografía

182

¿Cuáles son las diferencias entre la orquestación de servicios y la coreografía de servicios desde el punto de vista intraorganizacional?

PetrosB
fuente

Respuestas:

334

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.

Servicio de orquestación

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.

Orquestación

Servicio de coreografía

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.

Coreografía

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.

Andrei
fuente
77
¡Imágenes fantásticas para mostrar a los dos! ¿Dónde los conseguiste?
David Mann
66
@DavidMann Muchas gracias por tu comentario, y vota si crees que fue útil para ti. Hice estos diagramas en Visio, y como inspiración usé algo de literatura en la composición de servicios. Sin embargo, me di cuenta de que esta respuesta fue hace 2 años cuando comencé a leer sobre la composición del servicio. Actualizaré esta respuesta con referencias y ampliaré las propiedades de ambos
Andrei,
@Andrei: No podría haber sido más simple que esto.
Anshul Nigam
¿Es razonable mezclar orquestación y coreografía? p. ej., orquestar el flujo de trabajo síncrono central, pero luego algunas coreografías para transmitir eventos asíncronos a las capacidades de origen (microservicios). En mi escenario, este enfoque podría ahorrarme tener que hacer una saga / máquina de estado y lógica de compensación.
Ryan.Bartsch
1
Algunos lectores pueden inferir de su diagrama de orquestación que la orquestación significa invocaciones síncronas desde el servicio de control hasta la prestación de servicios. Me gustaría aclarar que la comunicación Invoke-Reply también se puede lograr utilizando métodos asincrónicos, incl. a través de un agente de mensajes.
Christoph
34

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.

KarelHusa
fuente
21

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

koppor
fuente
19

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

  • Utilizado en procesos comerciales privados
  • Un proceso central (que puede ser otro servicio web) toma el control de los servicios web involucrados y coordina la ejecución de diferentes operaciones en los servicios web involucrados en la operación
  • Los servicios web involucrados no "saben" (y no necesitan saber) que están involucrados en un proceso de composición y que están participando en un proceso comercial de nivel superior.
  • Solo el coordinador central de la orquestación es consciente de este objetivo, por lo que la orquestación se centraliza con definiciones explícitas de operaciones y el orden de invocación de los servicios web.

ingrese la descripción de la imagen aquí

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.

ingrese la descripción de la imagen aquí

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.

  • Se pueden establecer escenarios alternativos en caso de que ocurran fallas.
Ciclotrón3x3
fuente
1
En realidad, la coreografía generalmente se basa en un coordinador central, y generalmente ese coordinador es una forma de intermediario de mensajes distribuidos. No usar algo como un agente de mensajes vincularía sus servicios de manera muy inflexible, lo que llevaría a la fragilidad y la baja reutilización.
Rodney P. Barbati
8

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

  • Fiabilidad: las plataformas de orquestación tienen soporte incorporado para el manejo de errores y la gestión de transacciones (transacciones de compensación). En la coreografía, el flujo de trabajo personalizado y el manejo de errores tienden a ser más propensos a errores.
  • Modificabilidad: Crear y cambiar flujos de trabajo de procesos y composiciones de servicios complejos es más fácil en las herramientas visuales BPM que se encuentran en las plataformas de orquestación.

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.

EDITAR

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.

Paulo Merson
fuente
3
Excepto que la coreografía requiere middleware adicional. Los requisitos (tareas) deben coincidir con diferentes nodos. Posteriormente, la coreografía se implementa, promulga, monitorea y adapta. Toda esta gestión requiere herramientas que generalmente son proporcionadas por un middleware.
Andrei
1
¿La orquestación no trae la desventaja de un solo punto de falla que no es el caso con la coreografía?
Deepak
6

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 )

Danijel Arsenovski
fuente
6

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.

Pedro gaitero
fuente
5

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.

Michael Qin
fuente
1

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.

Salvado
fuente
-1

Una orquestación generalmente vincula servicios de nivel inferior. Es como un mediador . Una coreografía ayuda a reducir el acoplamiento aún más. He explicado esto con más detalle aquí .

ottodidakt
fuente