Desglose de la estructura de costos de ECS on Fargate - Combinación práctica de Spot, ARM y escalado
Desglosamos la estructura de precios de ECS on Fargate en 3 ejes: CPU, memoria y almacenamiento, y explicamos técnicas prácticas de optimización de costos combinando Fargate Spot, Graviton (ARM) y Service Auto Scaling.
Comprender con precisión la estructura de precios de Fargate
La optimización de costos de Fargate comienza con la comprensión precisa de la estructura de precios. La facturación de Fargate se calcula en 2 ejes: segundos de vCPU y segundos de GB de memoria. En us-east-1, es 0.04048 USD por hora por vCPU y 0.004445 USD por hora por GB de memoria. Lo que se suele pasar por alto es que las combinaciones de CPU y memoria especificadas en la definición de tarea tienen restricciones. Por ejemplo, si se selecciona 0.25 vCPU, la memoria solo puede ser 0.5GB, 1GB o 2GB. Para 1 vCPU, el rango es de 2GB a 8GB. Si la carga de trabajo real necesita 0.3 vCPU y 1.5GB de memoria, se debe elegir la combinación 0.5 vCPU + 2GB, desperdiciando aproximadamente 40% de los recursos. Si no se es consciente de este costo de redondeo al diseñar definiciones de tareas, se generan cargos superiores a los esperados. Además, desde 2024, se generan cargos adicionales cuando el almacenamiento efímero de Fargate supera los 20GB. Para cargas de trabajo que manejan grandes cantidades de archivos temporales, es necesario comparar con el montaje de EFS.
Lograr hasta 70% de reducción de costos con Fargate Spot
Fargate Spot es un mecanismo que ejecuta tareas Fargate con hasta 70% de descuento utilizando la capacidad excedente de AWS. Similar a las instancias EC2 Spot, cuando la capacidad es insuficiente, las tareas se interrumpen con 2 minutos de aviso. Para utilizar Fargate Spot efectivamente, es necesario evaluar correctamente la tolerancia a interrupciones de la carga de trabajo. Los candidatos óptimos son cargas de trabajo que pueden re-ejecutarse si se interrumpen, como procesamiento por lotes, pipelines de transformación de datos, trabajos de build CI/CD y entornos de desarrollo/pruebas. En servicios ECS, se puede controlar la proporción entre Fargate y Fargate Spot con la estrategia de proveedor de capacidad. Por ejemplo, configurando base en 2 (mínimo 2 tareas aseguradas con Fargate normal), weight de Fargate Spot en 3 y weight de Fargate normal en 1, se garantiza la operación estable de las 2 tareas base mientras el 75% del escalado se cubre con Spot. Incluso en servicios web de producción, con esta estrategia de Fargate normal para la línea base y Spot para tareas adicionales en picos, se pueden reducir costos entre 30-50% manteniendo la disponibilidad.
Ejecutar el mismo rendimiento un 20% más barato con Graviton (ARM)
Fargate soporta la arquitectura Graviton (ARM64) desde 2023. Las tareas Fargate basadas en Graviton son aproximadamente 20% más baratas por vCPU comparado con x86, con rendimiento igual o superior. La barrera de migración es la necesidad de construir imágenes de contenedor para ARM64. Lenguajes como Go, Node.js, Python y Java facilitan la compilación cruzada y builds multi-arquitectura, y con docker buildx se pueden generar imágenes tanto AMD64 como ARM64 desde un solo Dockerfile. Si hay bibliotecas que dependen de extensiones nativas C/C++, se necesita build y pruebas en entorno ARM64. Solo especificando cpuArchitecture como ARM64 en runtimePlatform de la definición de tarea, se ejecuta sobre Graviton. Fargate Spot y Graviton se pueden usar juntos, por lo que aplicando ambos se puede lograr teóricamente hasta 76% de reducción de costos (20% de descuento Graviton + 70% de descuento Spot) comparado con Fargate x86 normal. Sin embargo, como la tasa de descuento de Spot varía, es realista estimar la reducción real entre 50-70%.
Patrones de diseño de Service Auto Scaling
Lo más pasado por alto en la optimización de costos de Fargate es la configuración apropiada de Service Auto Scaling. Si el escalado es demasiado lento, el rendimiento se degrada en picos; si es demasiado rápido, se inician tareas innecesarias aumentando costos. ECS Service Auto Scaling soporta 3 tipos: escalado de seguimiento de objetivo, escalado por pasos y escalado basado en programación. El más recomendado es el escalado de seguimiento de objetivo. Configurando 70% de utilización de CPU como objetivo, ECS ajusta automáticamente el número de tareas para mantener el valor objetivo. Sin embargo, el período de enfriamiento de scale-in del escalado de seguimiento de objetivo es por defecto 300 segundos (5 minutos), manteniendo las tareas durante 5 minutos después de que el tráfico disminuya abruptamente. Para priorizar costos se puede acortar el período de enfriamiento a 120 segundos, pero hay riesgo de flapping (repetición frecuente de scale-in/out) en cargas de trabajo con tráfico muy variable. Para patrones de tráfico predecibles, es efectivo combinar con escalado basado en programación, elevando el número mínimo de tareas durante horario laboral y reduciéndolo por la noche.
Prioridad de optimización de costos y pasos prácticos
La optimización de costos de Fargate es racional aplicando las medidas de mayor efecto primero. El primer paso es revisar la configuración de CPU y memoria de la definición de tarea. Se verifica la utilización real de recursos con CloudWatch Container Insights y se cambian las tareas sobreaprovisionadas al tamaño apropiado. Solo esto puede lograr una reducción de costos del 20-40%. El segundo paso es la migración a Graviton. Solo agregando el build ARM64 de la imagen de contenedor y cambiando cpuArchitecture en la definición de tarea se obtiene un 20% de reducción de costos. El tercer paso es introducir Service Auto Scaling. Si se opera con número fijo de tareas, se generan costos innecesarios durante los valles de tráfico. Configurando escalado de seguimiento de objetivo, se puede lograr un 20-30% adicional de reducción con ajuste automático del número de tareas según la demanda. Como cuarto paso, se aplica Fargate Spot a cargas de trabajo tolerantes a interrupciones. Combinando estas 4 medidas, se puede lograr una reducción de costos del 50-70% comparado con antes de la optimización. Para aprender sistemáticamente sobre diseño de costos de contenedores, pueden ser útiles libros especializados (Amazon).