Composición de servicios en SOA y su relación con BPM

julio 26, 2012

share

Archived

La capacidad de poder reutilizar artefactos de software es sin dudas uno de los grandes objetivos dentro de cualquier tecnología de desarrollo de software, y ha sido identificado desde la concepción de la computación como una ciencia como uno de los requisitos para lograr software de calidad. Reutilizar software implica necesariamente poder desacoplar la interacción que surge entre quien produce un determinado ítem, y quien lo consume. Esto brinda la posibilidad de cambiar fácilmente de entorno a cualquiera de los involucrados.

Service Oriented Architecture (SOA) puede ser visto como un conjunto de conceptos y técnicas que permiten obtener un cierto resultado esperado como una composición de diferentes servicios. El gran aporte de SOA es proveer un entorno adecuado para que un mismo servicio pueda ser reutilizado y compuesto de diversas maneras, en pos de lograr distintos objetivos.

Hay diversas maneras de especificar la composición de servicios en SOA. Las mismas pueden agruparse bajo dos grandes categorías denominadas coreografía y orquestación. Esta diferencia puede compararse a las técnicas de testing de caja negra y testing de caja blanca, donde los tests para el primer caso se basan en los resultados obtenidos mientras que en para los segundos el foco está puesto en la funcionalidad interna. Cuando se especifica bajo una coreografía se define una especie de contrato de comportamiento global, donde se describe de manera externa el orden válido de los distintos mensajes que intercambian los servicios involucrados. Sería el equivalente a los testing de caja negra. En cambio, en una orquestación, se definen nuevos servicios recursivamente como composición de otros, más cercano a una aproximación Top-Down. Como muchas veces es necesario especificar comportamiento interno de cada servicio, sería una especificación equivalente a los testing de caja blanca.

WS-CDL (Web Services Choreography Description Language) es el lenguaje más utilizado para la especificación de servicios bajo una coreografía, y cuenta con la recomendación de World Wide Web Consortium (W3C). Por otro lado BPEL (Business Process Execution Language) es el lenguaje estándar para describir una orquestación de servicios. Incluso muchas veces se utilizan de manera combinada, mostrando para una composición de servicios una coreografía a nivel global y una orquestación para describir la interacción interna.

No solo la tecnología puede ser reutilizada, sino también los conceptos subyacentes que dan fundamento a las mismas. Una visión SOA también puede trasladarse para describir el flujo de trabajo del modelo de negocio. BPM (Business process management) es una metodología que permite especificar cada uno de los pasos involucrados en un proceso de negocio: su identificación, modelado, desarrollo, puesta en ejecución y administración. Es posible ver esta descripción como servicios interactuando para lograr un objetivo en común. SOA y BPM se ha manifestado como una fusión natural de metodologías, mejorando ambos mundos. Por ejemplo, BPM sin servicios puede resultar compleja ya que la capa de procesos accede directamente a la capa de aplicaciones. Esto tiene el efecto negativo que los procesos se ven contaminados por detalles internos de las aplicaciones.

Dos lenguajes fuertemente relacionados con SOA y BPM son BPMN y BPML. BPMN (Business Process Modeling Notation) es un lenguaje gráfico para modelar procesos de negocios así como también servicios web. Es interesante mencionar que existen procedimientos que permiten traducir escenarios BPMN a BPEL . Finalmente BPML (Business Process Modeling Language) es un metalenguaje para el modelado de procesos, con más poder expresivo que BPEL. Sin embargo, esta mayor expresividad viene acompañada de una mayor complejidad, por lo que la comunidad se ha enfocado en lenguajes más simples como BPEL.