StackPractices
intermediate Por Mathias Paulenko

FinOps — Optimizacion de Costos Cloud y Operaciones

Guia practica de FinOps: visibilidad, optimizacion y gobernanza del gasto cloud. Aprende estrategias de tagging, right-sizing, instancias reservadas y cultura consciente de costos.

Overview

FinOps — un portmanteau de “Finance” y “DevOps” — es la practica de traer responsabilidad financiera al modelo de gasto variable de cloud computing. A diferencia de los centros de datos tradicionales con CapEx fijo, los costos cloud escalan con el uso, haciendo la visibilidad y gobernanza criticas. FinOps no se trata de recortar costos a ciegas; se trata de optimizar el gasto cloud para maximizar valor de negocio. Opera en tres fases: Informar (visibilidad), Optimizar (acciones) y Operar (gobernanza y cultura).

When to Use

  • For alternatives, see Cloud Cost Optimization.

  • Las facturas mensuales de cloud son impredecibles o crecen mas rapido que el revenue

  • No puedes atribuir costos a equipos, productos o entornos

  • Las decisiones de capacidad reservada se toman sin datos

  • Los equipos de desarrollo tratan los recursos cloud como infinitos y gratuitos

  • Necesitas justificar el gasto cloud a finanzas o liderazgo ejecutivo

Las Tres Fases de FinOps

FaseObjetivoActividades
InformarVisibilidadTagging, asignacion de costos, dashboards, deteccion de anomalias
OptimizarEficienciaRight-sizing, instancias reservadas, spot usage, autoscaling
OperarGobernanzaPresupuestos, politicas, chargeback/showback, cultura FinOps

Estrategia de Tagging

El tagging consistente es la base de la atribucion de costos:

# Terraform: forzar tagging via politica
locals {
  mandatory_tags = {
    Owner       = var.team_email
    Environment = var.environment
    Project     = var.project_code
    CostCenter  = var.cost_center
    ManagedBy   = "terraform"
  }
}

resource "aws_instance" "api" {
  ami           = data.aws_ami.ubuntu.id
  instance_type = var.instance_type

  tags = local.mandatory_tags
}

Tags requeridos:

  • Environment: production, staging, development
  • Team / Owner: quien paga la factura
  • Project / Product: que unidad de negocio
  • CostCenter: codigo de tracking de finanzas
  • ManagedBy: terraform, pulumi, manual

Right-Sizing

AnalisisAccionAhorro potencial
CPU < 20% por 30 diasReducir instancia o usar autoscaling30-50%
Memoria < 40% por 30 diasReducir memoria o cambiar familia de instancia20-40%
Volumen EBS < 30% usadoReducir volumen o eliminar10-20%
Snapshots huerfanos > 90 diasAutomatizar politica de ciclo de vida5-10%
Load balancers idleEliminar o consolidar5-10%
# AWS CLI: encontrar instancias EC2 subutilizadas
aws ec2 describe-instance-types --filters "Name=instance-type,Values=t3.*"
# Usar Cost Explorer o metricas CloudWatch para identificar candidatos

Instancias Reservadas y Savings Plans

CompromisoDescuentoMejor para
On-Demand0%Cargas variables, impredecibles
Reserved (1 anio)~30-40%Cargas steady-state (bases de datos, runners CI)
Reserved (3 anios)~50-60%Cargas muy estables con ciclos de vida largos
Savings Plans~20-40%Compromiso flexible entre familias de instancias
Spot Instances~70-90%Cargas tolerantes a interrupcion (batch, CI)

Regla de oro: Solo comprometete a reservas para cargas con 12+ meses de historial de utilizacion estable.

Deteccion de Anomalias de Costo

# Ejemplo: AWS Cost Anomaly Detection con CloudWatch
import boto3

client = boto3.client('ce')

response = client.get_cost_and_usage(
    TimePeriod={
        'Start': '2026-06-01',
        'End': '2026-06-25'
    },
    Granularity='DAILY',
    Metrics=['BlendedCost'],
    GroupBy=[
        {'Type': 'TAG', 'Key': 'Project'},
        {'Type': 'TAG', 'Key': 'Environment'}
    ]
)

# Alertar si gasto diario > 120% del promedio de 30 dias

Construyendo una Cultura Consciente de Costos

TacticaImplementacion
Dashboards de showbackDashboards de costo por equipo en Grafana o CloudWatch
Costo en PR commentsBot de Infracost comenta impacto de costo Terraform en PRs
Alertas de presupuestoAWS Budgets al 80%, 100%, 120% del forecast mensual
Game daysSprints trimestrales de optimizacion de costos con premios
Revision arquitectonicaIncluir estimaciones de costo en docs de diseno

Common Mistakes

  • Tagging despues del hecho — tagging retroactivo es doloroso; forzar en creacion via politica
  • Sobre-comprometerse a RIs — comprar reservas de 3 anios para cargas que pueden cambiar en 6 meses
  • Ignorar costos de transferencia de datos — egress entre regiones y a internet puede ser 20-40% de la factura
  • Optimizar sin visibilidad — no puedes hacer right-sizing de lo que no puedes medir
  • Hacer de finanzas el enemigo — FinOps es una alianza entre ingenieria y finanzas, no un mandato de recorte

Troubleshooting

  • Pipeline fails silently: enable verbose logging and store pipeline artifacts between stages so you can inspect the exact state that failed.
  • Container crashes on startup: check that environment variables, secrets, and config files are mounted correctly. Read the first 50 lines of logs before scaling replicas.
  • Deployment rolls back repeatedly: verify health checks, resource limits, and startup probes. A failing readiness probe is a common cause of rolling restarts.
  • Slow CI builds: cache dependencies and docker layers. Split large test suites into parallel jobs to reduce wall-clock time.
  • Drift between environments: use infrastructure-as-code and immutable artifacts.

Temas Avanzados

Escenario: Optimizacion de Costos Cloud para SaaS

Sistema: SaaS en AWS, $50K/mes, crecimiento 15% mensual
Objetivo: Reducir 30% sin impacto en usuarios

Fase 1: Visibilidad (semanas 1-2)
  | Servicio | Costo/mes | % del total |
  |----------|-----------|-------------|
  | EC2 (20 instancias) | $18,000 | 36% |
  | RDS PostgreSQL | $8,000 | 16% |
  | ElastiCache Redis | $5,000 | 10% |
  | S3 (50TB) | $4,500 | 9% |
  | CloudFront | $3,500 | 7% |
  | EKS (3 clusters) | $3,000 | 6% |
  | NAT Gateway | $2,000 | 4% |
  | Lambda | $1,500 | 3% |
  | Otros | $4,500 | 9% |
  | Total | $50,000 | 100% |

Fase 2: Optimizacion (semanas 3-6)
  Accion 1: Right-size EC2
    - Analizar CPU/memoria promedio (CloudWatch, 30 dias)
    - 12 instancias < 20% CPU -> reducir tipo
    - 5 instancias < 10% CPU -> terminar
    - Ahorro: $6,500/mes

  Accion 2: Reserved Instances + Savings Plans
    - 8 instancias always-on -> 1yr RI (40% descuento)
    - Ahorro: $3,200/mes

  Accion 3: S3 lifecycle policies
    - Mover objetos > 30 dias a S3 IA
    - Mover objetos > 90 dias a Glacier
    - Ahorro: $2,000/mes

  Accion 4: Spot instances para batch jobs
    - 5 workers de procesamiento -> Spot (70% descuento)
    - Ahorro: $1,500/mes

  Accion 5: RDS optimization
    - Reader replica -> eliminar (usar ElastiCache para reads)
    - Storage: gp2 -> gp3 (20% mas barato)
    - Ahorro: $1,800/mes

Fase 3: Resultados
  | Accion | Ahorro/mes |
  |--------|------------|
  | Right-size EC2 | $6,500 |
  | Reserved Instances | $3,200 |
  | S3 lifecycle | $2,000 |
  | Spot instances | $1,500 |
  | RDS optimization | $1,800 |
  | Total | $15,000 (30%) |

Fase 4: Gobernanza continua
  - Tags obligatorios: team, env, project, cost-center
  - Alertas de budget: 80% y 100% del monthly budget
  - Reporte semanal de costos por equipo
  - Quarterly cost review con todos los equipos
  - FinOps dashboard: AWS Cost Explorer + custom tags

Lecciones:
  - Visibilidad primero: no puedes optimizar lo que no ves
  - Right-sizing es el win mas rapido
  - Reserved Instances para cargas always-on
  - S3 lifecycle policies son set-and-forget
  - La gobernanza continua previene el cost creep

Como asigno costos a equipos individuales?

Usa tags consistentes en todos los recursos: team, project, env. Configura AWS Cost Explorer con tag-based grouping. Para recursos compartidos (EKS, RDS), divide por proporcion de uso (CPU por namespace en EKS, queries por schema en RDS). Herramientas como Kubecost o CloudHealth automatizan esta asignacion.

End of document. Review and update quarterly.

Lectura Adicional

  • Documentación oficial: consulta la referencia actualizada del framework o herramienta utilizada.
  • Guías relacionadas: explora las guías de finops y cloud-costs para profundizar.
  • Patrones complementarios: revisa los patrones de diseño aplicables a tu stack tecnológico.
  • Postmortems públicos: estudia incidentes reales de equipos que enfrentaron problemas similares en producción.

Notas de Producción

  • Despliega gradualmente usando canary o blue-green para detectar regresiones temprano.
  • Configura alertas para errores, latencia p99 y tasa de fallos antes de habilitar en producción.
  • Documenta el rollback en el runbook; prueba el procedimiento en staging al menos una vez por trimestre.
  • Revisa logs estructurados con correlation IDs para trazar requests end-to-end en incidentes.

Puntos Clave

  • Aplica finops — optimizacion de costos cloud y operaciones cuando necesites una solución práctica para tu caso de uso.
  • Monitorea el rendimiento después de implementar; mide latencia, errores y uso de recursos antes y después.
  • Revisa la sección de Troubleshooting ante errores comunes; la mayoría tienen causa raíz documentada con solución.
  • Mantén dependencias actualizadas y ejecuta tests en CI para prevenir regresiones en producción.

Errores Comunes en Producción

  • Tratar la guía como un checklist para completar una vez en lugar de una práctica por evolucionar.
  • Adoptar cada recomendación de golpe en lugar de comenzar con un cambio medido.
  • Saltar la evaluación de madurez e imponer prácticas avanzadas a un equipo no preparado.
  • No actualizar runbooks y expectativas de guardia al introducir nuevas prácticas.
  • Ignorar datos reales de incidentes al priorizar qué partes de la guía aplicar primero.
  • No asignar un responsable que revise decisiones trimestralmente.
  • Copiar ejemplos sin adaptarlos a las herramientas y restricciones reales del equipo.
  • Olvidar medir resultados antes de agregar la siguiente mejora.

Preguntas frecuentes

¿Cómo empiezo con esto en un proyecto existente?

Empieza con una parte pequeña y aislada de tu codebase. Aplica los conceptos de esta guía a un módulo o servicio. Mide el impacto, luego expande a otras áreas.

¿Qué herramientas necesito?

Las herramientas mencionadas throughout esta guía se listan en cada sección. La mayoría son open-source y ampliamente adoptadas. Consulta los recursos relacionados para instrucciones de setup.

¿Cómo mido el éxito después de implementar esto?

Define métricas claras antes de empezar: benchmarks de rendimiento, tasas de error o indicadores de mantenibilidad. Compara antes y después. Itera basándote en datos, no en suposiciones.