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.


.jpg)
.jpg)
.jpg)
