Orquestación y Coreografía

A menudo he visto en presentaciones, artículos e incluso charlas de diversos tipos, el uso indiscriminado de dos palabras que creo son necesarias diferenciar: Orquestación y Coreografía.
Yo mismo me he planteado serías dudas sobre el ámbito de cada palabra (e incluso ya esbozamos algo sobre el tema en algún momento) y con este post quiero por un lado aclarar ideas y dar pie a un posible debate sobre cuando debe utilizarse cada una.

Orquestación (Web Service Orchestration) y Coreografía (Web Services Choreography) se suelen ver como dos aproximaciones para la Composición de Servicios Web, pero tienen matices (la principal diferencia entre orquestación y coreografía es el alcance):

Si buscaramos la definición de Orquestación y Coreografía en un diccionario obtendríamos algo tal que así:

  • La Orquestación es el estudio y práctica de ordenar la música para una orquesta. Es decir, consiste en decidir que instrumentos deben tocar qué notas en una pieza de música.
  • La Coreografía es la ordenación y movimiento de los bailarines en el escenario. Es decir, consiste en decidir como debe ser el movimiento de los bailarines en el escenario al ritmo de la música.

Después de estas "definiciones" podríamos hablar de similitudes entre orquestación y música; al igual que de coreografía y danza (o bailarines). El problema es que esto no termina de dejar claro las similitudes y diferencias entre Orquestación y Coreografía aplicadas a los Servicios Web.

Cuando hablamos de Orquestación, debemos hablar de WS-BPEL y por tanto de procesos ejecutables. Es decir, la Orquestación podría verse como la ejecución de un proceso de negocio definido en WS-BPEL y que puede ser ejecutado por un motor BPEL.
Cuando hablamos de Coreografía, debemos hablar de WS-CDL (Web Services Choreography Description Language) y por tanto de colaboración entre actores; es decir, de interacciones entre servicios web.
Hay que verlo desde una perspectiva distinta, WS-BPEL (Orquestación) es un mecanismo para el intercambio de mensajes desde una visión más detallada a través de un proceso (un flujo de control). Y WS-CDL (Coreografía) es una visión más abstracta y descriptiva de los actores que intercambian mensajes para ejecutar varios proceso particulares (varios flujos de control).

WS-CDL tiene como propósito definir la interoperabilidad necesaria para crear un sistema compuesto por servicios web. La Coreografía nos permite especificar las reglas de unión y trabajo colaborativo (entendiendo por colaboración, una función/es de negocio surgidas de la interacción cooperativa de múltiples actores. Es lo que normalmente se entiende por un proceso de negocio global donde se modela el estado de negocio (por ejemplo, BPSS - Business Process Specification Schema)) de diversos servicios web.
Por el contrario, WS-BPEL se centra en la composición de nuevos servicios a partir de otros ya existentes. BPEL nos proporciona una manera de describir el comportamiento interno de qué necesitan los servicios para trabajar conjuntamente y así poder crear otro servicio como composición de los primeros.

No se si queda claro o simplemente genera más confusión. ¿Que opinais al respecto?

Links interesantes:

Web Services Orchestration Using BPEL
Service Orchestration vs. Service Choreography by John Reynolds
What is… choreography? What is… orchestration? on Digital Walkabout
OASIS Web Services Business Process Execution Language (WSBPEL)
WS-Choreography Definition Language (WS-CDL)

3 Responses to “Orquestación y Coreografía”

  1. Yo entiendo que en los servicios Web existe la coordinacion de servicios y la composicion de servicios. Son ellos iguales a los terminos Coreografia y Orquestacion respectivamente?

    Gracias…

  2. Sí, efectivamente podría asimilarse a dichos conceptos.
    De hecho, cuando hablamos de Composición de Servicios hablamos principalmente de WS-BPEL (es decir, orquestación). Y cuando hablamos de Coordinación de Servicios hablamos de estándares como WS-CDL, WS-Coordination, WS-Transaction (es decir coreografía).
    Gracias por tu apreciación Guillermo!!

  3. Coreografia y Orquestación no son lo mismo, especificamente al hablar de Web Services y BPEL. Las diferencias entre orquestación y coreografía están basadas en analogías (http://es.wikipedia.org/wiki/BPEL): la orquestación describe un control central del comportamiento como un director en una orquesta, mientras que la coreografía trata sobre el control distribuido del comportamiento donde participantes individuales realizan procesos basados en eventos externos, como en una danza coreográfica donde los bailarines reaccionan a los comportamientos de sus pares.

    Visto esto es fácil predecir que la orquestación mantiene el control centralizado de un proceso de negocio, así como el director de orqueta mantiene el control sobre sus integrantes, tal es así que si el director realiza un “alto” o “acelera” el ritmo… todos reaccionarán en forma instantánea y coordinada. Esto no ocurriría en una coreografía, donde el comportamiento ya está predefinido por el coreógrafo, y cada uno de los miembros solo tratan de cumplir a cabalidad con lo previamente pactado… cualquier cambio sobre la marcha sería impensable.

Leave a Reply