Motor de cómputo serverless para contenedores que elimina la necesidad de gestionar servidores, permitiendo ejecutar contenedores Docker pagando solo por los recursos consumidos.
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.
Fargate cobra por segundo con facturación mínima de 1 minuto:
On-Demand:
Fargate Spot (hasta 70% descuento):
Aplicación web: 0.5 vCPU, 1GB RAM, ejecutándose 24/7
| Modo | Costo mensual | Ahorro |
|---|---|---|
| On-Demand | $17.50 | - |
| Spot | $5.25 | 70% |
Batch job: 2 vCPU, 4GB RAM, 100 horas/mes
| Modo | Costo mensual | Ahorro |
|---|---|---|
| On-Demand | $25.89 | - |
| Spot | $7.77 | 70% |
| vCPU | Memoria disponible |
|---|---|
| 0.25 | 0.5GB, 1GB, 2GB |
| 0.5 | 1GB - 4GB (incrementos de 1GB) |
| 1 | 2GB - 8GB (incrementos de 1GB) |
| 2 | 4GB - 16GB (incrementos de 1GB) |
| 4 | 8GB - 30GB (incrementos de 1GB) |
| 8 | 16GB - 60GB (incrementos de 4GB) |
| 16 | 32GB - 120GB (incrementos de 8GB) |
Para aplicaciones web:
Para batch jobs:
Para microservicios:
Fargate solo soporta el modo awsvpc, donde cada task recibe:
{
"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:
/tmp y capas de contenedorPara almacenamiento persistente:
{
"volumes": [
{
"name": "efs-volume",
"efsVolumeConfiguration": {
"fileSystemId": "fs-12345678",
"transitEncryption": "ENABLED",
"authorizationConfig": {
"accessPointId": "fsap-12345678"
}
}
}
],
"containerDefinitions": [
{
"mountPoints": [
{
"sourceVolume": "efs-volume",
"containerPath": "/data"
}
]
}
]
}| Dimensión | Fargate | EC2 Launch Type |
|---|---|---|
| Overhead operacional | Cero — AWS gestiona todo | Alto — patching, scaling, monitoring |
| Velocidad de escalado | Segundos (cold start ~30s) | Minutos (launch de instancias) |
| Costo break-even | Menos de 50% utilización | Más de 50% utilización constante |
| Granularidad de recursos | Por task individual | Por instancia completa |
| Aislamiento de seguridad | Hypervisor-level | Shared kernel |
| Flexibilidad de configuración | Limitada a opciones Fargate | Control total del host |
| Tiempo hasta producción | Días | Semanas |
Fargate es ideal para:
EC2 es mejor para:
# 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"
}
]
}
])
}Habilita métricas detalladas automáticamente:
{
"containerDefinitions": [
{
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "/aws/ecs/containerinsights/cluster-name/performance"
}
}
}
]
}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?
Servicio de orquestación de contenedores de AWS que ejecuta y escala aplicaciones Docker sin gestionar la infraestructura de cluster subyacente.
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.
Plataforma de contenedores que empaqueta aplicaciones con todas sus dependencias en unidades portables y consistentes que se ejecutan igual en cualquier entorno.
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.