Los microservicios (también denominados arquitectura de microservicios) son un enfoque arquitectónico en el que una única aplicación se compone de muchos servicios o componentes más pequeños, de estructura flexible y que se pueden implementar de forma independiente. Estos servicios (también llamados microservicios) suelen tener su propio lote de tecnología, incluida la base de datos y el modelo de datos, y se comunican entre sí a mediante una combinación de API REST, streaming de eventos y message brokers.
Debido a que los microservicios se pueden implementar y volver a implementar de forma independiente, sin impactarse entre sí o interrumpir la experiencia del usuario final, representan una combinación perfecta para las metodologías de entrega automatizadas e iterativas, como la integración/implementación continua (CI/CD) o DevOps.
Además de utilizarse para crear nuevas aplicaciones nativas de la nube, los microservicios se pueden utilizar para modernizar las aplicaciones monolíticas tradicionales.
En una encuesta reciente de IBM realizada a ejecutivos de TI, ejecutivos de desarrolladores y desarrolladores de menor rango, el 87 % de los usuarios de microservicios estuvo de acuerdo en que la adopción de microservicios vale la pena el gasto y el esfuerzo.
Los desarrolladores suelen implementar microservicios dentro de contenedores: componentes de aplicación ligeros y ejecutables que combinan el código fuente de la aplicación (en este caso, el código de microservicios) con todas las bibliotecas y dependencias del sistema operativo (SO) necesarias para ejecutar el código en cualquier entorno. Debido a que son más pequeños, más eficientes en términos de recursos y más portátiles que las máquinas virtuales (VM), los contenedores se han convertido en las unidades informáticas de facto de las aplicaciones modernas nativas de la nube.
Los contenedores amplifican los beneficios de los microservicios al permitir una implementación y una experiencia de gestión consistentes en un entorno multinube híbrido: nubes públicas, nubes privadas e infraestructura local. Pero a medida que las aplicaciones nativas de la nube se multiplican, los contenedores y la complejidad de gestionarlos también crece. La mayoría de las organizaciones que usan microservicios contenerizados también usan una plataforma de orquestación de contenedores, como Kubernetes, para automatizar la implementación y gestión de contenedores a escala.