Guía 07 — FinOps para Datos
Principios
- Etiquetado obligatorio (no tag = recurso terminado en 7 días).
- Presupuestos por dominio con alertas a 70% y 90%.
- Right-sizing trimestral de clusters y warehouses.
- Cold storage tiers para datos >90 días sin acceso.
- Cost-aware queries: indicador de costo $$$ en herramientas BI.
# 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%.
| 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
- ❌ DEV con mismo size que PROD. → DEV con auto-suspend agresivo y warehouse XS.
- ❌ Sin TTL en sandboxes. → Auto-delete sandboxes >30 días sin uso.
- ❌ Reserved instances sin monitoring. → Review trimestral; cancelar si utilización <80%.
- ❌ Snowflake warehouses sin auto-suspend. → Suspend ≤300s.
- ❌ Egress cross-cloud no monitoreado. → Egress alerts; preferir same-region.
- ❌ Logs verbose en producción. → Sampling 1-10% según severidad.
- ❌ LLM API en hot path sin cache. → Cache + fallback degradado.