Arquitecturas Basadas en Microservicios: Arquitectura Spring Cloud

BI Geek / Arquitecturas  / Arquitecturas Basadas en Microservicios: Arquitectura Spring Cloud

Arquitecturas Basadas en Microservicios: Arquitectura Spring Cloud

Como ya hemos visto en el anterior post, una introducción a lo que es la arquitectura de microservicios, en este post nos vamos a centrar en la visión del desarrollador describiendo el framework Spring Cloud.

El framework está construido sobre Spring Boot, el cual proporciona auto-configuraciones básicas para facilitar el desarrollo de los microservicios, además de proporcionar ya un contenedor de aplicaciones (Tomcat, Jetty, Undertow) embebido.

Spring Cloud le ofrece al desarrollador las herramientas necesarias para la construcción de patrones comunes en sistemas distribuidos. Gracias a ello podremos reducir el tiempo de desarrollo de los microservicios.

 

Alguno de estos patrones comunes son:
Autodescubrimiento Seguridad distribuida  Testing de contratos distribuidos Circuit breaker
Configuración centralizada Enrutamiento Balanceo de carga Traceo de llamadas

Componentes

A continuación se describen los módulos que más interesantes nos parecen de Spring Cloud. Hay que tener en cuenta que el proyecto está muy vivo, en evolución constante. De manera adicional, en próximos artículos trataremos cada uno de ellos más en detalle.

Solo como aclaración, algunos componentes de Spring Cloud son integraciones de software desarrollado por Netflix, como Eureka, Hystrix, Zuul y Ribbon.

Eureka

Encargado del autodescubrimiento con el patrón vía cliente, los microservicios se registran con su nombre en el servidor de Eureka, donde dejan su IP y su puerto.

Si cualquier microservicio necesita comunicarse, solo debe saber su nombre, para ello le preguntará Eureka su localización y le devolverá todas las IPs y puertos. Será el propio microservicio el encargado del balanceo de peticiones.

Spring Cloud Config

Encargado de la centralización de la configuración, está pensado para emplearse en varios entornos. También proporciona seguridad a la configuración.

Spring Cloud Security

Ofrece seguridad centralizada para el sistema distribuido, usualmente está pensado para ser empleado con un servicio de gestión de identidad. Usa OAuth2, lo que permite crear inicios únicos de sesión y gestión de tokenes.

Spring Cloud Contract

Se usa para hacer testing sobre las integraciones entre microservicios, para ello usa el patrón Consumer Driven Contracts, que de una forma resumida se enfoca en crear contratos y validarlos.

Ribbon

Su funcionalidad es la del balanceo de carga entre llamadas de los microservicios. Se integra totalmente con Eureka.

Feign

Nos permite hacer clientes rest fácilmente de una declarativa. Feign crea un balanceador de Ribbon para integrarse con todo el ecosistema.

Hystrix

Implementa el patrón circuit breaker, con el que se controla el error de los microservicios mejorando la resilencia de los mismos.

El patrón circuit breaker usa semáforos y métricas para indicar si el servicio funciona correctamente. Además ofrece un dashboard (Turbine) donde se agregan las métricas que usa Hystrix.

Zuul

Actúa como gateway sobre nuestros microservicios. Será la puerta de entrada de nuestro ecosistema de microservicios, disponiendo de capacidad para añadir filtros y seguridad. Además, para Netflix cumple los siguientes casos de uso:

Casos de uso para Netflix
Autenticación Canary tests Seguridad
Insights Enrutamiento dinámico Manejo de la respuesta estática
Pruebas de estrés Migración de servicios Gestión del tráfico activo / activo

Spring Cloud Sleuth

Implementa una solución de traceo de llamadas distribuido para Spring Cloud, va añadiendo los identificadores a cada llamada y puede luego agregarlas a Zipkin o HTrace. También puede loguearse por el log del sistema. Muy necesario para la monitorización de la plataforma.

 

Referencias