soa - Orquestación vs. Coreografía
composition service-composition (10)
Andrei y otros hicieron un buen trabajo explicando qué es orquestación y qué es coreografía. Para que el arquitecto de software elija entre estas dos alternativas, también es importante compararlas con respecto a las diferentes calidades.
Ventajas de la orquestación sobre la coreografía
- Confiabilidad: las plataformas de orquestación tienen soporte integrado para el manejo de errores y la gestión de transacciones (transacciones de compensación). En la coreografía, el flujo de trabajo desarrollado a medida y el manejo de errores tiende a ser más propenso 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 de BPM que se encuentran en las plataformas de orquestación.
Coreografía más sobre la orquestación
Rendimiento: Orchestration incurre en 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 carga de gobierno.
¿Cuáles son las diferencias entre la orquestación de servicios y la coreografía de servicio desde el punto de vista intra-organización?
Dado que el hilo es viejo, pero aún escribo para aquellos que tropezarán 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 clara 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 mayor nivel.
- Solo el coordinador central de la orquestación conoce 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.
Coreografía: colaboración multipartita
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 de negocios, las operaciones que se ejecutarán, los mensajes para intercambiar y el momento del intercambio de mensajes.
Coreografía vs. Orquestación
Desde la perspectiva de la composición de 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 componentes es administrada centralmente por un coordinador conocido.
Los servicios web se pueden incorporar sin que se den cuenta de que están participando en un proceso comercial más amplio.
- Se pueden implementar escenarios alternativos en caso de que ocurran fallas.
Las tecnologías básicas como (XML, SOAP, WSDL) proporcionan medios para describir, localizar e invocar servicios como una entidad por derecho propio. Sin embargo, estas tecnologías no brindan un rico detalle de comportamiento sobre el rol del servicio en una colaboración más compleja. Esta colaboración incluye una secuencia de actividades y relaciones entre actividades, que desarrollan el proceso comercial. Hay dos formas de construir este proceso: orquestación de servicio y coreografía de servicio.
Servicio de orquestación
La orquestación de servicios representa un único proceso de negocios ejecutable centralizado (el orquestador) que coordina la interacción entre 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. Orchestration emplea un enfoque centralizado para la composición del servicio.
Coreografía de servicio
La coreografía de servicio 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 servicios múltiples, mientras que 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 debe residir la lógica que controla las interacciones entre los servicios involucrados.
Los servicios se pueden distinguir entre servicios atómicos y servicios compuestos por otros servicios. Tales composiciones se llaman "orquestación". A veces el flujo de trabajo, a veces el proceso de negocios. Por ejemplo, BPEL es un lenguaje de orquestación, pero se llama a sí mismo "lenguaje de ejecución de procesos comerciales".
No es necesario que los servicios tengan que estar compuestos jerárquicamente. Eso significa que dos servicios pueden hablar entre ellos. 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 se puede ver como orquestador de los servicios asociados. Cada servicio que participe en una coreografía se puede realizar 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 multivista Revista Internacional de Sistemas de Información Cooperativa, 2004, 13, 337-368
Otra forma de ver Service Orchestration vs. Coreografía:
- Orquestación de servicios: en torno a un dominio empresarial.
- Coreografía de servicios: entre múltiples dominios comerciales.
Yo diría que la coreografía es adecuada internamente para organizaciones altamente descentralizadas. No necesitará un ejecutor central de procesos de negocios. 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 orquestación vs. la 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 es más frecuente cuando especifica un proceso comercial que se promulgará 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. Use 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.
Service orchestration : reúne varios servicios mediante una lógica fija. Esta lógica se describe en un solo lugar. Puede imaginar un equipo de personas con un gerente haciendo microgestión. El gerente dice con precisión qué, cuándo y quién debería hacer. Los miembros del equipo no se preocupan por la meta completa del trabajo, el gerente combina los resultados en un entregable único. 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 sola respuesta de servicio.
Coreografía de servicio : la lógica de decisión se distribuye, sin punto centralizado. Puede imaginarse un hogar, donde todos busquen el bien común y trabajen proactivamente sin microgestión. O puede imaginarse un cuerpo humano, donde 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 crean un sistema juntos. No hay una lógica centralizada. Las posibilidades de la coreografía pueden ir más allá de la orquestación, ya que están más alineadas con el mundo real.
Mi opinión es que no necesitamos distinguir mucho entre estos dos, ya que debemos centrarnos en la lógica comercial. Donde un solo punto de lógica hace el trabajo, hacemos orquestación. Cuando un problema no puede ser cubierto por una lógica centralizada, de todos modos nos vemos obligados a realizar coreografías. Es por eso que a menudo nos encontramos con la orquestación en TI, mientras que la coreografía sigue siendo 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.
En la orquestación, hay un conductor y hay instrumentistas. Los jugadores juegan según la conducta del conductor. Si se reemplaza el conductor, la expresión armónica será diferente, es decir, seguirá siendo el mismo juego (servicio) pero con un resultado diferente. Por ejemplo, para proporcionar una propuesta de acuerdo financiero, el servicio de orquestación realizará preguntando (invocando) a cada jugador (entidad o servicio de utilidad, por ejemplo, verificación de crédito) para jugar (devolver resultados o ajustar / actualizar su ejecución) de acuerdo con la plantilla del conductor (negocio reglas). En la 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 la forma de realizar esa dirección.