Desplegando Microservicios (Python+Nodejs) en AWS ECS Fargate Utilizando OpenTofu + Docker Hub + ALB (Guía Completa Paso a Paso)

Despliega tus microservicios en AWS ECS Fargate de forma sencilla y rápida con OpenTofu y Docker Hub. Aprende cómo hacerlo en este tutorial paso a paso.

martes, 25 de noviembre de 2025 • 5 min de lectura • Equip Q2BSTUDIO

Despliegue de Microservicios en AWS ECS Fargate con OpenTofu y Docker Hub

Desplegando Microservicios (Python+Nodejs) en AWS ECS Fargate Utilizando OpenTofu + Docker Hub + ALB Guía Completa Paso a Paso

Resumen: En arquitecturas modernas las aplicaciones suelen componerse de varios microservicios que se ejecutan de forma independiente. En esta guía práctica describimos cómo desplegar automáticamente dos microservicios, uno en Nodejs y otro en Python Flask, utilizando Docker, Trivy para análisis de vulnerabilidades, Docker Hub para almacenamiento de imágenes y OpenTofu como herramienta IaC para provisionar AWS ECS Fargate con un Application Load Balancer que enruta por rutas /users y /orders.

Estructura del proyecto: la carpeta principal microservices-ecs-tofu contiene services con user-service y order-service, cada servicio con su Dockerfile y código fuente, y la carpeta tofu con la infraestructura OpenTofu: network.tf para VPC, subnets, gateway y tablas de ruteo; iam.tf para el rol de ejecución de tareas ECS; ecs.tf para el cluster, load balancer, listener y recursos de ECS; main.tf para orquestar el build, scan y push mediante null_resource; variables.tf y terraform.tfvars para parametrizar servicios y credenciales; scripts/build_scan_push.sh para construir, analizar y subir imágenes.

Microservicio User Service Nodejs: app.js expone GET / que devuelve un mensaje y GET /users que devuelve una lista JSON de usuarios. Escucha en el puerto 3000. Dockerfile basado en node 20-bookworm-slim instala dependencias y expone 3000.

Microservicio Order Service Python Flask: app.py expone GET / que devuelve un mensaje y GET /orders que devuelve una lista JSON de pedidos. Escucha en el puerto 4000. Dockerfile basado en python 3.10-slim instala Flask y expone 4000.

Construcción, análisis y publicación de imágenes: el script build_scan_push.sh recibe el nombre del servicio, nombre y tag de la imagen y credenciales de Docker Hub, cambia al directorio del servicio, construye la imagen con docker build, ejecuta trivy image con severidad HIGH y CRITICAL, etiqueta la imagen con el usuario de Docker Hub y la publica con docker push. OpenTofu invoca este script mediante un recurso null_resource para cada servicio definido en variables.tf.

Resumen de los recursos OpenTofu principales: network.tf crea una VPC 10.0.0.0/16, dos subnets públicas en diferentes availability zones, un internet gateway y tabla de ruteo pública; iam.tf crea el role ecsTaskExecutionRole con la policy AmazonECSTaskExecutionRolePolicy; ecs.tf crea un cluster ECS, un ALB de tipo application con security group que permite tráfico entrante y un listener HTTP en el puerto 80 con respuesta por defecto. Además se crean target groups, reglas de listener y servicios ECS para cada microservicio, configurando tareas Fargate que usan las imágenes publicadas en Docker Hub y asignando la ruta de enrutamiento path based routing para /users y /orders hacia los target groups correspondientes.

Variables y parametrización: variables.tf define docker_username, docker_password, aws_region y services como un map con image_name, image_tag, port y path por servicio. En terraform.tfvars se configuran los valores de ejemplo: user-service en el puerto 3000 con path /users y order-service en el puerto 4000 con path /orders.

Flujo de despliegue con OpenTofu: ejecutar desde la carpeta tofu los comandos tofu init, tofu fmt, tofu validate, tofu plan y tofu apply. OpenTofu creará la infraestructura en AWS, construira y publicara las imágenes según los recursos null_resource y configurara ECS Fargate junto al ALB. Para revisar, abrir la consola de AWS ECS y comprobar que el Load Balancer existe, que las target groups están configuradas y que las comprobaciones de salud devuelven healthy. Para limpiar, ejecutar tofu destroy cuando ya no se necesite la infraestructura.

Buenas prácticas y seguridad: usar roles IAM con permisos mínimos, marcar docker_password como sensitive en variables, no almacenar credenciales en control de versiones y usar Trivy para detectar vulnerabilidades HIGH y CRITICAL antes de publicar imágenes en Docker Hub. Para entornos de producción considerar ECR con escaneo en repositorio, uso de secretos de AWS Secrets Manager o SSM Parameter Store y políticas de seguridad en el ALB y las tareas ECS.

Comandos útiles de ejemplo: docker build -t user-service:v1 . trivy image --severity HIGH,CRITICAL --ignore-unfixed --exit-code 0 user-service:v1 docker login -u usuario --password-stdin docker tag user-service:v1 usuario/user-service:v1 docker push usuario/user-service:v1 y para OpenTofu: tofu init tofu plan tofu apply tofu destroy.

Casos de uso y extensiones: esta arquitectura es una base para implementar despliegues CI/CD integrando GitHub Actions o GitLab CI que ejecuten el build, scan y push de forma automatizada; añadir health checks más estrictos, auto scaling en ECS Service y circuit breakers a nivel de aplicación; usar AWS X Ray o herramientas APM para trazabilidad distribuida entre microservicios.

Sobre Q2BSTUDIO: somos Q2BSTUDIO, empresa de desarrollo de software especializada en aplicaciones a medida y software a medida, con experiencia en inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio e implementaciones con Power BI. Diseñamos soluciones a medida que combinan desarrollo a medida, agentes IA y arquitectura cloud segura para acelerar la transformación digital de las empresas. Si desea conocer nuestros servicios de aplicaciones y desarrollo a medida visite Desarrollo de aplicaciones y software multiplataforma y para soluciones cloud y migracion a AWS o Azure puede consultar Servicios cloud AWS y Azure.

Palabras clave integradas: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi.

Conclusión: desplegar microservicios heterogéneos en AWS ECS Fargate utilizando OpenTofu, Docker Hub y ALB permite un flujo reproducible y automatizado que incluye construcción de imágenes, escaneo de seguridad y despliegue seguro con balanceo de carga y enrutamiento por rutas. Esta guía ofrece una base práctica para adaptar la solución a requisitos reales, integrarla en pipelines CI/CD y escalar hacia arquitecturas más avanzadas, contando con el respaldo y la consultoria experta de Q2BSTUDIO si necesita una implementación profesional.

UNA PAUSA?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.