El desarrollo TI que ha facilitado la tecnología con contenedores y de orquestación ha hecho que, en los últimos años, los microservicios (microservers) hayan alcanzado gran popularidad como arquitectura software. Netflix es un perfecto ejemplo de uso de arquitectura de microservicios (MSA), una opción que permite a la compañía prestar sus servicios de manera continuada a través del desarrollo de aplicación de software compuesta por servicios modulares. Twitter, Amazon o Paypal son otras de las compañías que también han desarrollado su negocio en base a esta arquitectura.
Como parte de la Arquitectura Orientada a Servicios (SOA), con los microservicios conseguimos trabajar por “bloques” –del mismo modo que en una compañía se dividen las diferentes funciones en áreas (logística, administración, marketing, atención al cliente, etc.)-, estableciendo así una división orientada a conseguir la máxima funcionalidad.
Frente a la arquitectura monolítica, en la que los módulos están conectados en una robusta aplicación, los microservicios ofrecen interesantes ventajas:
- Destaca sobre todo el desarrollo y despliegue independiente de los servicios, lo que facilita sobre manera el desarrollo de nuevas funcionalidades y su liberación sin sobredimensionar.
- Ante posibles fallos, su estructuración independiente permite aislarlos sin afectar a toda la aplicación.
- Los microservicios facilitan las posibilidades de escalado en función de las necesidades, sin tener que escalar toda la aplicación, sólo aquellos servicios que realmente lo requieran.
- Los microservicios permiten separar los ciclos de desarrollo, pudiendo implementar actualizaciones y cambios de manera independiente.
- Permite la codificación de los distintos microservicios que conforman la aplicación en lenguajes diferentes.
- Cada microservicio cuenta con su propia base de datos.
- Cada microservicio tiene un propósito único y funciona de manera independiente –siendo codificado por el desarrollador siguiendo el principio de responsabilidad única-.
- Se mantienen sólo las comunicaciones básicas entre los microservicios. La comunicación entre los distintos componentes se habilita a través de una API o con mensajería asincrónica ligera.
- Otra de sus características es la automatización, que permite a cada microservicio su propia autogestión.
En los últimos años, la popularidad de la arquitectura de microservicios ha llevado a la creación de nuevas librerías, aplicaciones y herramientas para cubrir necesidades con las que originariamente los microservicios no contaban, lo que ha aumentado las capacidades de desarrollo de proyectos con esta arquitectura.
Por qué optar por la arquitectura de microservicios
Especialmente indicada para proyectos en los que la modularidad, la manejabilidad y la descentralización son importantes, y en los que se produce un alto volumen de tráfico o transacciones.
Cuando tenemos una aplicación monolítica que necesita un ampliación de funcionalidades, podemos optar por habilitar el despliegue de los módulos para que se acoplen a la aplicación ya existente o volcar toda la aplicación en una nueva aplicación de microservicios creada para sustituirla.