Introducción a una solución SOA

En este tutorial se introduce al mundo SOA y alguna de las muchas soluciones que se puede implementar.

Empezaremos introduciendo alguno de los conceptos que siempre se repiten SOA, BPM, BPEL, ESB y trataremos de explicar diferenicas y soluciones de los mismos. Terminamos introduciendo un ejemplo genérico para comprender cómo interactuan las tecnologías propuestas.

Debe tener conocimientos de Arquitectura Web (es recomendable el siguiente artítulo) y mucha imaginación 🙂

¿Qué es SOA?

Service Oriented Architecture es un diseño de arquitectura como lo es un diseño  SaaS  (software as a service). Es una forma de estructurar aplicaciones distribuídas de cara a una mayor reutilización de las funciones basándose en la orientación a servicios.

Con SOA se pretende que tengas tus funciones (generalmente) en un web service y que esas funciones  sean llamadas desde tus aplicaciones distribuídas geográficamente.  Además de desacoplar, una gran ventaja es la independencia del lenguaje en el que estén implementados los componentes.

SOA puede tener diferentes soluciones. Cada solución conlleva unas metodologías (BPM), tecnologías (BPMS, ESB) o herramientas específicas (Oracle SOA Suit como solución de PBMS, OSB como solución de ESB, etc) . Vamos a explicar alguno de los conceptos junto algunas soluciones que ofrece el mercado.

En primer lugar observe el siguiente diagrama para comprender la distribución de los componentes se que se van a explicar a continuación:

Solución de arquitectura SOA
Solución de arquitectura SOA

Como “aplicación 1” podemos imaginarnos una aplicación web para los usuarios que administran a los clientes, “aplicación 2” la aplicación web que utilizan los clientes, etc.

Como “servicio1”, “servicio2” podemos imaginarnos que es una función alojada en un web service. En caso de desconocer qué es un web service recomendio la lectura del siguiente artículo. También podemos encontrarnos otro tipo de servicios (como el de correo, impresoras, etc).

Como “negocio” y “procesos” se pretende diferenciar niveles dentro de un modelo.  A continuación completaremos esta definición.

El BUS será el encargado de ofrecer la tecnología para comunicar aplicaciones y servicios.

¿Con qué modelar y procesar los negocios y procesos?

¿Qué es BPM?

Business Process Model es una metodología basada en mejorar la eficiencia y el desempeño de una organización mediante la identificación de procesos de negocio. Por BPM también se conocen todas las herramientas o tecnologías que envuelve la metodología para su análisis, diseño, ejecución, monitorización y control de los procesos.

La diferencia principal con otros modelos es que contempla la interacción humana e integración de aplicaciones. Es decir, como proceso podemos encontrarnos “introducir comentario” operación del usuario como “imprimir factura” operación del sistema.

BPM también se conoce como una disciplina de administración de cara a que las organizaciones cambien el pensamiento centrado en los procesos y que reduzcan su dependencia de estructuras tradicionales de territorio y funcionalidad. Una buena solución BPM debe poder ejecutar un proceso modelado por el área de negocio sin que TI tenga que programar una sola línea de código.

Algunos de los componentes de un BPM son un motor de orquestación, herramientas de análisis, Business Intelligence, motores de reglas, repositorios, simulación, optimización e integración como otros sistemas legados.

Ejemplos de BPMS (sistemas que implementan BPM) son Oracle SOA Suit, IBM BPM, BEA AqueaLogic BPMS)

Un proceso de negocio puede ser abrir contacto, comprobar stock, etc.

¿Qué es BPEL?

BPEL (Business Process Execution Lenguaje) es un estándar del lenguaje utilizado para especificar acciones en los procesos de negocio.  Otro estandar más conocido es UML. Un modelo BPEL es similar a una máquina de estados.

Un modelo BPM puede utilizar BPEL como lenguaje para definir los procesos de un negocio.

¿Qué BUS utilizar?

¿Qué es ESB y OSB? ¿Diferencias?

ESB consiste en un combinado de arquitectura del software que proporciona servicios para arquitecturas complejas a través de un bus. Ofrece la tecnología para orquestar sistemas distribuídos, mezclar tecnologías, etc.e

Oracle Service Bus es la solución de SOA Suit Oracle para conectar, mediar y administrar las interacciones entre servicios heterogéneos, aplicaciones y múltiples instalacias de Enterprice service Bus.

OSB es una solución propia de ESB. OSB está formado de otros ESB ya que la solución de Oracle se puede comunicar con otros sistemas que utilicen ESB.

Alguna de las características que destancan estos buses: más rápido y productivo. También ofrecen un transporte nativo para aplicaciones empaquetadas y una serie de elementos que garantizan la seguridad en la red.

¿Con qué comunicar la capa de un servicio con otros servicios, bases de datos y aplicaciones?

¿Qué es EJB? ¿Qué es Tuxedo? ¿Diferencias?

EJB (Enterprice Java Bean) es un API para el estándar de construcción de aplicaciones de negocio basadas en JEE. Lo que permite es proporcionar un modelo de componentes al lado del servidor que  controla las transacciones, persistencia, seguridad, comunicación junto con CORBA, eventos mediante JMS, etc.  Ojo! no hay que confundirse con Java Bean que hace de contenedor de objetos pero no pueden utilizarse en invocación remota.

Tuxedo (Transaction for Unix , Extended by Distributed Operations) es una plataforma middleware que se utiliza para gestionar procesos transaccionales de procesos distribuídos en entornos de programación distribuída (definición de la Wikipedia) .  EJB y Tuxedo ofrecen la misma solución con diferente arquitectura.  EJB es un API (conjunto funciones y procedimientos que ofrece una biblioteca para ser usado por otro software como capa de abstracción),  mientras que Tuxedo es un middleware (plataforma de middleware para comunicarse con otras aplicaciones, software, redes, servicios).

Conexión entre Tuxedo/EJB con WDSL

No existe conexión. Tuxedo o EJB se encarga de llevar las transacciones o llamadas al modelo en el lado del servidor mientras que WDSL se utiliza para modelar el proceso de negocio. WDSL tiene su conexión con el lenguaje BPEL que es el que define los procesos del negocio que se está desarrollando.

Por ejemplo, una vez definido el leguaje del flujo de negocio (comprobar si hay strock, si -> facturar , no -> fin) un proceso BPEL se expone al resto como si de un servicio web se tratara y debe tener su propio descriptor WSDL. Tendremos tantos WSDL como procesos BPEL se definan.

Para tener una visión más detallada véase el siguiente artículo de Adictos al trabajo.

Ejemplo genérico

Existe una empresa muy bonita y muy hermosa en la que deciden  rediseñar la arquitectura de forma que reutilicen muchas funciones en diferentes aplicaciones que disponen distribuídas. Para desacoplar esto lo que se hace es diseñar una arquitectura SOA en la que las funciones pasan a estar en los servicios web para llamarla desde cualquier aplicación.  Estos servicios los alojan en diferentes web service  y con un lenguaje distinto de programación.

Un equipo de negocio que describe detalladamente el proceso negocio de una actividad a modo narrativo.

Un equipo de arquitectura recibe las descripciones y transforma que para un proceso en concreto, necesita los siguientes servicios:

  •  Abrir un contacto
  • Generar factura
  • Enviar factura

¿Cómo implementamos todo esto? Tendremos que nutrirnos de muchas herramientas y tecnologías orientadas a SOA para dar una solución.

En el siguiente diagrama vemos la estructura de nuestra arquitectura final. En la parte de arriba están las aplicaciones, en medio el bus que conecta y realiza el flujo de información y abajo los servidos web que contienen los servicios que necesitaremos para realizar un negocio de una aplicación.

Esquema SOA
Esquema de solución SOA

Centrándonos en la aplicación. ¿Qué haremos? Definiremos mediante una máquina de estados los servicios que hemos dicho que nuestra aplicación necesita siguiendo el model BPM y el lenguaje BPEL. Herramientas como Netbeans con OpenESB permiten crear módulos BPEL que contienen definidos los procesos mediante estados. Otra herramienta es JDeveloper de Oracle también nos permiten generar diagramas BPEL.

Los diagramas BPEL se traduce por la propia herramienta en un fichero WDSL. Este fichero WDSL contendrá la lógica de llamadas al estilo “llama al web service A que contiene el servicio “Abrir factura”.  Para ejecutar estos procesos nos valdremos de herramientas como el BPEL Process Manager que utiliza Oracle.

Desde la aplicación al servidor viajaran por el bus, más en contreto un ESB que contiene lógica más compleja para poder comunicar servicios de diferentes lenguajes.

Los servicios se tendrán que nutrir de la base de datos. Cuando nosotros llamamos a “Abrir contacto” necesitaremos obtenerlo de la base de datos.  Para ello existen más tecnologías. EJB es un API para el desarrollo de aplicaciones en java JEE. Lo que hace para el programador es abstraer los problemas de persistencia, transacciones, etc. Este API se alimenta de más soluciones como CORBA, JMS, etc. Es una capa próxima al servidor para abstraer la lógica y comunicar servicios, aplicaciones y bus.

¿Proximos pasos?

  • Profundizar en modelos BPM y lenguaje BPEL.
  • Implementar el ejemplo como el que muestra el siguiente post.

Bibliografía:

Se agradece comunicar comentarios, opiniones, consejos y erratas.

Si te parece interesante compartir es vivir.

Anuncios

2 comentarios en “Introducción a una solución SOA

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s