División de una aplicación monolítica en microservicios con AWS Copilot, Amazon ECS, Docker y AWS Fargate
TUTORIAL
Introducción
Información general
En este tutorial implementará una aplicación monolítica de Node.js en un contenedor de Docker y, a continuación, desacoplará la aplicación en microservicios sin provocar tiempos de inactividad. La aplicación de Node.js aloja un sencillo boletín de mensajes con conversaciones y mensajes entre los usuarios.
Por qué es importante
Las arquitecturas monolíticas tradicionales son difíciles de escalar. A medida que crece la base de código de una aplicación, resulta compleja de actualizar y mantener. La incorporación de nuevas características, lenguajes, marcos y tecnologías se vuelve muy difícil, lo que limita la innovación y las nuevas ideas.
En una arquitectura de microservicios, cada componente de aplicación se ejecuta como un servicio propio y se comunica con otros servicios a través de una API bien definida. Los microservicios se crean en torno a las capacidades empresariales y cada servicio desempeña una sola función. Los microservicios se pueden escribir con distintos marcos y lenguajes de programación, y puede implementarlos independientemente, como un solo servicio o como un grupo de servicios.
Qué logrará
Durante este tutorial, le mostraremos cómo ejecutar una aplicación monolítica simple en un contenedor de Docker, implementar la misma aplicación como microservicios y, a continuación, cambiar el tráfico a los microservicios sin tiempo de inactividad. Después de terminar, podrá usar este tutorial y el código que contiene como plantilla para crear e implementar sus propios microservicios en contenedores en AWS.
Arquitectura monolítica
Toda la aplicación de Node.js se ejecuta en un contenedor como un único servicio y cada contenedor tiene las mismas características que los demás. Si una característica de la aplicación experimenta un pico de la demanda, se debe escalar toda la arquitectura.
Arquitectura de microservicios
Cada característica de la aplicación de Node.js se ejecuta como un servicio independiente en su propio contenedor. Los servicios pueden escalarse y actualizarse independientemente de los demás.
Requisitos previos
- Una cuenta de AWS: si aún no tiene una cuenta, siga el tutorial Configuración del entorno de AWS para obtener una descripción general rápida.
- Instalar y configurar AWS CLI
- Instalar y configurar AWS Copilot
- Instalar y configurar Docker
- Un editor de texto. Para este tutorial, usaremos VS Code, pero puede usar su IDE preferido.
Experiencia en AWS
Intermedia
Tiempo mínimo de realización
110 minutos
Costo de realización
Apto para el nivel gratuito
Requisitos
- Una cuenta de AWS: si aún no tiene una cuenta, siga el tutorial Configuración del entorno de AWS para obtener una descripción general rápida.
- Instalar y configurar AWS CLI.
- Instalar y configurar AWS Copilot.
- Instalar y configura Docker.
- Un editor de texto. Para este tutorial, usaremos VS Code, pero puede usar su IDE preferido.
Servicios utilizados
Código
Última actualización
Módulos
Este tutorial se divide en los siguientes módulos. Debe completar cada módulo antes de pasar al siguiente.
- Configuración (20 minutos): en este módulo, instalará y configurará AWS CLI, instalará AWS Copilot e instalará Docker.
- Inclusión en contenedores e implementación del monolito (30 minutos): en este módulo, incluirá la aplicación en contenedores, utilizará AWS Copilot para crear instancias de un clúster administrado de instancias de computación de EC2 e implementará la imagen como un contenedor que se ejecuta en el clúster.
- División del monolito (20 minutos): en este módulo, dividirá la aplicación de Node.js en varios servicios interconectados e insertará la imagen de cada uno de los servicios en un repositorio de Amazon Elastic Container Registry (Amazon ECR).
- Implementación de los microservicios (30 minutos): en este módulo, implementará su aplicación de Node.js como un conjunto de servicios interconectados detrás de un equilibrador de carga de aplicación (ALB). Luego, utilizará el ALB para trasladar sin interrupciones el tráfico del monolito a los microservicios.
- Limpieza (10 minutos): en este módulo, terminará los recursos que creó durante este tutorial. Detendrá los servicios que se ejecutan en Amazon ECS, eliminará el ALB y eliminará la pila de AWS CloudFormation para terminar el clúster de Amazon ECS, incluidas todas las instancias de EC2 subyacentes.