Saltar a contenido

Guía 07 — FinOps para Datos

Principios

  1. Etiquetado obligatorio (no tag = recurso terminado en 7 días).
  2. Presupuestos por dominio con alertas a 70% y 90%.
  3. Right-sizing trimestral de clusters y warehouses.
  4. Cold storage tiers para datos >90 días sin acceso.
  5. Cost-aware queries: indicador de costo $$$ en herramientas BI.

Tags requeridos

# Terraform default tags
default_tags = {
  env          = "prod"        # prod | stage | dev
  domain       = "sales"       # ownership dominio
  owner        = "team-sales"  # equipo
  cost_center  = "CC-1234"
  data_class   = "internal"    # public | internal | confidential | restricted
  workload     = "batch-etl"   # batch-etl | streaming | ml | bi | adhoc
  managed_by   = "terraform"
}

Modelo de costos

Costo total = Storage + Compute + Network + SaaS Tools + LLM/AI API

Empresa media (50-500 personas):
  - Storage:       $2-8K/month
  - Compute:       $15-40K/month
  - Network:       $1-5K/month
  - SaaS tools:    $8-30K/month
  - LLM/AI:        $2-10K/month
  -----------------------------
  Total:           $28-93K/month

Quick wins

1. Snowflake / Databricks

  • Auto-suspend 60s (DEV), 300s (PROD).
  • Result cache habilitado (gratis 24h en Snowflake).
  • Warehouse sizing: empezar con XS/S, escalar solo si query >1min.
  • Multi-cluster warehouse con auto-scale solo si concurrencia >50 queries/min.
  • Resource monitors con suspend automático a 90% budget.

2. BigQuery

  • Reservaciones para workload predecible (vs on-demand).
  • Partitioning + clustering obligatorio.
  • Materialized views para queries repetidas.
  • BI Engine para dashboards <100GB.

3. S3 / GCS

  • Lifecycle policies:
  • Frequent → 30d (Standard)
  • Infrequent → 60d (IA / Nearline)
  • Archive → 365d (Glacier / Coldline)
  • Delete → según retention
  • Intelligent Tiering para datasets con acceso impredecible.
  • Iceberg metadata cleanup semanal (expire_snapshots, remove_orphan_files).

4. Compute (Spark, EMR, Dataproc)

  • Spot instances para batch tolerante a interrupciones.
  • Graviton (ARM) para -20% costo / +20% perf en Spark.
  • Photon (Databricks) justificado si query workload >1h/día Spark.
  • AQE (adaptive query execution) habilitado.
  • Auto-scale clusters vs fixed.

5. Kafka

  • Tiered storage (KIP-405): older segments a S3 → -60% costo storage.
  • WarpStream / AutoMQ / Redpanda BYOC vs Confluent self-hosted.
  • Compression: Zstd siempre.

6. LLM / AI

  • Embedding cache (skip re-embed si content sin cambios).
  • Cheaper model first (sonnet/haiku) y escalate solo si quality fail.
  • Prompt caching (Anthropic, OpenAI) para system prompts repetidos.
  • Batch API para workloads no real-time → -50%.

FinOps tooling

Capability Free tier Enterprise
Cost visibility AWS Cost Explorer, GCP Billing, Azure Cost Mgmt Vantage, Apptio, Flexera
Recommendations Trusted Advisor, GCP Recommender, Azure Advisor Spot.io, ProsperOps
Showback OpenCost (K8s) CloudHealth, Cloudability
Anomaly detection AWS Cost Anomaly, GCP forecasting Vantage, Anodot

Showback / chargeback

Modelo recomendado

Costo total cloud = Compartido + Atribuible

Compartido (~20%): networking, plataforma central, observability shared.
  → distribuir prorata uso (queries, GB processed, runtime).

Atribuible (~80%): compute por dominio, storage por dominio, SaaS por dominio.
  → tags → showback mensual.

Reporting

  • Daily: anomalías >20% vs baseline.
  • Weekly: top 10 queries más caros, top 10 datasets más caros.
  • Monthly: showback por dominio + revisión presupuesto.
  • Quarterly: right-sizing review.

Métricas FinOps

KPI Target
Cost per TB processed -10% YoY
Cost variance vs budget ±10%
% gasto compartido distribuible >80% (vs 30% industria)
Resource utilization clusters >65%
Tagged resources 100%
Anomaly detection coverage 100% accounts

Anti-patrones

  1. DEV con mismo size que PROD. → DEV con auto-suspend agresivo y warehouse XS.
  2. Sin TTL en sandboxes. → Auto-delete sandboxes >30 días sin uso.
  3. Reserved instances sin monitoring. → Review trimestral; cancelar si utilización <80%.
  4. Snowflake warehouses sin auto-suspend. → Suspend ≤300s.
  5. Egress cross-cloud no monitoreado. → Egress alerts; preferir same-region.
  6. Logs verbose en producción. → Sampling 1-10% según severidad.
  7. LLM API en hot path sin cache. → Cache + fallback degradado.