The Data Platform Challenge
Bloque C · Demo opcional
sofe-dbt
ESLint para tus data pipelines
Governance-as-code para dbt — con la factura real de Athena pegada a cada modelo
sofe-dbt
$ pip install sofe-dbt
$ sofe-dbt check ./
OSS · PyPI: sofe-dbt · docs: sofe.dev/docs/dbt
Por qué existe
El costo de un pipeline es invisible hasta que explota
- Un data engineer sabe si el modelo corre, si pasa tests, si la frescura está bien
- Lo que NO sabe: cuánto cuesta cada modelo
- Un full-refresh diario sobre una tabla de 1 TB = ~$150/mes que nadie ve
- Tablas sin partición, modelos zombie, materializaciones caras → la factura llega a fin de mes
El rol cambió: de "que corra" a "que corra bien y barato" — eso es Data FinOps.
Qué es
ESLint para tu nube → ESLint para tus datos
sofe-dbt lee los artifacts de dbt (manifest / run_results / catalog) + las stats reales de Athena, y evalúa políticas FinOps sobre tus modelos.
📥 Lee artifacts
DAG, materializaciones, tests, dependencias — sin tocar tu warehouse.
💵 Costo real
data_scanned_in_bytes de Athena → $/modelo. Nunca inventado.
🛡️ 10 políticas
Sobre el engine SOFE. Gate en CI/CD con exit code.
DEMO
sofe-dbt check ./ — findings + costo real
sofe-dbt · jaffle-finops
$ sofe-dbt check . --fail-on high
✓ partition-required ...... 42/42 models
⚠ zombie-model ........... stg_legacy_orders (0 consumers)
✗ full-refresh-in-prod ... fct_events (scans 1.2TB daily)
✗ freshness-test-missing . src_salesforce
# 2 errores → PR bloqueado. Estimado: -$402/mo si se corrige
# exit 1 → gatea el merge en CI
Costo real, no estimado
Cada dólar sale de bytes reales de Athena
Fórmula auditable: max(bytes, 10MB) / 1e12 × $5/TB. Si no hay bytes reales → cost: unknown. Nunca se inventa.
fct_events (full refresh)
$197.9/mo
stg_legacy (zombie)
$3.35/mo
Governance-as-code
10 políticas FinOps para dbt
💸 Costo
full-refresh-in-prod · large-table-no-partition · small-table-should-be-view · long-run-not-incremental · ephemeral-over-referenced
🛡️ Confiabilidad / gobernanza
high-blast-radius-no-tests · zombie-model · freshness-test-missing · model-no-description · last-run-failed
Corren sobre el engine SOFE (OSS). Mismas políticas-as-code que para infra AWS, ahora para tus modelos de datos.
Dev local → prod real
DuckDB para estructura, Athena para costo
- DuckDB (local, gratis): DAG, zombies, gobernanza — en segundos, sin AWS
- Athena (prod): costo real por bytes escaneados
- Mismos modelos dbt, mismo sofe-dbt check
local · duckdb
$ dbt build # duckdb local
$ sofe-dbt check . --no-cost
⚠ zombie-model ... fct_events
⚠ no-description . stg_events
# 100% local, 0 costo AWS
El cierre del challenge
Shift-left del costo: prevención, no autopsia
sofe-dbt corre en el PR. Si un modelo va a costar de más, bloquea el merge y te dice cuánto ahorrarías — antes de que llegue la factura.
1 · El dato es un producto
con dueño, dominio y costo atribuible.
2 · Governance-as-code
políticas en el repo, gate en CI/CD.
3 · Costo real y visible
bytes de Athena, auditable, nunca inventado.
OSS · pip install sofe-dbt · sofe.dev/docs/dbt — Carlos Cortez (AWS Hero)
1 / 8