La arquitectura de microservicios (en inglés, Micro Services Architecture, MSA) es una forma de trabajo para el desarrollo de software que consiste en construir una aplicación como un conjunto de pequeños servicios, los cuales se ejecutan en su propio proceso y se comunican con mecanismos ligeros (normalmente una API de recursos HTTP). Cada servicio se encarga de implementar una funcionalidad completa del negocio, es desplegado de forma independiente y puede estar programado en distintos lenguajes y usar diferentes tecnologías de almacenamiento de datos.

 

Un ejemplo de una arquitectura de microservicios es DOCKER y dentro de sus beneficios tenemos:

  • Los componentes son servicios.
  • Esta organizada en torno a las funcionalidades del negocio, es decir, el sistema se divide en distintos servicios donde cada uno está organizado en torno a una capacidad del negocio. Es muy importante limitar la responsabilidad de cada servicio y que cada servicio implemente toda la funcionalidad del negocio que agrupa.
  • Enfoque en productos, no proyectos.
  • Su arquitectura normalmente se sigue la idea de que un equipo debe estar a cargo de un componente (servicio) durante todo el ciclo de vida del mismo, desde la etapa de diseño y construcción, la fase de producción y hasta la de mantenimiento.
  • Extremos inteligentes.
  • Obliga a tener un gobierno del sistema descentralizado y esto permite usar tecnologías que se adapten mejor a cada funcionalidad; por ejemplo, si una parte del sistema necesita mejorar su rendimiento es posible usar una tecnología, quizás más complicada, que permita alcanzar el nivel de rendimiento requerido.
  • La gestión de datos es descentralizada.
  • Los microservicios prefieren dejar a cada servicio que gestione su propia base de datos, sean estas diferentes instancias de la misma tecnología de base de datos o sistemas de base de datos completamente diferentes.
  • El diseño de los microservicios es tolerante a fallos.
  • Las aplicaciones necesitan ser diseñadas de modo que puedan tolerar las fallas de los distintos servicios. Cualquier llamada de servicio puede fallar y el cliente tiene que ser capaz de responder a esto con la mayor facilidad y eficacia posible, evitando los muy habituales fallos en cascada de las arquitecturas distribuidas.
  • La mayoría de los productos y sistemas desarrollados con el enfoque de microservicios han sido construidos por equipo que usan entrega continua y su precursor la integración continua.

 

Los microservicios cuentan con un diseño evolutivo; ya que cuando se divide el sistema en servicios hay que tener en cuenta que cada uno tiene que poder ser reemplazado o actualizado de forma independiente. Es decir, tiene que permitir una fácil evolución. El diseño del servicio tiene que ser de tal forma que evite en lo posible que la evolución de los servicios afecte a sus consumidores.