‹ Volver al blog

EP179: Optimización de costos en Amazon ECS y AWS Fargate

· 5 min de lectura
Tabla de contenidos

Escucha este episodio

Escuchar en Amazon Music

En este episodio del Podcast AWS LATAM conversé con David Ugarte, arquitecto de soluciones en AWS, sobre cómo optimizar los costos al ejecutar contenedores en Amazon ECS y AWS Fargate. Es un tema que veo a diario en mi rol como Technical Account Manager: pequeñas decisiones de dimensionamiento, escalado y modelo de precios que, sumadas, tienen un impacto grande en la factura mensual.

Este artículo recoge y ordena lo que cubrimos en el episodio. Si prefieres escucharlo, tienes los reproductores arriba.

Primero, un poco de contexto

Amazon ECS es un orquestador de contenedores: tomas una aplicación contenedorizada —un contenedor Docker— y la despliegas en la nube como un servicio de backend. Fargate es la opción de ECS que te permite hacerlo sin gestionar servidores, es decir, de forma serverless: tú no administras la instancia subyacente, eso corre por cuenta de AWS.

Sobre esa base, la conversación siguió el marco de Cloud Financial Management, la estrategia de AWS para gestionar las finanzas en la nube. La idea es sencilla en su estructura: primero identificar de dónde vienen los costos, y luego optimizarlos.

Visibilidad: saber de dónde vienen los costos

No se puede optimizar lo que no se mide. El punto de partida son dos herramientas:

  • Cost Explorer: disponible en la consola de AWS, te da una interfaz gráfica para visualizar y entender los costos por servicio y por cuenta. Para ECS, desde el menú de servicios eliges Elastic Container Service y en la dimensión puedes usar Linked Accounts para ver qué cuentas consumen el servicio, o el tipo de uso para saber cuántas vCPU y GB de memoria consumen tus tareas.
  • Cost and Usage Report (CUR): para un análisis más profundo. Publica reportes detallados de uso en un bucket de S3 y luego, vía Amazon Athena, puedes hacer consultas tipo SQL para llegar al nivel de detalle que necesites.

Etiquetado: contexto de negocio sobre los costos

Cost Explorer se vuelve mucho más útil cuando los recursos están etiquetados. En ECS puedes etiquetar tareas, servicios, definiciones de tareas, clústeres, etcétera.

La recomendación es definir una estrategia de etiquetado antes de empezar: etiqueta todos los recursos de una carga de trabajo con cosas como el nombre de la aplicación, el proyecto al que pertenece, el ambiente (producción, desarrollo) y el centro de costo. Con eso puedes filtrar por etiqueta y saber exactamente cuánto cuesta un proyecto o aplicación concreta, lo que habilita mejores reportes de chargeback hacia las unidades de negocio.

Right-sizing: ajustar las tareas a lo que realmente usan

El costo en ECS sobre Fargate depende directamente de cuánta vCPU y cuánta memoria consumen tus aplicaciones. Por eso el primer ahorro técnico es dimensionar bien.

El método: entra a Amazon CloudWatch, y en la sección de métricas de ECS revisa el consumo real de CPU y memoria de tus tareas desplegadas. Con esa información histórica, ajusta la definición de tareas al tamaño que realmente requieren —ni más, ni menos.

Auto Scaling: pagar según la demanda

Una vez que conoces los requerimientos reales y ajustaste la definición de tareas, Service Auto Scaling te permite definir un mínimo y un máximo de tareas en ejecución.

El beneficio es claro con cargas que varían a lo largo del día. Si tu aplicación tiene poco tráfico de noche, Auto Scaling reduce el número de tareas hasta el mínimo durante ese período; cuando llegan usuarios durante el día, escala y agrega tareas hasta el máximo que definiste. Así la infraestructura sigue a la demanda real y pagas en consecuencia.

Fargate vs. EC2: dónde está la diferencia de costo

El modelo de precios suena similar al de EC2, pero hay dos diferencias clave:

  • Granularidad del pago: con EC2 pagas por el tamaño completo de la instancia que eliges, y es tu responsabilidad acercarte lo más posible a lo que necesitas. Con Fargate solo pagas por la vCPU y la memoria que la tarea consume durante el tiempo que está en ejecución.
  • Costo operacional: administrar instancias cuesta. En EC2 puedes entrar a la instancia, pero también es tu responsabilidad administrarla y parchearla. Con Fargate no tienes acceso a la instancia y esa gestión la asume AWS.

Opciones de precio: On-Demand, Savings Plans y Spot

Cubierto el frente técnico, vienen las opciones comerciales:

  • On-Demand: el precio por defecto y el más común. Pagas por los recursos solo durante el tiempo que los usas. Ideal cuando no quieres comprometerte a nada.

  • Savings Plans: si vas a usar cómputo por un período extendido (de uno a tres años), puedes obtener hasta un 50% de descuento sobre el precio On-Demand a cambio de un compromiso de uso.

  • Spot: usas capacidad de cómputo disponible en la región y zona de disponibilidad, con hasta un 70% de descuento sobre el precio de Fargate. La contrapartida es que AWS puede reclamar esa capacidad con dos minutos de aviso, así que tus aplicaciones deben tolerar interrupciones. Encaja muy bien con contenedores stateless: un contenedor puede apagarse y recrearse sin impacto para los usuarios.

    Ojo con el número: el 70% corresponde a Fargate Spot. Si en lugar de Fargate ejecutas ECS sobre instancias EC2, puedes usar EC2 Spot, que llega hasta un 90% de descuento sobre el precio On-Demand de EC2 — a cambio de gestionar tú las instancias. Son dos opciones distintas con cifras distintas.

Detalles que se escapan: los load balancers

Dos recomendaciones puntuales que suelen pasar desapercibidas:

  • Comparte el load balancer entre varios servicios de ECS. Muchos clientes usan un load balancer por servicio, lo que infla los costos innecesariamente.
  • Detecta load balancers huérfanos. Los que se crearon y ya no se usan siguen generando costo en la factura mensual.

Para seguir profundizando

Si quieres llevar esto a la práctica, dos workshops que recomendé en el episodio:

  • Well-Architected Labs — cubre los pilares del Well-Architected Framework, incluido el de optimización de costos.
  • ECS Workshop — para profundizar en las funcionalidades y opciones de Amazon ECS.

Y para no perderte novedades, el blog de AWS en español y el de novedades de AWS. Si tienes un plan de soporte, recuerda que siempre puedes abrir un ticket para pedir asistencia sobre este o cualquier otro tema.

Material adicional


Publicado originalmente en mi blog anterior. Las opiniones aquí son mías y no representan a mi empleador.