Jonatan Matajonmatum.com
conceptosnotasexperimentosensayos
© 2026 Jonatan Mata. All rights reserved.v2.1.1
Conceptos

AWS ECS

Servicio de orquestación de contenedores de AWS que ejecuta y escala aplicaciones Docker sin gestionar la infraestructura de cluster subyacente.

evergreen#aws#ecs#containers#docker#orchestration#cloud

¿Qué es?

Amazon ECS (Elastic Container Service) es el servicio de orquestación de contenedores nativo de AWS. Ejecuta contenedores Docker a escala con dos modos de lanzamiento: EC2 (gestionas las instancias) y Fargate (serverless, AWS gestiona la infraestructura).

ECS abstrae la complejidad de la orquestación de contenedores mientras mantiene integración profunda con el ecosistema AWS. A diferencia de Kubernetes, ECS está diseñado específicamente para AWS, lo que resulta en menos configuración y mejor integración con servicios como IAM, CloudWatch y Application Load Balancer.

Su arquitectura se basa en cuatro conceptos fundamentales: task definitions (blueprints), tasks (instancias en ejecución), services (mantenimiento de estado deseado) y clusters (agrupación lógica). Esta simplicidad conceptual permite a los equipos enfocarse en sus aplicaciones en lugar de la complejidad operacional del orquestador.

Conceptos clave y arquitectura

ConceptoFunciónEquivalente en K8s
Task DefinitionBlueprint del contenedor (imagen, CPU, memoria, puertos)Pod spec
TaskInstancia en ejecución de una task definitionPod
ServiceMantiene N tasks corriendo con load balancingDeployment + Service
ClusterAgrupación lógica de tasks y servicesCluster + Namespace

Ejemplo de Task Definition

{
  "family": "web-app",
  "networkMode": "awsvpc",
  "requiresCompatibilities": ["FARGATE"],
  "cpu": "256",
  "memory": "512",
  "executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole",
  "taskRoleArn": "arn:aws:iam::123456789012:role/ecsTaskRole",
  "containerDefinitions": [
    {
      "name": "web-server",
      "image": "nginx:latest",
      "portMappings": [
        {
          "containerPort": 80,
          "protocol": "tcp"
        }
      ],
      "essential": true,
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "/ecs/web-app",
          "awslogs-region": "us-east-1",
          "awslogs-stream-prefix": "ecs"
        }
      },
      "environment": [
        {
          "name": "ENV",
          "value": "production"
        }
      ],
      "secrets": [
        {
          "name": "DB_PASSWORD",
          "valueFrom": "arn:aws:secretsmanager:us-east-1:123456789012:secret:db-password"
        }
      ]
    }
  ]
}

Capacity Providers y estrategias de costo

Los Capacity Providers determinan dónde y cómo se ejecutan las tasks, con diferentes tradeoffs de costo y control:

Fargate

  • Costo: $0.04048/vCPU/hora + $0.004445/GB/hora
  • Ventajas: Sin gestión de infraestructura, escalado instantáneo
  • Ideal para: Microservicios, cargas variables, equipos pequeños

Fargate Spot

  • Costo: Hasta 70% descuento sobre Fargate regular
  • Ventajas: Mismo modelo serverless con descuento significativo
  • Limitaciones: Puede ser interrumpido con 2 minutos de aviso
  • Ideal para: Batch processing, cargas tolerantes a interrupciones

EC2

  • Costo: Precio de instancias EC2 + overhead mínimo de ECS
  • Ventajas: Control total, optimización de costos para cargas predecibles
  • Desventajas: Gestión de instancias, patching, escalado manual
  • Ideal para: Cargas estables, equipos con experiencia en infraestructura

Ejemplo de configuración mixta

{
  "capacityProviders": ["FARGATE", "FARGATE_SPOT", "EC2"],
  "defaultCapacityProviderStrategy": [
    {
      "capacityProvider": "FARGATE",
      "weight": 1,
      "base": 2
    },
    {
      "capacityProvider": "FARGATE_SPOT",
      "weight": 4
    }
  ]
}

Estrategias de deployment

Rolling Update (por defecto)

  • Reemplaza tasks gradualmente manteniendo disponibilidad
  • Configurable: minimumHealthyPercent y maximumPercent
  • Ideal para la mayoría de aplicaciones web

Blue-Green con CodeDeploy

  • Deployment completo a nueva versión con rollback instantáneo
  • Requiere dos target groups en ALB
  • Ideal para aplicaciones críticas que requieren rollback rápido
# CodeDeploy configuration
DeploymentConfiguration:
  BlueGreenDeploymentConfiguration:
    TerminateBlueInstancesOnDeploymentSuccess:
      Action: TERMINATE
      TerminationWaitTimeInMinutes: 5
    DeploymentReadyOption:
      ActionOnTimeout: CONTINUE_DEPLOYMENT
    GreenFleetProvisioningOption:
      Action: COPY_AUTO_SCALING_GROUP

Circuit Breaker

  • Detiene deployments automáticamente si fallan health checks
  • Evita cascadas de fallos en deployments problemáticos
  • Configurable por service
{
  "deploymentConfiguration": {
    "deploymentCircuitBreaker": {
      "enable": true,
      "rollback": true
    },
    "maximumPercent": 200,
    "minimumHealthyPercent": 50
  }
}

Service Discovery y networking

AWS Cloud Map

  • DNS-based service discovery nativo
  • Integración automática con Route 53
  • Soporte para health checks

Service Connect

  • Service mesh simplificado para ECS
  • Proxy transparente con observabilidad integrada
  • Ideal para comunicación service-to-service

Internal Application Load Balancer

  • Load balancing HTTP/HTTPS entre services
  • Integración con target groups
  • Path-based y host-based routing
{
  "serviceRegistries": [
    {
      "registryArn": "arn:aws:servicediscovery:us-east-1:123456789012:service/srv-xyz",
      "containerName": "web-server",
      "containerPort": 80
    }
  ]
}

ECS vs EKS: análisis comparativo

DimensiónECSEKS
Complejidad operacionalBaja — AWS gestiona control planeAlta — requiere expertise K8s
Tamaño de equipo ideal2-10 ingenieros10+ ingenieros con dedicación K8s
Costo mensual (10 services)~$200 (solo compute)~$270 ($72 control plane + compute)
Tiempo hasta producción1-2 semanas4-8 semanas
PortabilidadLock-in AWSMulti-cloud, on-premises
EcosistemaAWS tools nativoHelm, operators, CNCF ecosystem
Curva de aprendizajeModeradaEmpinada

Debugging y observabilidad

ECS Exec

Permite ejecutar comandos dentro de contenedores en ejecución, similar a kubectl exec:

# Habilitar ECS Exec en task definition
aws ecs execute-command \
  --cluster my-cluster \
  --task arn:aws:ecs:us-east-1:123456789012:task/abc123 \
  --container web-server \
  --interactive \
  --command "/bin/bash"

Container Insights

  • Métricas automáticas de CPU, memoria, red, disco
  • Dashboards pre-configurados en CloudWatch
  • Alertas basadas en thresholds personalizables

Métricas clave para monitoreo

# CloudWatch Alarms recomendadas
CPUUtilization: >80% por 5 minutos
MemoryUtilization: >85% por 5 minutos
TaskCount: <desired_count por 2 minutos
TargetResponseTime: >500ms por 3 minutos

Patrones de arquitectura

Microservicios con ALB

  • Cada service expuesto via ALB con path-based routing
  • Service discovery via Cloud Map
  • Shared VPC con subnets privadas

Batch Processing

  • Tasks que se ejecutan y terminan
  • Integración con EventBridge para scheduling
  • Fargate Spot para optimización de costos

Sidecar Pattern

  • Contenedores auxiliares (logging, monitoring, proxy)
  • Shared volumes entre contenedores
  • Lifecycle management coordinado

¿Por qué importa?

ECS representa el sweet spot entre simplicidad y capacidad para la mayoría de equipos que ejecutan contenedores en AWS. Mientras Kubernetes ofrece más flexibilidad y portabilidad, ECS reduce significativamente la complejidad operacional — no hay control plane que gestionar, actualizaciones que planificar, o certificados que rotar. Para equipos que no necesitan la portabilidad multi-cloud de Kubernetes, ECS permite entregar valor más rápido con menos overhead operacional. La integración nativa con IAM, CloudWatch y otros servicios AWS elimina la fricción típica de configurar observabilidad y seguridad que existe en ecosistemas Kubernetes.

Referencias

  • Amazon ECS Developer Guide — AWS, 2024. Documentación oficial completa.
  • ECS Best Practices Guide — AWS, 2024. Mejores prácticas para contenedores en ECS.
  • ECS Deployment Types — AWS, 2024. Guía de estrategias de deployment.
  • ECS Pricing — AWS, 2024. Modelo de precios y calculadora.
  • Container Insights for ECS — AWS, 2024. Monitoreo y observabilidad.
  • ECS vs EKS Decision Guide — AWS, 2023. Comparación detallada para toma de decisiones.

Contenido relacionado

  • Docker

    Plataforma de contenedores que empaqueta aplicaciones con todas sus dependencias en unidades portables y consistentes que se ejecutan igual en cualquier entorno.

  • AWS Fargate

    Motor de cómputo serverless para contenedores que elimina la necesidad de gestionar servidores, permitiendo ejecutar contenedores Docker pagando solo por los recursos consumidos.

  • Microservicios

    Estilo arquitectónico que estructura una aplicación como colección de servicios pequeños, independientes y desplegables, cada uno con su propia lógica de negocio y datos.

  • Módulos Terraform para AWS Serverless

    Colección de 13 módulos Terraform publicados en el Terraform Registry para desplegar arquitecturas serverless en AWS, con 12 ejemplos que cubren desde ECS básico hasta CRUD full-stack con DynamoDB y AgentCore con MCP.

Conceptos