Los microservicios es un tema puntero ,en uso en muchos de los proyectos de las empresas más vanguardistas.
Una arquitectura con microservicios , es un tipo particular de arquitectura SOA , que permite el desarrollo de una aplicación software como una serie de pequeños servicios independientes , tanto en implementación como en despliegue , cada uno ejecutándose de forma autónoma y comunicándose entre sí mediante peticiones (http REST comúnmente).

Cada microservicio cumple con una funcionalidad de negocio concreta y expone un API, pudiendo estar implementado en cualquier lenguaje de programación y desplegado independientemente del resto.

Éstas características garantizan la agilidad en la disponibilidad  del software y sus correcciones así como en el escalado horizontal además de la posibilidad de multitecnología.

Es importante tener en cuenta que aunque esta filosofia puede ser muy práctica para construir software de calidad rápidamente es necesario la administración y orquestación de los microservicios .Y en ese sentido es necesario garantizar la gestión de la configuración , la localización de los microservicios , la gestión de los logs , la gestión de los despliegues , la tolerancia a fallos.

Componentes necesarios en una arquitectura orientada a microservicios

Los componentes especificados son todos microservicios, siendo por lo tanto un diseño orientado a servicios y mediante servicios. Para cada uno de ellos se indica una opción tecnología de entre las posibles

  • Microservicios de negocio

Cada una de las unidades funcionales de negocio.
Cada microservicio es una aplicación Spring boot.
Swagger para la definición y documentación del Api.

  • Configuración centralizada

Este componente se encarga de centralizar y proveer remotamente la configuración a cada microservicio.

Microservicio extendido de spring cloud config y con git como repositorio.

  • Registro de microservicios
  • Servicio perimetral de exposición de microservicios
  • Autorización
  • Balanceo de carga
  • Logs centralizado
  • Tolerancia a fallos
  • Monitorización

 

En relación al despliegue la opción más aceptada es el encapsulamiento en componentes docker sobre un Paas.