WSO2 es un software abierto enfocado a proveer una arquitectura orientada a servicios (SOA) que nos permite cubrir todos los pasos del ciclo de vida de un proyecto de desarrollo. Forma parte de la plataforma WSO2 Integration Agile y se compone de los siguientes productos:
WSO2 Api Manager: desarrollo y publicación de APIs
WSO2 Identify Server: gestión de credenciales y protocoles de acceso a los recursos.
WSO2 Enterprise Integration: implementación de patrones de integración empresariales (EIP)
Arquitectura
WSO2 EI es un producto de integración para proyectos en la nube y proyectos en contenedores. Permite escalar y encontrar soluciones de integración sofisticadas en la mejora del producto final, utilizando estilos de arquitectura de integración como microservicios o ESB centralizado.
La arquitectura de WSO2 EI es la de la imagen
Proporcionando un middleware con capacidades de integración de datos, integración de procesos, monitoreo y capacidades de intermediación de mensajes.
Capacidad ESB (Enterprise Service Bus) como canal tanto centralizado como descentralizado para integrar servicios, datos y sistemas heredados, propietarios o tipo SaaS.
Ofrece una amplica gama de conectores para la interacción con otros sistemas. Integración de datos y transformación de los mismos en diferentes formatos y capacidades analíticas mediante herramientas visuales como depuración interactiva o mapeo de datos.
Micro Integrator
Micro Integrator es el runtime que nos permitirá la creación de APIs, servicios SOAP o servicios de acceso a base de datos. Está basado en configuraciones xml.
Incluye una herramienta CLI, un operador de Kubernetes, panel de monitoreo y cientos de conectores.
Centralizado, utilizando Micro Integrator como la capa de integración central.
Descentralizado, permite usar Micro Integrator en sus integraciones nativas de la nube, donde se utilizan microservicios para integrar las distintas API, eventos o sistemas.
Integration Studio
Integration Studio será la herramienta visual, basada en Eclipse que usaremos para el diseño de integraciones a través del drag and drop.
Entorno
WSO2 EI Micro Integrator 7.0 se ha instalado en un VM con Windows 10, pudiendo instalarse en Docker o Kubernetes
La máquina tiene las siguientes características:
Windows 10 Pro
Open JDK versión 8
Apache
Instalación y configuración
Se ha realizado la instalación siguiendo la guía
https://docs.wso2.com/display/EI650/Installing+WSO2+Integration+Studio
Se descarga la distribución para el sistema operativo que vamos a usar.
Lo descomprimimos y ya está listo para iniciar la app Integration Studio.
Casos de uso
Aquí se puede encontrar más información al respecto:
https://ei.docs.wso2.com/en/latest/micro-integrator/use-cases/integration-use-cases
Enrutamiento de mensajes
El enrutamiento puede estar basado según:
encabezado
reglas
políticas
Dirigiendo la llamada al endpoint correcto dependiendo de, por ejemplo, el valor de un parámetro.
Transformación de mensajes
Permite la comunicación entre un cliente y un servicio que aceptan diferentes formatos. Por ejemplo JSON a XML.
También podremos mapear los mensajes, pudiendo cambiar no sólo el formato, sino la estructura del mensaje que se va a entregar.
Orquestación de servicios
Se pueden exponer varios servicios dentro de un único servicio, de modo que el cliente sólo tendrá acceso a un único servicio que encapsula todos los demás servicios.
Síncrono, varios servicios se orquestan uno detrás de otro de manera síncrona.
Asíncrono, se invocan varios servicios en paralelo sin ningún bloqueo
El cliente recibirá un payload con la información seleccionada en cada uno de los servicios y resumida en una única respuesta final.
Procesado asíncrono de mensajes
Se utiliza para evitar la pérdida de información en la entrega de mensajes a servicios que sólo aceptan mensajes de solicitud a una velocidad determinada.
Con este proceso, los mensajes nunca se pierden, sino que se quedan encolados en un almacén (Message Broker).
El procesador recuperará estos mensajes para entregarlos al servicio final.
Integración de datos
Realizamos la conexión y consulta a distintas bases de datos desde la pestaña Data Service, bien usando el CLI (Interfaz por comandos) o la interfaz gráfica del Integration Studio. Podemos usar una base de datos existente y bien crear la nuestra propia mediante el CLI. Añadir las Querys deseadas y mapear el resultado en el formato deseado, por ejemplo XML, con el Cliente HTTP que viene integrado en el Integration Studio probaremos que la conexión se hizo correctamente.
Monitoreo
En WSO2 EI tenemos varias formas de monitorizar, mediante una serie de sistemas de logs:
Logs del sistema
Logs de aplicación
El mediador Log
Logs de acceso
Traceador SOAP
Para habilitar los DEBUG LOGS, sencillamente cambiando este valor: log4j.category.org.apache.synapse=DEBUG en el directorio MI_HOME/conf
Los TRACE LOGS tracean el path completo cuando un mensaje pasa a través de una secuencia. Añadiremos trace=”enable”en el archivo de configuración del proxy.
Conclusiones
WSO2 EI es una opción muy bien acaba, fácil de configurar e incluye una gran variedad de conectores y políticas que podemos integrar en nuestras API. El Integration Studio nos facilita toda la implementación de una manera visual, esquematizando en todo momento lo que estamos desarrollando y permitiendo una rápida depuración mediante logs y un cliente http para realizar un testeo rápido.
Enlaces de interés
WSO2 Enterprise Integrator official website – https://wso2.com/integration/
WSO2 APIM official website – https://wso2.com/api-management/
WSO2 Enterprise Integrator 7.x series – https://ei.docs.wso2.com/en/latest
WSO2 Micro Integrator – https://ei.docs.wso2.com/en/latest/micro-integrator/overview/quick-start-guide/
WSO2 Integration Studio (developer tool) – https://ei.docs.wso2.com/en/latest/micro-integrator/develop/WSO2-Integration-Studio/
Develop integration use cases using WSO2 EI – https://ei.docs.wso2.com/en/latest/micro-integrator/use-cases/integration-use-cases/
WSO2 Enterprise Integrator 6.x series – https://docs.wso2.com/display/EI660/Quick+Start+Guide
WSO2 Micro Integrator vs WSO2 EI 6.x series – https://ei.docs.wso2.com/en/latest/micro-integrator/references/comparisong-mi7-ei6xx/
Author