AWS Fargate
Motor de computación serverless especializado en ejecución de contenedores que permite ejecutar contenedores directamente en ECS o EKS sin gestionar instancias EC2
Descripción general
AWS Fargate es un motor de computación serverless que funciona en conjunto con Amazon ECS y Amazon EKS. En la operación tradicional de contenedores era necesario gestionar uno mismo el grupo de instancias EC2 (clúster) para ejecutar los contenedores, pero con Fargate se puede delegar completamente la gestión de infraestructura a AWS. Los desarrolladores solo especifican la imagen del contenedor, los requisitos de CPU y memoria, y la configuración de red, y Fargate asigna automáticamente los recursos de computación apropiados para la ejecución. Con facturación por uso a nivel de tarea, se cobra por segundo basándose en el uso de vCPU y memoria. Al no requerir aplicación de parches del SO ni gestión de escalado, reduce significativamente la carga operativa.
Distribución con tipo de lanzamiento EC2 y modelo de aislamiento de Fargate
Al ejecutar contenedores en ECS, hay dos opciones: tipo de lanzamiento EC2 y tipo de lanzamiento Fargate. Con el tipo de lanzamiento EC2, se construye y gestiona uno mismo el clúster de instancias EC2, colocando contenedores sobre ellas. Se requieren tareas operativas como selección de tipo de instancia, planificación de capacidad, aplicación de parches del SO y configuración de escalado. Con Fargate, todas estas tareas se eliminan. Fargate aprovisiona automáticamente un entorno de computación aislado basándose en los requisitos de CPU y memoria especificados en la definición de tarea. Cada tarea se ejecuta en una microVM con su propio kernel, asegurando la seguridad incluso en entornos multi-tenant. Azure Container Instances (ACI) también permite ejecutar contenedores de forma serverless, pero Fargate soporta tanto ECS como EKS, pudiendo ejecutar cargas de trabajo Kubernetes de forma serverless, lo cual es una diferencia significativa con ACI.
Fargate Spot y optimización de costos a nivel de tarea
El precio de Fargate se cobra por segundo combinando el precio por hora de vCPU y el precio por hora de GB. Usando Fargate Spot se pueden ejecutar tareas con hasta un 70% de descuento sobre el precio normal, pero existe la posibilidad de que las tareas se interrumpan cuando AWS recupera capacidad. Por ello, Fargate Spot es adecuado para cargas de trabajo tolerantes a interrupciones como procesamiento por lotes, transformación de datos y trabajos de build de CI/CD. En la práctica, es común configurar la proporción entre Fargate y Fargate Spot en la estrategia de capacity provider del servicio ECS, manteniendo las tareas base con Fargate normal para estabilidad mientras se absorben los picos con Fargate Spot. Dimensionar correctamente la combinación de CPU y memoria en la definición de tarea también es clave para la optimización de costos, ya que la asignación excesiva de recursos se traduce directamente en aumento de costos. En libros técnicos (Amazon) se pueden aprender las mejores prácticas de operación de contenedores.
Diseño de red y configuración híbrida en producción
Las tareas Fargate requieren el modo de red awsvpc, asignándose una ENI (Elastic Network Interface) a cada tarea. Esto permite que cada tarea tenga una dirección IP privada y se apliquen security groups directamente, permitiendo un control de acceso granular a los recursos dentro de la VPC. Sin embargo, el número de ENIs está limitado por el espacio de direcciones IP del subnet, por lo que al ejecutar gran cantidad de tareas se debe prestar atención al diseño CIDR del subnet. Para cargas de trabajo que requieren GPU, procesamiento dependiente de tipos de instancia específicos, o clústeres a gran escala que buscan maximizar la eficiencia de costos, el tipo de lanzamiento EC2 puede ser más apropiado. En la práctica, es común una configuración híbrida donde los entornos de desarrollo y staging se operan con Fargate para reducir la carga operativa, mientras que las cargas de trabajo a gran escala en producción se optimizan en costos con el tipo de lanzamiento EC2. El patrón típico de uso de Fargate es ejecutar cada servicio de microservicios como una tarea independiente, con resolución de nombres mutua mediante service discovery (Cloud Map).