Abstract
Choreography is the art of designing sequences of movements in which motion, form, or both are specified. The word choreography literally means “dance-writing”. Orchestration is the study or practice of writing music for an orchestra. The term orchestration in its specific sense refers to the way instruments are used to portray any musical aspect such as melody or harmony.
To understand it better, just listen to Debussy, who initiated not only a new style of modern music in twenieth century with his nontraditional harmonic language, his fresh approach to form and exotic asian borrowigs, but also because of his colourful orchestration which is based on his distinctive exploration of sound. The two terms have concise and distinct meaning in the music context, but in Computer Science are used very loosely.
In Computer Science, the terms orchestration and choreography describe two aspects of emerging standards for creating business processes from multiple Web services.
The two terms overlap somewhat, but orchestration refers to an executable business process that can interact with both internal and external Web services.
Orchestration always represents control from one party’s perspective. This distinguishes it from choreography, which is more collaborative and allows each involved party to describe its part in the interaction. There are four specifications, namely BPEL, BPML, WS-CDL and WSCI, which potentially fall into the orchestration and choreography bucket. This article will clarify these important concepts dealing with web Services in SOA (Service Oriented Architecture)
Introducción
Orquestación (Web Service Orchestration) y Coreografía (Web Service Choreography) , se suelen ver como dos aproximaciones para la Composición de Servicios Web, que se acercan estrechamente a los conceptos musicales, por lo cual se han importado directamente sus significados. Sin embargo, han presentado mucha confusión hasta el punto en que se han tomado como sinónimos; a mi manera de ver, por el desconocimiento de su analogía con la música. Comencemos por ahí…
La Orquestación es el estudio y práctica de ordenar la música para una orquesta. Es decir, consiste en decidir qué instrumentos deben tocar qué notas en una pieza musical. El término de orquestación se refiere en su sentido específico a la manera en que los instrumentos son empleados para expresar cualquier aspecto o cualidad musical, como la melodía y armonía. Para comprender mejor este concepto, basta con escuchar a Claude Debussy[1], quien no solo inició un nuevo y moderno estilo musical del siglo XX, sino que dotó a la música un lenguaje armónico poco usual. De personalidad compleja y contradictoria, noctámbulo, un poco depresivo, con escasos recursos económicos y variados problemas personales, pero con una depurada claridad estética, Debussy tuvo una de las creaciones más reveladoras de orquestación que se han dado en toda la historia de la música. Las fluctuaciones incesantes de la armonía y el ritmo, la flexibilidad y la libertad del fraseo crean un nuevo lenguaje musical. Su aproximación siempre fresca a nuevas formas exóticas, y específicamente su colorida orquestación basada en su distintiva exploración del sonido son algunas de sus características excepcionales.
En el Preludio a la Siesta del Fauno, basado en un poema de Mallarmé[2], que por cierto también fue representado en la pintura por Manet, es posible comprender lo que significa orquestación: se escuchan sólo tres flautas, dos oboes, dos clarinetes, dos fagotes, cuatro cornos franceses y dos arpas sumadas a las filas tradicionales de cuerda. Ni trompetas, ni trombones, ni percusión…nada que alejara de la sonoridad perseguida… suave y vaporosa… sensual y exótica…primero, una flauta inicial (très modéré) la cual posee una armonización leve y después completa acompañada por los cornos; los acordes dan la sensación de color. La segunda parte la lleva un oboe con un segundo motivo cuya atmósfera respira mayor animación, el arpa lo acompaña y en sus acordes agrega un exótico color. No obstante, la tercera, clarinete, oboe y cuerda presentan un elemento melódico nuevo, de gran emotividad y lirismo. La cuarta y última parte retoma el primer tema transformándolo rítmicamente para al final culminar con una coda en su cadencia final[3].
Con este Preludio, Debussy decide apartarse completamente no sólo de la estética establecida sino también de la tonalidad concebida hasta entonces y toma a su antojo los recursos para expresar la impresión del poema de Mallarmé, misma que en 1912, un bailarín ruso, Vaslav Nujinski, lo coreografió y por primera vez lo presentó en su versión de ballet.[4]
La Coreografía es, literalmente la estructura de la danza. Es el arte de diseñar secuencias de movimientos en donde su forma y velocidad son especificadas. La coreografía se ocupa de la ordenación y movimiento de los bailarines en el escenario. Es decir, consiste en decidir cómo debe ser el movimiento de los bailarines en el escenario al ritmo de la música. Cada bailarín tiene una serie de “pasos” que realizar. Ellos orquestan sus propios pasos puesto que tienen el control total de su dominio, que es su propio cuerpo. El coreógrafo sólo asegura que los pasos de todos los danzantes los realicen de acuerdo a un esquema acordado que proporcione un mismo punto de vista de la danza. La coreografía es una múltiple partida de un mismo punto de vista global de la danza. Volviendo al ejemplo del Preludio de la Siesta del Fauno, la coreografía lograda por Nijinsky creó un aspecto de bajorrelieve griego animado, en donde las bailarinas debían desplazarse con el pie al suelo, posando primero el talón y terminando el movimiento en los dedos, en total oposición a las reglas clásicas enseñadas hasta entonces.
Los pocos elegidos debían ubicar el cuerpo de frente al público, la cabeza y los miembros de perfil, los brazos mantenidos en posiciones angulares diversas. La coreografía de Nijinsky provocó escándalo y controversia, a pesar de que el público se sorprendió a la vista del bellísimo decorado de un lago bordeado por árboles[5].
La composición de los servicios Web es parecida a la composición musical. La composición musical tiene como objetivo la creación de un mundo imaginario de interacciones coherentes, seductoras y satisfactorias, a través del sonido y la imaginación, mientras que en el caso de los servicios Web su objetivo es la creación de interacciones abstractas ente hombre-máquina a través de una interfase de software por medio de mensajes que proporcionen al hombre un beneficio determinado.
La tarea de componer servicios Web básicos o simples para brindar servicios Web más complejos se conoce técnicamente como Composición de Servicios Web. Existen dos grandes aproximaciones para esta tarea, la coreografía, con foco en la interacción entre servicios (equivalente a los bailarines) y la orquestación (equivalente a los instrumentos de la orquesta), con foco en la implementación y ejecución de servicios. La primera puede considerarse como una descripción formal del pasaje de mensajes, obviando detalles internos de implementación. Se ajusta más en situaciones donde es provechoso contar con la noción de estados, y también donde están involucradas transacciones de larga duración- El “orquestador” determina la naturaleza y la secuencia de la interacción.
En cambio, la segunda aproximación, describe la lógica y el estado de cada una de las partes involucradas. La orquestación tiene una visión mas local y centralizada, mientras que la coreografía define la composición desde una perspectiva global, sin control centralizado, tal y como sucede en la danza.
En este artículo se explorarán estos conceptos desde el punto de vista de los estándares que los definen, así como de su participación en la arquitectura orientada a servicios SOA.
Orquestación y coreografía de los servicios web en un ambiente SOA
Existen numerosas definiciones de Servicios Web y esto demuestra, en parte, la gran complejidad de los servicios que se agrupan bajo este término y las implicaciones asociadas a ellos. Hasta ahora la definición más general y convincente es decir que los Servicios Web son el conjunto de aplicaciones tecnológicas con capacidad para interoperar en la Web. Estas tecnologías intercambian datos entre ellas con el fin de ofrecer servicios de naturaleza remota[6].
La World Wide Web no es sólo un espacio de información, también es un espacio de interacción. Utilizando la Web como plataforma, los usuarios, de forma remota, pueden solicitar un servicio que algún proveedor ofrezca en la red. Pero para que esta interacción funcione, deben existir unos mecanismos de comunicación estándares entre diferentes aplicaciones. Estos mecanismos deben poder interactuar entre sí para presentar la información de forma dinámica al usuario. Se precisa, pues, una arquitectura de referencia estándar que haga posible la interoperabilidad y extensibilidad entre las distintas aplicaciones y que permita su combinación para realizar operaciones complejas. Esta arquitectura es conocida con el nombre de SOA (Service Oriented Architecture) .
Con el fin de estandarizar los diferentes aspectos relacionados con los servicios Web, el W3C (World Wide Web Consortium) recoge todo lo referente a ellos en “Web Services Activity” .Así pues, Web Services (WS) ofrece un significado estándar para interoperar entre diferentes aplicaciones de software corriendo en diferentes plataformas y/o marcos de trabajo. El W3C pretende diseñar la arquitectura, definirla y crear el núcleo de tecnologías que hagan posible los Servicios Web.
Los servicios Web se basan en un lenguaje de características especiales llamado XML (Extensible Markup Language) que permite que las aplicaciones compartan información y que además invoquen funciones de otras aplicaciones independientemente de cómo se hayan creado dichas aplicaciones y del sistema operativo o plataforma en que se ejecuten. Por ejemplo, Google utiliza un Servicio Web llamado Google Web APIs, que permite que el usuario programe en diversos lenguajes asegurando la recuperación de información independientemente de la plataforma que se utilice.
Los servicios Web se idearon en un principio, para realizar interacciones simples e independientes, pero ahora es necesario que los servicios colaboren y se coordinen. A la coordinación necesaria para implementar un servicio Web se le llama Composición, que puede realizarse de dos maneras: orquestación y coreografía. Volviendo a la descripción del Preludio de la Siesta del Fauno, podemos deducir que la principal diferencia entre orquestación y coreografía es el alcance. La orquestación trata de la descripción y ejecución de un mismo y único punto de vista global del modelo (instrumentación).
La coreografía trata de la descripción y guía de un modelo global proyectado en base a cada participante (bailarines). La orquestación y coreografía son términos que describen dos aspectos de los estándares emergentes para la creación de procesos de negocios de múltiples servicios Web.
The two terms overlap somewhat, but orchestration refers to an executable business process that can interact with both internal and external Web services.
Los dos términos se superponen de la misma manera que sucede en la música, cuando una orquestación es llevada al ballet, como es el caso del citado ejemplo del Preludio de la Siesta del Fauno, pero es claro que la orquestación se refiere a un proceso de negocio ejecutable que puede interactuar tanto con servicios Web internos como externos.
La orquestación representa siempre el control desde la perspectiva de una de las partes. Orchestration always represents control from one party’s perspective. This distinguishes it from choreography, which is more collaborative and allows each involved party to describe its part in the Interoc. Esto lo distingue de la coreografía, que es de mayor colaboración y permite a cada parte implicada describir su papel en la interacción. La orquestación y coreografía tratan de describir aspectos relacionados con la creación de procesos de negocio que involucran varios tipos de Software.
Visto gráficamente, la orquestación, permite diseñar procesos de negocio ejecutables que pueden interactuar (a nivel de mensaje) tanto con software interno como externo. Por otra parte, la coreografía es mucho más colaborativa, ya que permite trazar las secuencias de mensajes que se suceden entre todas las partes participantes del proceso de negocio en lugar de centrarse en los mensajes que se intercambian entre los diversos programas de software que implementan los procesos de negocio.
Para que no quede este ejemplo tan abstracto, consideremos una situación hipotética en la que un cliente pide a un proveedor cierto material. En este caso, el sistema recibe petición y ejecuta todas las acciones necesarias para enviarle una solicitud de pago en caso de haber existencia, o de cancelación, si es que no hay existencia de dicho material. En este ejemplo, estamos hablando de servicios de orquestación ya que sólo son acciones de ejecución porque los servicios participantes no tienen conocimiento de su participación.
Siguiendo el mismo ejemplo, pero ahora involucrando una interfase entre cliente y almacén con un proveedor, es indispensable tener funciones de coordinación. Lo anterior no sólo es evidente sino necesario cuando los servicios se van haciendo más complejos, y sobre todo cuando éstos se disponen a través de un portal. La coreografía nos permite reutilizar pequeños módulos, en este ejemplo el del cliente, proveedor o almacén en diferentes aplicaciones. Sólo se requiere implementar reglas de coordinación diferentes para cada aplicación .A dichas reglas se les conoce como estándares de coreografía.
Comparándolo con nuestro ejemplo musical, hablamos de orquestación cuando no hay danza involucrada en una pieza música.; sólo hay orquesta, y por lo tanto orquestación. Sin embargo, cuando queremos ampliar el significado artístico de una misma pieza musical, ya sea con la danza u ópera, las tareas de composición se hacen más complejas y se requiere un elemento coordinador, llamado coreografía.
Estándares de orquestación de servicios web
WS BPEL( Web Service/ Business Process Execution Language)
Es un lenguaje de orquestación estandarizado por OASIS (Organisation for Advance Structured Information Business Transaction Protocol) para la composición de servicios Web que permite a los desarrolladores crear programas que automatizan las interacciones entre los servicios Web, jugando un papel clave en las arquitecturas orientadas a los servicios SOA. Para comprender su funcionamiento, imaginemos un proceso de negocio determinado, que tiene una entrada A y una salida B. Dicho proceso, como la mayoría de ellos, posee a su vez de muchos procesos internos que se van activando de acuerdo a ciertos parámetros y valores. BPEL sería el encargado de orquestar, y por lo tanto dirigir la ejecución de una manera ordenada. La ventaja de que BPEL sea un estándar radica en que puede ser implementado en una gran variedad de motores de ejecución de diferentes proveedores.
BPEL en si es un formato XML que proviene de la convergencia entre el WSFL (Web Service Flow Language) de IBM y XLANG de Microsoft.
La herramienta BPEL está basada en un modelo llamado “workflow” que especifica las órdenes de ejecución. Existen actividades básicas como “invoke” y “receive” y otras estructuradas como “sequence”. También forman parte del modelo variables y participantes (partners). En las variables se deposita la noción de datos, y los participantes representan los elementos que interactúan en la composición. El modelo se completa como un motor que orquestará las invocaciones.(ver ejemplo )
BPML (Business Process Modeling Language)
Es un metalenguaje basado en XML para la descripción de procesos de negocio. Inicialmente, BMPL se diseñó para soportar los procesos que un sistema de gestión de procesos de negocio pudiera ejecutar. BPML dispone de estructuras similares a BPEL, como pueden ser actividades básicas para el envío y la recepción de mensajes, y para la invocación de servicios. Adicionalmente, BPML permite planificar las tareas para que se ejecuten en instantes específicos, ofreciendo algunas opciones de control temporal. Este lenguaje incluye características para dar soporte a la persistencia, ya que fue diseñado para la gestión de procesos de larga duración. BPML ofrece soporte también para realizar composiciones recursivas a fin de poder construir procesos de negocio que a su vez consten de otros subprocesos. Asimismo, soporta transacciones de larga o corta ejecución, gracias a que usa una técnica similar a BPEL para controlar el alcance de las actividades, y gestionar de esta forma las reglas de compensación en caso de que las operaciones que deben realizarse de forma automática se vean interrumpidas.
Estándares de coreografía de los servicios web
WS-CDL (Web Services Choreography Description Language)
Es un lenguaje basado en XML que describe la colaboración entre pares “ peer to peer” , mediante la definición – desde un punto de vista global de los comportamientos comunes y observables de cada participante de un proceso de negocio. Éste es un lenguaje utilizado para la definición de servicios dentro de la plataforma SOA y cuyo objetivo es la descripción del comportamiento de cada uno de los servicios establecidos para lograr un objetivo común. Sin embargo, antes de WS-CDL ya existía un lenguaje que permitía la descripción de las funcionalidades de un Servicio Web: WSDL (Web Services Definition Language), el cual puede describir el conjunto de funciones ofrecidas, con los posibles fallos que podrían ocurrir, y a pesar de que WS-CDL podría expresar las coreografías de un servicio en un ambiente SOA, W3C (World Wide Web Consortium) abandonó su desarrollo en 2009.[7]
WSCI (Interfaz de Coreografía de Servicios Web (WSCI)
La especificación de WSCI fue desarrollada por diversas compañías como Sun, SAP, BEA e Intalio y representa una extensión para WSDL para la colaboración. La especificación define la coreografía global o el intercambio de mensajes entre los diferentes tipos de software y soporta su correlación, reglas de secuenciación, manejo de excepciones, transacciones y colaboración dinámica. WSCI sólo describe el comportamiento observable entre el software que se emplea. Una coreografía WSCI constará de un conjunto de interfases WSCI, una por cada uno de los servicios que participen en la interacción.
Conclusiones
Ajustar el gasto tecnológico y adaptar los sistemas informáticos a los requerimientos del negocio con el fin de optimizar la eficiencia operativa se han convertido en una de las prioridades para las empresas, y en especial para los responsables TI. Las organizaciones buscan maximizar el uso de su tecnología, los procesos y servicios ya desplegados, construyendo un framework [8] en el que las Arquitecturas Orientadas a Servicios (SOA) aparecen como el elemento clave de cambio. SOA es una forma de modularizar los sistemas y aplicaciones en componentes de negocio que pueden combinarse y recombinarse con interfases bien definidas para responder a las necesidades de la empresa, a quien no sólo interesa el despliegue de nuevos productos o servicios sino el alineamiento de la infraestructura TI con los propios procesos de negocio sobre una base se servicios compartidos en red. Cuando las organizaciones optan por emplear entornos orientados a servicios, no sólo mejoran su interacción con clientes, socios, proveedores y los mismos empleados, sino que pueden reducir sus costos operativos y acelerar el ROI de sus inversiones en tecnología.
Los servicios Web encajan en este tipo de arquitectura ya que éstos empaquetan una función que puede ser reutilizada permitiendo interoperabilidad y transparencia de localización, es decir, que el cliente de un servicio es esencialmente independiente de la construcción del mismo. Tanto la orquestación como la coreografía en la composición de los Servicios Web son elementos claves para lograr una arquitectura orientada al servicio.
Imagen: Flickr
[1]Compositor francés. Iniciador y máximo representante del llamado impresionismo musical,
[2] Stéphane Mallarmé fue un poeta y critico francés del siglo XIX , representante del simbolismo francés
[3] .Debussy busca desde muy temprano en sus composiciones: inestabilidad tonal, sonoridades vagas… Para ello recurre a la escala tónica completa, el aumento de los acordes de quinta, la influencia oriental, el empleo de la modalidad (inspirado por la Edad Media), la transparencia tímbrica, la indeterminación entre disonancia consonancia, y la línea melódica dejan de ser la esencia de la música para serlo los acordes
[4] El Ballet “ L’Après-midi d’un Faune”, inspirado en el poema de Stéphane Mallarmé titulado “La Tarde de un Fauno”, fue creado el 29 de mayo 1912 por Vaslav Nijinski, sobre una partitura de Claude Debussy con escenografía de Léon Baskt.
[5] Para ver el video del ballet “La tarde de un fauno”, sigue esta liga: http://www.youtube.com/watch?v=Ncz-D1Vf13M&feature=related
[6]Citado en la Guía Breve de Servicios Web, publicada por W3C en: http://www.w3c.es/Divulgacion/Guiasbreves/ServiciosWeb
[7] http://www.w3.org/2002/ws/chor/
[8] En el desarrollo de software, un framework es una estructura conceptual y tecnológica de soporte definida, normalmente con artefactos o módulos de software concretos, en base a la cual otro proyecto de software puede ser organizado y desarrollado.
Tags: Extensible Markup Language, Google Web APIs, SOA (Service Oriented Architecture), W3C, Web Service Choreography, Web Service Orchestration, Web Services Activity, XML
Hey, good to find someone who ageres with me. GMTA.
I simply want to tell you that I’m new to blogging and site-building and seriously liked your blog. Very likely I’m likely to bookmark your blog . You surely have remarkable articles. Thanks a lot for revealing your web site.