En este módulo, dividirá la aplicación 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). Empezar a crear
La arquitectura de aplicaciones final utiliza Amazon Elastic Container Service (Amazon ECS) y el balanceador de carga de aplicaciones (ALB).

a. Cliente
El cliente realiza solicitudes de tráfico mediante el puerto 80.
b. Balanceador de carga
El ALB dirige el tráfico externo hacia el servicio correcto. El ALB inspecciona la solicitud del cliente y utiliza las reglas de direccionamiento para dirigir la solicitud a una instancia y un puerto del grupo objetivo que coincide con la regla.
c. Grupos objetivo
Cada servicio tiene un grupo objetivo que lleva a cabo el seguimiento de las instancias y los puertos de cada contenedor que se ejecuta para el servicio.
d. Microservicios
Amazon ECS implementa cada servicio en un contenedor dentro de un clúster de EC2. Cada contenedor gestiona una única característica.
Aislamiento de bloqueos
Incluso las mejores organizaciones de ingeniería pueden tener y tienen bloqueos fatales en la producción. Además de seguir todas las prácticas recomendadas estándar para gestionar los bloqueos adecuadamente, un enfoque que puede limitar el impacto de los bloqueos es la creación de microservicios. Una arquitectura de microservicios adecuada implica que, si una microparte del servicio se bloquea, solo dejará de funcionar esa parte del servicio. El resto del servicio puede continuar funcionando correctamente.
Aislamiento para la seguridad
En una aplicación monolítica, si una característica de la aplicación tiene un fallo de seguridad, por ejemplo una vulnerabilidad que permite la ejecución de código de forma remota, se debe dar por hecho que un atacante podría haber obtenido acceso al resto de características del sistema también. Esto puede ser peligroso si, por ejemplo, una característica de carga de avatares tiene un problema de seguridad que termina poniendo en peligro la base de datos con las contraseñas de los usuarios. La separación de características en microservicios con Amazon ECS permite el acceso seguro a los recursos de AWS, ya que se asigna a cada servicio su propio rol de AWS Identity and Access Management (IAM). Cuando se respetan las prácticas recomendadas para los microservicios, el resultado es que si un atacante pone en riesgo un servicio, solo puede tener acceso a los recursos de ese servicio, pero no puede acceder horizontalmente a otros servicios sin vulnerarlos también.
Escalado independiente
Cuando las características se dividen en microservicios, la cantidad de infraestructura y el número de instancias que utiliza cada clase de microservicio se puede aumentar y reducir de forma independiente. Esto facilita la medición del costo de una característica concreta y la identificación de las características que pueden requerir optimización en primer lugar. Si una característica particular tiene problemas con las necesidades de recursos, otras características no se verán afectadas y se puede mantener un rendimiento de confianza.
Velocidad de desarrollo
Los microservicios reducen los riesgos de desarrollo, lo cual permite que un equipo trabaje más rápido. En un monolito, la adición de una nueva característica puede afectar potencialmente a todas las demás características contenidas en el monolito. Los desarrolladores deben tener en cuenta detenidamente el impacto de cualquier código que agregan, así como asegurarse de que no se estropee nada. Por otro lado, una arquitectura de microservicios adecuada tiene código nuevo para cada característica nueva que se agrega a un servicio nuevo. Los desarrolladores pueden confiar en que cualquier código que escriban no podrá afectar realmente al código existente en absoluto, a menos que escriban de forma explícita una conexión entre dos microservicios.