Ser Agile en Microservicios

Hoy quisiera hablarles de Agile en Microservicios y por qué es importante de cara a la transformación o incursión digital de cualquier empresa sin importar su tamaño.

Dado que el tema puede es muy extenso, a la par de apasionante, nos centraremos en una pieza clave de Arquitectura Orientada a Servicios llamada Enterprise Service Bus.

Dependiendo del proveedor puede ser Oracle Service Bus, Mule ESB o Tibco.

Un ESB busca entre otras cosas desacoplar el core del cliente del proveedor de servicios, con lo que lograremos:

- Crear Microservicios que no dependan tecnológicamente de los proveedores. Al tratarse de mensajes estandarizados como puede ser SOAP o RESTFul, también soporta jms y

ftp. Este tipo de acoplamiento tecnológico o de contratos se hacen desde el ESB.

- El core de negocio no dependa del formato del dato que de el proveedor. Claro ejemplo son las fechas o los decimales. Esta traducción se haría desde el OSB y así el core de

negocio siempre tendría el mismo formato.

- Agregar o eliminar proveedores de servicios, gracias a la multiplexación, sin que se vea afectado el core de negocio. Este concepto es muy útil en agencia de viajes, motores de

riesgo o simplemente proveedores de insumos.

- Abstraer el core de negocio de las bases de datos nos permite que tengamos diferentes tipos de SQL y NoSql, sus controladores están en el ESB y el core siempre obtendrá el

mismo formato sin importar el origen. Esto hablando de Big Data, Cache Services o Sensorica es increible como se logra el nivel de abstracción.

¿Qué tiene que ver Agile con Microservicios? La versatilidad que ofrece la Arquitectura de Microservicios al mantener identificados los servicios y atomizarlos, facilitar que el core de negocio este en buena forma al abstraerse de la tecnología de los proveedores y orígenes de datos, hace que Agile sea un aliado por su forma rápida y eficiente de responder al time to market para obtener el mejor retorno de inversión por coste de oportunidad.

A grandes rasgos, una empresa con metodologías Agile y Arquitectura de Microservicios, es una empresa que puede acoplarse más ágilmente a los eventos externos del mercado y así obtener un mayor ROI.

Una gran virtud en proyectos orientados a servicios con Agile es que ya la arquitectura divide muy bien las áreas de desarrollo, como ya se encuentra abstraído, haciendo esto más fácil montar el equipo necesario para crear o modificar el Microservicio. En un ejemplo muy básico y complejo, el development team de un servicio podríamos decir con certeza que el front obtendrá del API mensajes homogéneos de información. El desarrollador del API sabrá que los datos siempre vendrán de la misma fuente y con un formato estandarizado. La personaencargada de gestionar el ESB sabe que es lo que tiene ya de origen de datos, conoce los proveedores y puede probar sus conexiones sin necesidad del desarrollo del API cliente. De la otra manera sin ESB:

- Estaríamos hablando del mismo dilema de cuantos desarrolladores se necesitarían para la construcción del servicio en la misma tecnología pero con protocolos diferentes de

comunicación entre proveedores de servicios.

- Difícilmente habría un buen control de las librerías instaladas en cada servidor y eso generaría como siempre elementos duplicados.

- El día de mañana que se quisiese agregar o eliminar un proveedor de servicios, habría que recompilar esas clases poniendo en riesgo el core de negocio.

- El software entre más crezca sin estar orientada a servicios, empeoraría la tan llamada Arquitectura Espagueti. Aumentando el nivel de inestabilidad, empobreciendo el mantenimiento, poca flexibilidad al cambio y aumentando la posibilidad de un desastre para la empresa.

En conclusión, Agile y Arquitectura en Microservicios son unos excelentes aliados estratégicos que permitirán tener empresas de servicios aptas para gestionar mejor el riesgo y así tener mejor ROI.