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

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.

evergreen#aws#fargate#serverless#containers#docker#ecs

¿Qué es?

AWS Fargate es un motor de cómputo serverless para contenedores que funciona con ECS y EKS. Elimina completamente la necesidad de aprovisionar, configurar y gestionar instancias EC2. Defines CPU y memoria para tu contenedor, y Fargate se encarga de toda la infraestructura subyacente.

Fargate representa un cambio fundamental en cómo ejecutamos contenedores en la nube: de gestionar clusters de servidores a simplemente especificar recursos. Esta abstracción permite a los equipos enfocarse en sus aplicaciones en lugar de la infraestructura, acelerando el desarrollo y reduciendo la complejidad operacional.

La arquitectura de Fargate está construida sobre una infraestructura multi-tenant que aísla completamente las tasks entre sí, proporcionando seguridad a nivel de hypervisor mientras mantiene la flexibilidad de los contenedores Docker.

Modelo de precios y optimización de costos

Estructura de precios

Fargate cobra por segundo con facturación mínima de 1 minuto:

On-Demand:

  • vCPU: $0.04048 por vCPU por hora
  • Memoria: $0.004445 por GB por hora

Fargate Spot (hasta 70% descuento):

  • vCPU: $0.01215 por vCPU por hora
  • Memoria: $0.001334 por GB por hora

Ejemplo de cálculo de costos

Aplicación web: 0.5 vCPU, 1GB RAM, ejecutándose 24/7

ModoCosto mensualAhorro
On-Demand$17.50-
Spot$5.2570%

Batch job: 2 vCPU, 4GB RAM, 100 horas/mes

ModoCosto mensualAhorro
On-Demand$25.89-
Spot$7.7770%

Cuándo usar Spot

  • Batch processing y jobs de análisis
  • Aplicaciones stateless con tolerancia a interrupciones
  • Workloads de desarrollo y testing
  • Procesamiento de datos no crítico

Guía de dimensionamiento de tasks

Combinaciones válidas de CPU/Memoria

vCPUMemoria disponible
0.250.5GB, 1GB, 2GB
0.51GB - 4GB (incrementos de 1GB)
12GB - 8GB (incrementos de 1GB)
24GB - 16GB (incrementos de 1GB)
48GB - 30GB (incrementos de 1GB)
816GB - 60GB (incrementos de 4GB)
1632GB - 120GB (incrementos de 8GB)

Estrategias de right-sizing

Para aplicaciones web:

  • Comenzar con 0.5 vCPU, 1GB RAM
  • Monitorear CPU y memoria por 1-2 semanas
  • Escalar verticalmente si CPU >70% o memoria >80%

Para batch jobs:

  • Perfilar localmente con datos representativos
  • Usar métricas de CloudWatch para optimizar
  • Considerar paralelización vs recursos por task

Para microservicios:

  • Dimensionar por service, no uniformemente
  • Services de alta frecuencia: más CPU
  • Services con cache/estado: más memoria

Networking y seguridad

Modo de red awsvpc

Fargate solo soporta el modo awsvpc, donde cada task recibe:

  • Su propia Elastic Network Interface (ENI)
  • Dirección IP privada única
  • Security groups dedicados por task

Límites de ENI por AZ

  • Subnet /24: ~250 tasks concurrentes
  • Subnet /23: ~500 tasks concurrentes
  • Subnet /22: ~1000 tasks concurrentes

Security groups por task

{
  "networkConfiguration": {
    "awsvpcConfiguration": {
      "subnets": ["subnet-12345", "subnet-67890"],
      "securityGroups": ["sg-web-tier", "sg-app-specific"],
      "assignPublicIp": "DISABLED"
    }
  }
}

Cada task puede tener múltiples security groups, permitiendo:

  • Reglas base compartidas (sg-web-tier)
  • Reglas específicas por aplicación (sg-app-specific)
  • Microsegmentación granular

Almacenamiento y persistencia

Ephemeral storage

  • Por defecto: 20GB
  • Máximo: 200GB (sin costo adicional)
  • Ubicación: /tmp y capas de contenedor
  • Persistencia: Solo durante la vida de la task

Integración con EFS

Para almacenamiento persistente:

{
  "volumes": [
    {
      "name": "efs-volume",
      "efsVolumeConfiguration": {
        "fileSystemId": "fs-12345678",
        "transitEncryption": "ENABLED",
        "authorizationConfig": {
          "accessPointId": "fsap-12345678"
        }
      }
    }
  ],
  "containerDefinitions": [
    {
      "mountPoints": [
        {
          "sourceVolume": "efs-volume",
          "containerPath": "/data"
        }
      ]
    }
  ]
}

Platform versions y evolución

Platform Version 1.4.0 (Latest)

  • Ephemeral storage: Hasta 200GB
  • Logging: Soporte para Fluent Bit
  • Task metadata endpoint: v4
  • Network performance: Hasta 25 Gbps

Platform Version 1.3.0

  • EFS support: Volúmenes persistentes
  • Container insights: Métricas mejoradas
  • Task metadata endpoint: v3

Platform Version 1.2.0

  • GPU support: Para workloads de ML/AI
  • Enhanced networking: Mejor rendimiento de red

Fargate vs EC2: análisis comparativo extendido

DimensiónFargateEC2 Launch Type
Overhead operacionalCero — AWS gestiona todoAlto — patching, scaling, monitoring
Velocidad de escaladoSegundos (cold start ~30s)Minutos (launch de instancias)
Costo break-evenMenos de 50% utilizaciónMás de 50% utilización constante
Granularidad de recursosPor task individualPor instancia completa
Aislamiento de seguridadHypervisor-levelShared kernel
Flexibilidad de configuraciónLimitada a opciones FargateControl total del host
Tiempo hasta producciónDíasSemanas

Cuándo elegir cada opción

Fargate es ideal para:

  • Equipos de menos de 10 ingenieros sin expertise en infraestructura
  • Aplicaciones con patrones de tráfico impredecibles
  • Microservicios con diferentes requisitos de recursos
  • Prototipado rápido y MVPs

EC2 es mejor para:

  • Aplicaciones con >70% utilización constante
  • Workloads que requieren acceso al host
  • Optimización extrema de costos a gran escala
  • Configuraciones de red complejas

Ejemplo con Terraform y Spot

# Capacity provider con Fargate Spot
resource "aws_ecs_capacity_provider" "fargate_spot" {
  name = "FARGATE_SPOT"
}
 
resource "aws_ecs_cluster_capacity_providers" "main" {
  cluster_name = aws_ecs_cluster.main.name
  
  capacity_providers = ["FARGATE", "FARGATE_SPOT"]
  
  default_capacity_provider_strategy {
    capacity_provider = "FARGATE_SPOT"
    weight           = 4
    base            = 0
  }
  
  default_capacity_provider_strategy {
    capacity_provider = "FARGATE"
    weight           = 1
    base            = 1
  }
}
 
# Task definition optimizada para Spot
resource "aws_ecs_task_definition" "batch_job" {
  family                   = "batch-processor"
  network_mode            = "awsvpc"
  requires_compatibilities = ["FARGATE"]
  cpu                     = 1024
  memory                  = 2048
  execution_role_arn      = aws_iam_role.execution.arn
  task_role_arn          = aws_iam_role.task.arn
  
  ephemeral_storage {
    size_in_gib = 50
  }
  
  container_definitions = jsonencode([
    {
      name  = "processor"
      image = "my-batch-processor:latest"
      
      logConfiguration = {
        logDriver = "awslogs"
        options = {
          "awslogs-group"         = "/ecs/batch-processor"
          "awslogs-region"        = "us-east-1"
          "awslogs-stream-prefix" = "ecs"
        }
      }
      
      environment = [
        {
          name  = "SPOT_INSTANCE"
          value = "true"
        }
      ]
    }
  ])
}

Monitoreo y observabilidad

Métricas clave de CloudWatch

  • CPUUtilization: >80% indica necesidad de más vCPU
  • MemoryUtilization: >85% indica necesidad de más memoria
  • TaskCount: Para monitorear escalado automático
  • RunningTaskCount: Tasks activas vs deseadas

Container Insights

Habilita métricas detalladas automáticamente:

{
  "containerDefinitions": [
    {
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "/aws/ecs/containerinsights/cluster-name/performance"
        }
      }
    }
  ]
}

¿Por qué importa?

Fargate representa la evolución natural de la computación en contenedores hacia un modelo completamente serverless. Para la mayoría de equipos, elimina semanas de trabajo en configuración y mantenimiento de infraestructura, permitiendo enfocarse en el código que genera valor de negocio. Su modelo de pricing por segundo y la capacidad Spot hacen que sea económicamente viable para una amplia gama de workloads. Sin embargo, para aplicaciones con alta utilización constante (>70%), EC2 puede seguir siendo más económico. La decisión entre Fargate y EC2 no es técnica sino estratégica: ¿prefieres optimizar por velocidad de desarrollo o por costo operacional?

Referencias

  • AWS Fargate User Guide — AWS, 2024. Documentación oficial completa.
  • Fargate Task Definitions — AWS, 2024. Configuración detallada de tasks.
  • Fargate Pricing — AWS, 2024. Calculadora de precios y ejemplos.
  • Fargate Platform Versions — AWS, 2024. Características por versión de plataforma.
  • Fargate Spot Documentation — AWS, 2024. Configuración de capacity providers.
  • ECS Networking with Fargate — AWS, 2024. Configuración de red y security groups.

Contenido relacionado

  • AWS ECS

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

  • Serverless

    Modelo de computación en la nube donde el proveedor gestiona la infraestructura automáticamente, permitiendo ejecutar código sin aprovisionar ni administrar servidores, pagando solo por el uso real.

  • Docker

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

  • 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