¿Qué son los microservicios?
Los microservicios son un patrón de diseño de arquitectura de software en el que las aplicaciones se componen de pequeños módulos independientes que se comunican entre sí mediante contratos bien definidos. Cada microservicio se centra en un único concepto.
¿Por qué la arquitectura de microservicios?
Los microservicios facilitan el desarrollo, la prueba y la implementación de partes aisladas de una aplicación. Una vez implementado, cada microservicio se puede escalar de forma independiente según sea necesario.
Los microservicios proporcionan la arquitectura ideal para la provisión continua de aplicaciones. Con los microservicios, cada funcionalidad reside en un contenedor separado junto con el entorno que necesita para ejecutarse. Debido a esto, cada servicio se puede editar en su contenedor sin riesgo de interferir con los demás.
Correctamente gestionado, esto permite:
- Cero tiempo de inactividad para los usuarios.
- Simplificación de la resolución de problemas.
- Cambios rápidos y seguros con mínima afectación a los usuarios.
Implementación de microservicios
El enfoque de microservicios requiere una gran cantidad de aplicaciones independientes. Los servicios pueden ser RESTFul, trabajos programados, basados en eventos, etc. Cada uno tiene diferentes configuraciones de servidor y requisitos de escalado. Incluso con toda esta complejidad, los microservicios deben crearse e implementarse de forma rápida y, a menudo, automáticamente como parte de la canalización de CI / CD.
Estas son algunas de las opciones de implementación:
- Maquinas virtuales
Este patrón arquitectónico es probablemente el más fácil de entender para alguien en transición desde aplicaciones monolíticas. En esta configuración, cada microservicio obtiene su propia máquina virtual.
Este patrón arquitectónico hace que los servicios sean fáciles de entender porque cada servicio está aislado con su propia configuración de CPU, memoria y servidor. Puede iniciar sesión en un servidor y depurar un servicio de la misma manera que lo haría con las aplicaciones monolíticas tradicionales.
Este patrón está perdiendo popularidad debido a sus muchos inconvenientes. El principal es que es caro. Cada servicio requiere un sistema operativo completo que aumenta el tamaño y la potencia necesarios, además, en caso de que se disponga de escalado automático, este tiende a ser muy lento.
- Contenedores
Los contenedores y las máquinas virtuales comparten casos de uso similares. Ambos proporcionan beneficios de asignación y aislamiento de recursos, pero cuando las máquinas virtuales virtualizan el hardware subyacente, los contenedores virtualizan el sistema operativo. Eliminar la necesidad de copiar y configurar un sistema operativo completo hace que los contenedores sean portátiles y eficientes.
Los contenedores son procesos completamente aislados, requieren menos recursos ya que no hay un sistema operativo a duplicar. Esto ha convertido a los contenedores en una opción ideal para desarrollar e implementar aplicaciones. Docker se lanzó en 2013 y rápidamente se convirtió en el estándar de facto.