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. 

 Código

Disponible en Laboratorios de AWS en GitHub

 Última actualización

31 de marzo de 2023

Módulos

Este tutorial se divide en los siguientes módulos. Debe completar cada módulo antes de pasar al siguiente.

  1. Configuración (20 minutos): en este módulo, instalará y configurará AWS CLI, instalará AWS Copilot e instalará Docker.
  2. 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.
  3. 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).
  4. 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.
  5. 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.

¿Le resultó útil esta página?

Configuración