mayo 02, 2013

La idea detrás de las composiciones SOA - Oracle SOA Suite 11g

Lo que conocemos como composición SOA actualmente dentro de Oracle SOA Suite no es mas que la materialización de un conjunto de ideas plasmadas dentro de la Arquitectura Orientada a Servicios (SOA por sus siglas en inglés).
Actualmente SOA en las empresas está alcanzando un nivel de madurez muy cercano al teórico y a lo que nos prometía el paradigma cuando comenzaba a popularizarse.
Si bien es cierto que muchas herramientas han sido desarrolladas para facilitar la adopción e implementación de estos conceptos, también en algunos casos han causado la falsa impresión de que por haber comprado un cierto producto o herramienta ya vas a contar con “SOA” dentro del panorama de TI en tu empresa.


Uno de estos productos es Oracle SOA Suite, un conjunto de herramientas e infraestructura para modelar e implementar SOA, ojo!, pese a lo sugestivo del nombre del producto, al comprar la suite no estás comprando SOA, y lo mismo para los desarrolladores: crear un proyecto no necesariamente implica que estás haciendo SOA. Por eso mismo, cuando me refiera al producto diré “SOA Suite” y cuando me refiera a la arquitectura diré “SOA”.
Para poder explicar la manera en que una composición SOA de SOA Suite modela y atiende las necesidades de SOA comenzaremos con algunos conceptos importantes de SOA.
SOA atiende a un conjunto de patrones de diseño y estándares que buscan modelar los sistemas computacionales desde un punto de vista de servicios, los cuales con proporcionados por un proveedor hacia consumidores locales o externos.

El éxito de SOA  no radica en el producto mas caro que tu dinero pueda comprar, mas bien atiende al uso adecuado de las herramientas para llevar a cabo la implementación de estos servicios basándose en un marco metodológico bien estructurado y que atiende las necesidades de un negocio o proyecto.
A continuación les describo unos de los conceptos mas importantes en una arquitectura SOA.
  • Reusabilidad: Este es uno de los temas mas importantes cuando hablamos de SOA, pensar que tenemos que mantener una estructura orientada a servicios nos da la posibilidad de utilizar un mismo servicio (autenticación, alta de cliente, colocación de una orden, etc) desde varios frentes o componentes que requieran dicha funcionalidad.
    Desde siempre se ha buscado reutilizar la mayor cantidad de trabajo para disminuir costos y complejidad, SOA al enfatizar en el diseño de servicios específicos y en la implementación de estándares facilita la reutilización de dichos componentes.
  • Integración: Sin duda el principal uso que se le ha dado actualmente al acercamiento SOA. Si bien es cierto que SOA es mas que solo la integración de servicios, no está de mas decir que uno de sus catalizadores fue la integración de sistemas de distinta índole y tecnología.
    Junto con la reusabilidad, este es el punto donde los estándares juegan un papel muy importante, son indispensables para establecer los contratos de comunicación entre las aplicaciones.
    Tecnologías como XML y JSON han sido ampliamente utilizadas debido a que proveen una interfaz de comunicación y transferencia de información simple y fácil de implementar en otras plataformas como Microsoft, Oracle, SAP, IBM, etc.
  • Desacoplamiento: Recordemos que estamos enfatizando en la reutilización de servicios, para que un servicio sea candidato a reutilización debe de cumplir con una función específica que le sea útil a otros consumidores, es por eso que debemos buscar que nuestros servicios tengan una separación de intereses adecuada, es decir, que la responsabilidad de cada componente no esté fuertemente ligada a otro o incluso embebida.
    Realizando un buen análisis podemos llegar a un diseño donde los servicios posean poca o nula interdependencia con otros servicios.
  • Nivel adecuado de granularidad: No podemos crear servicios a nuestro antojo, debemos seguir la tendencia del negocio y lineamientos de la arquitectura empresarial, esto implica tener una referencia con la cual poder elegir que servicios deben ser expuestos por separado, a que nivel de la organización, a que roles, etc. Planear de esta manera los servicios maximizará su reutilización y administración.
  • Adaptabilidad: Los procesos de negocio son entidades con vida, cambian constantemente y necesitan que la arquitectura que les da soporte pueda ser igual de ágil.
    Aquí entran en juego las herramientas, es extremadamente útil tener herramientas de construcción que faciliten y agilicen el ensamblado y desarrollo de nuevos servicios así como de su integración en el panorama actual de una empresa.
    Actualmente existen plataformas como SOA Suite, BPM Suite y Governance Suite que permiten no solamente la adaptación de los componentes de negocio e integración si no que además proveen toda la infraestructura necesaria para que estos cambios se hagan con menor esfuerzo y mayor rapidez.
  • Gobierno: Es importante que como parte de nuestra arquitectura de referencia integremos un modelo de gobierno. Este modelo de gobierno proveerá los estándares y políticas mediantes los cuales vamos a asegurar que la implementación se apegue a la arquitectura de referencia.
    El modelo debe de incluir los estándares del descubrimiento de servicios, su documentación en cuanto a estructura, dependencias, ubicación, etc, esto con el fin de facilitar su reutilización.
    Otra función importante del modelo de gobierno es incluir los lineamientos de construcción, despliegue, versionamiento y todas esas operaciones que son candidatas a llevarse a cabo de manera correcta utilizando diferentes estilos, esto ayudará a unificar el estilo y establecer una comunicación adecuada entre los componentes y el equipo de trabajo.
Tomando en cuenta estas características llegamos a un modelo de composición, es decir, tenemos grandes soluciones formadas por servicios reutilizables de menor complejidad, todo esto se logra a través de una composición SOA donde un orquestador (proceso BPEL o BPMN) es el encargado de definir la participación de cada subcomponente.
Utilizando este acercamiento podemos llegar a formar procesos de negocio muy complejos que involucran una gran cantidad de servicios, y de ser necesario, dicho proceso podría seguir siendo reutilizado en su totalidad por otro proceso de mas alto nivel.

A continuación les muestro un diagrama de una típica composición SOA en Oracle SOA Suite enfatizando los conceptos antes descritos
composición