commit&push

~/blog $ git show 2026-08-20

Nada estaba roto. Costaba $900 al mes.

· 6 min de lectura · Victor Benavides

--ops--craft

Durante meses estuve pagando alrededor de novecientos dólares al mes por cómputo que nadie estaba usando.

No mal configurado. No caído. No degradado. Estaba corriendo perfectamente — contenedores sanos, plataforma en verde, cero errores — y no hacía prácticamente nada, a precio completo, cada hora de cada día.

Ninguna alerta se disparó. Ningún dashboard se puso rojo. Ningún usuario se quejó, porque desde el punto de vista de un usuario no había nada mal. El sistema que terminó avisándome fue una factura, que es la herramienta de monitoreo más lenta y más cara jamás construida.

Por qué nada lo detectó

Aquí está la falla de diseño incómoda en cómo la mayoría monitoreamos: cada instrumento que instalamos mide salud. Casi ninguno mide utilidad.

Piensa en lo que realmente está conectado en un sistema típico. Uptime — ¿responde? Latencia — ¿es rápido? Errores — ¿está fallando? CPU y memoria — ¿está saturado? Cada una de esas preguntas es sobre si la cosa está funcionando.

Ninguna pregunta si la cosa es necesaria.

Así que un servicio con cero tráfico y una asignación completa de cómputo se ve exactamente igual que un servicio sano. Mejor, de hecho: sin errores, latencia plana, CPU baja. Si construiste una alerta sobre esas señales, el desperdicio ocioso es el estado ideal. Mi monitoreo no estaba roto — estaba reportando fielmente que una nada muy cara gozaba de excelente salud.

La anatomía del desperdicio

No fue un error dramático. Fue del tipo ordinario, que es peor, porque el tipo ordinario ni siquiera se siente como una decisión.

Capacidad aprovisionada para una forma que ya había superado. Corría sobre una plataforma de contenedores administrada con asignaciones por servicio, dimensionadas en una etapa en la que estaba adivinando. Después la arquitectura cambió por debajo. Los servicios se dividieron, los patrones de tráfico se movieron, algunas cosas dejaron de usarse por completo — y las asignaciones nunca se movieron, porque nada en el sistema tenía opinión sobre si debían moverse. Las plataformas cloud son extremadamente buenas dándote recursos y completamente indiferentes a si todavía los necesitas.

Ambientes en los que no había nadie. Los entornos que no son producción corrían como producción, las veinticuatro horas, para beneficio de exactamente cero personas a las tres de la mañana.

Y mi favorito: estaba pagando por recolectar telemetría que nadie leyó jamás. Logs y métricas entrando a un pipeline de ingesta a costo real por gigabyte, retenidos, indexados, facturados — y jamás consultados ni una vez. Ese merece su propia línea, porque es la versión más pura del problema completo: la observabilidad que no miras no es observabilidad. Es una suscripción.

Qué ahorraron los arreglos

Migrar a Kubernetes administrado fue el grande. No empezó siendo una decisión de costo, pero el cambio de forma es lo que hizo visible el desperdicio: en vez de pagar por servicio por capacidad que no podía ver en agregado, pasé a pagar por un clúster cuya utilización sí podía leer en un solo lugar. No puedes dimensionar bien lo que no puedes sumar.

Recortar el pipeline de ingesta — soltar la telemetría que nunca había consultado, quedándome con la que sí uso para debuggear — le quitó unos $136 al mes a la factura, de forma permanente, sin perder nada que hubiera mirado alguna vez.

Y una vez que el tráfico tuvo un piso que podía demostrar en lugar de adivinar, me comprometí a él: una reserva a tres años sobre el cómputo base, 62% de descuento, unos $201 al mes por capacidad que verifiqué al 100% de utilización antes de firmar. Esa última cláusula es todo el truco. Una reserva es una apuesta a que dentro de tres años seguirás queriendo esto — segura cuando compras tu piso, temeraria cuando compras tu techo.

El costo es una señal, no un problema contable

El replanteo que cambió cómo trabajo: tu factura es telemetría. Solo que es telemetría con un intervalo de muestreo de treinta días, entregada por el área de finanzas.

Lo que significa que debería tratarse como cualquier otra señal:

  • Pon el gasto en un dashboard, al lado de la latencia y la tasa de error. No en un portal de facturación que visitas cuando algo se siente raro — en el lugar donde ya miras.
  • Alerta sobre deltas, no sobre absolutos. Un número que tienes que recordar es un número que vas a ignorar. Pero "el gasto subió 20% mientras el tráfico no" es tan diagnóstico como un pico de latencia, y es exactamente la forma que tiene el desperdicio ocioso.
  • Haz una pregunta que ningún health check hace: para cada cosa corriendo, ¿cuándo hizo trabajo por última vez? No "¿está arriba?" — ¿alguien la está usando? La mayoría de los stacks pueden responder esto y casi nadie lo conecta.
  • Ponle hora de dormir a los ambientes que no son producción. La infraestructura más barata es la que no está corriendo.

Los trade-offs honestos

Prefiero no fingir que este consejo es gratis.

Las reservas compran descuento con flexibilidad. La mía fija una familia de máquinas y una región por tres años — ahorré 62% y cedí el derecho a cambiar de opinión barato. Eso es correcto para un piso y equivocado para cualquier cosa especulativa, y la única razón por la que pude distinguirlos fue tener suficientes datos reales de tráfico para saber cuál era cuál.

Recortar telemetría agresivamente arriesga el momento en que desesperadamente quieras un log que ya no guardas. Acepté ese riesgo deliberadamente, para datos que demostrablemente nunca había consultado — pero "demostrablemente" está cargando mucho peso ahí, y la versión honesta es que algún incidente futuro puede hacerme lamentar una de esas decisiones.

Y el scale-to-zero cambia dinero por un arranque en frío. Perfecto para un ambiente de desarrollo. Una conversación muy distinta frente a usuarios.

El patrón, ya por tercera vez

He escrito esta misma falla dos veces antes y no lo había notado hasta escribir esta.

Pods reportando Running mientras eran incapaces de hablar con nada. Este blog respondiendo "página no encontrada" con un 200 OK durante cuatro días. E infraestructura corriendo impecablemente durante meses sin valer nada.

Tres sistemas distintos, tres dashboards en verde, tres tipos de nada pasando. En cada caso el instrumento funcionaba exactamente como fue diseñado y respondía exactamente la pregunta para la que fue configurado — y en cada caso la pregunta que importaba era una que nadie había pensado en hacer.

El dinero ya se había ido cuando me di cuenta, y ninguna cantidad de buenas intenciones sobre "estar pendiente de los costos" lo habría detectado. Solo un número, en una pantalla que ya miro, con una alerta sobre el delta.

El sábado: lo que realmente hace falta para operar la puerta de un evento real — incluidas las partes que salieron mal. ✨

$ grep -rl --tag ~/blog