Skip to content
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.

Nota para desarrolladores hispanohablantes: Esta guía incluye ejemplos y convenciones de nomenclatura adaptadas a equipos que trabajan en español. Cuando existen diferencias significativas en terminología técnica entre el inglés y el español, se indican explícitamente para facilitar la comunicación en equipos multiculturales.

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. Compare deployed versions with the declared source of truth before debugging behavior differences.

FAQ

Cual es la diferencia entre FinOps y cloud cost management? Cloud cost management es herramientas y dashboards. FinOps es una practica cultural que incluye esas herramientas mas accountability, gobernanza y colaboracion cross-funcional.

Como manejamos servicios compartidos (DNS, VPC, monitoreo)? Asigna costos compartidos por una metrica justa: porcentaje de uso de compute, numero de servicios, o headcount. Documenta el metodo de asignacion y revisa trimestralmente.

Los equipos de ingenieria deberian tener sus propios presupuestos cloud? Si. Los equipos que ven sus propios costos toman mejores decisiones arquitectonicas. Finanzas establece el presupuesto total; ingenieria lo asigna.

¿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.

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.

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.