Microservicios


¿Qué pasa cuándo tu aplicación corporativa no para de engordar? Vamos añadiendo encima más y más servicios hasta llegar a un punto en que parece que lo único que podemos hacer es escalar en hardware (más maquinas) hasta llegar al colapso.

Para evitar tener una enorme aplicación monolítica, basada en lo que para los Javeros es el cocktel SOAP, WSDL, JEE y ESB; ahora se tiende a APIs REST que exponen pequeños comportamientos y se comunican de forma distribuida entre servicios, sin importan que no estén en la misma aplicación.

Martin Fowler dice en este artículo de obligada lectura:

Microservicios es una aproximación de desarrollo que consiste en construir una aplicación sencilla como un conjunto de servicios pequeños.

Los microservicios nacen para dar soporte a una funcionalidad de negocio, pueden ser desplegados de manera automática, y sobre todo, de manera independiente al resto de servicios de la aplicación. Son tan independientes, que podrían estar desarrollados en diferentes lenguajes.

Escalabilidad:
En el mismo artículo, Martin Fowler dice, además:

Una arquitectura de microservicios pone cada elemento de funcionalidad en un servicio separado y escala redistribuyendo estos servicios a través de los servidores, replicándolos según se vaya necesitando.

Arquitectura:
La arquitectura basada en microservicios propone que tanto el interfaz como las aplicaciones de usuario sean clientes de una colección de servicios que operan cada uno sobre un dominio.

Se hace necesario un API gateway para los microservicios, ya que una página puede necesitar gran cantidad de ellos y sería ineficiente realizar una llamada HTTP por cada microservicio desde el navegador. Además, el gateway puede lanzar en paralelo las peticiones a cada microservicio en lugar de ejecutar una única subrutina para obtener todos los datos necesarios para el pintado de una página web.

Y…¿por qué no usar una librería en lugar de microservicios? Estas aportan reusalibidad de código y acceso a la misma funcionalidad desde varios sitios, pero por el contrario, un cambio en una librería, implica un despliegue en todos sus clientes.

Una de las limitaciones de los microservicios no resuelven el tema del versionado.

Ventajas de los Microservicios:
– Escalabilidad.
– Mantenibilidad de los servicios.
– Altamente desacoplados: Despliegue progresivo, sin afectar a todo el sistema.

Desventajas de los Microservicios:
– Mantenibilidad de infraestructura: Necesaria además la automatización e integración continua para desplegar gran cantidad de servicios.
– Rendimiento: Necesarias más llamadas HTTP.
– Monitorización y logging.

Fuentes:
Trabajar con microservicios evitando la frustracion de las enormes aplicaciones monoliticas.
Microservicios.
Microservicios y SOA.
Microservicios.