Operación de contenedores serverless con AWS Fargate - Patrones de uso con ECS y EKS
Contenedores serverless sin gestión de instancias, con diferenciación de uso entre ECS y EKS y optimización de costos mediante dimensionamiento de tareas.
Mecanismo de Fargate y diferencias con el tipo de lanzamiento EC2
Fargate es un motor de cómputo serverless para ECS y EKS. Con el tipo de lanzamiento EC2, se deben gestionar las instancias que ejecutan los contenedores (aprovisionamiento, escalado, parches). Con Fargate, al especificar vCPU (0.25 a 16) y memoria (0.5 GiB a 120 GiB) en la definición de tarea, AWS prepara el entorno de ejecución. Cada tarea se ejecuta en una microVM aislada basada en Firecracker, eliminando la compartición de kernel entre tareas y reforzando el aislamiento de seguridad. No hay acceso al OS del host y no se pueden ejecutar contenedores privilegiados. Las versiones de plataforma (ECS) gestionan el kernel del OS y la versión del runtime; al especificar LATEST se aplica automáticamente la versión estable más reciente.
Diferenciación entre ECS on Fargate y EKS on Fargate
ECS on Fargate es la orquestación de contenedores nativa de AWS, operable con tres conceptos: definiciones de tarea, servicios y clústeres. Proporciona integración con ALB, service mesh vía Service Connect y descubrimiento de servicios vía CloudMap de forma nativa. ECS Exec permite conectar un shell interactivo a contenedores dentro de tareas para depuración en producción. EKS on Fargate ejecuta Pods de Kubernetes en Fargate. Los Fargate Profiles definen selectores de namespace y labels, y los Pods que coinciden se programan automáticamente en Fargate. Es adecuado cuando se quiere aprovechar el ecosistema de Kubernetes (Helm, Argo CD, Prometheus, etc.) o estandarizar en Kubernetes multi-cloud. Sin embargo, EKS on Fargate no soporta DaemonSets, no puede montar volúmenes EBS (sí EFS), no tiene instancias GPU, y el inicio es más lento que los nodos EC2 porque se asigna un ENI por Pod.
Optimización de costos
Fargate cobra por vCPU-segundo y GB-segundo de memoria asignados a la tarea. El dimensionamiento correcto de las tareas es clave para la optimización de costos. Con CloudWatch Container Insights se mide el uso real de CPU y memoria y se ajusta la configuración. Fargate Spot ofrece hasta un 70% de descuento sobre el precio normal de Fargate para cargas de trabajo tolerantes a interrupciones, y el período de gracia desde la señal SIGTERM hasta la detención forzada del contenedor es de 30 segundos por defecto. Es adecuado para workers basados en cola y procesamiento por lotes. Compute Savings Plans aplican a Fargate, Lambda y EC2, ofreciendo hasta un 50% de descuento en el uso de Fargate con un compromiso de 1 o 3 años.
Mejores prácticas de diseño y errores comunes
Existe una matriz de combinaciones válidas de vCPU y memoria; no se pueden especificar combinaciones arbitrarias (por ejemplo, 0.25 vCPU solo permite 0.5/1/2 GiB). Sin configurar correctamente el período de gracia del health check (healthCheckGracePeriodSeconds), los contenedores de inicio lento pueden detenerse y reiniciarse repetidamente por fallos en el health check. El almacenamiento efímero es de 20 GiB por defecto (máximo 200 GiB) y se pierde al terminar la tarea, así que para datos persistentes se usa EFS o S3. El modo de red awsvpc es obligatorio, y como cada tarea obtiene un ENI, vigile el agotamiento de direcciones IP en las subnets. Para cargas con muchas tareas, aprovisione al menos un CIDR /19 o habilite ENI Trunking.
Fargate vs. App Runner
App Runner (ya no acepta nuevos clientes) es un servicio de contenedores que construye, despliega y escala automáticamente desde código fuente o imágenes de contenedor. Si ya lo utiliza, una opción es publicar aplicaciones web y APIs sin configuración de VPC ni definiciones de tarea. Fargate, por otro lado, ofrece ubicación en VPC, control granular de security groups, contenedores sidecar, definiciones de tarea multi-contenedor y montajes EFS para networking avanzado y personalización. ECS on Fargate es adecuado para procesamiento por lotes, configuraciones multi-contenedor y cargas que requieren acceso directo a recursos en la VPC; las APIs web con tráfico estable son una opción para quienes ya usan App Runner. EKS on Fargate se elige cuando se reutilizan manifiestos y herramientas Kubernetes existentes.
Resumen
Fargate es un motor de cómputo serverless que traslada a AWS la gestión de infraestructura de las operaciones de contenedores. Se puede comenzar con ECS on Fargate y migrar a EKS on Fargate cuando se necesite Kubernetes. En costos, Fargate Spot y Savings Plans son opciones, y la utilización se monitorea de forma continua con Container Insights. Comprender los errores típicos como el agotamiento de IPs en subnets, las combinaciones válidas de vCPU/memoria y la configuración del health check es una base para operaciones de producción estables.
Referencias (recursos oficiales de AWS)
Las fuentes primarias de esta página son el sitio web y la documentación oficiales de AWS. Consulta las páginas oficiales siguientes para conocer las especificaciones y los precios más recientes.
- AWS Fargate (página oficial)
- Amazon ECS (página oficial)
- Amazon EKS (página oficial)
- Documentación de AWS (oficial)
Si esta página y la documentación oficial difieren, prevalece la documentación oficial.