Saltar al contenido
Lakehouse LabLakehouse LabPreparación Databricks Data Engineer
Módulo 27 · Professional

Proyecto FinOps

Contenido abierto

Puedes leer todo sin registrarte. Solo crearemos un perfil anónimo cuando decidas guardar tu progreso.

Professional

Proyecto de fiabilidad y coste

Recupera un workload degradado equilibrando SLA, capacidad, layout, código y presupuesto.

Lectura pública
Al terminar podrás
  • Resolver un incidente con método
  • Demostrar mejora con métricas
  • Definir prevención y alertas
Ver fuentes y revisión

Metadatos editoriales

Última revisión
21 jul 2026
Nivel
Professional
Ruta relacionada
performance
Dominios blueprint
Reliability · Cost & Performance
Estado
Revisión editorial interna
Fuentes principales
Monitor Lakeflow Jobs · Query profile
Reportar un error
01
Modelo mental

Triage y severidad

Dirige un incidente con severidad, roles, timeline y criterios de éxito explícitos antes de tocar configuración.

Objetivo
Dirige un incidente con severidad, roles, timeline y criterios de éxito explícitos antes de tocar configuración.
Duración estimada
30 min aprox.
Dificultad
Professional
Prerrequisitos
m26
Reportar un error en esta lección

Un incidente de datos combina impacto técnico y de negocio: atraso, datos incorrectos, duplicados, indisponibilidad o sobrecoste. Declara severidad y alcance, asigna incident commander y comunicación, congela cambios no esenciales y establece una línea de tiempo en UTC con IDs de job, run, statement y commit. La primera meta es contener impacto sin destruir evidencia.

Diferencia mitigación de causa raíz. Reprocesar una partición puede restaurar el SLA, pero no explica por qué falló; ampliar compute puede ganar tiempo, pero aumenta coste y oculta skew. Define criterios cuantificados de recuperación —freshness, completitud, duración, coste— y un rollback antes de ejecutar cualquier cambio.

Modelo mental

Un incidente es un sistema de decisiones bajo incertidumbre. Antes de optimizar Spark o cambiar compute, el equipo necesita una imagen común: impacto, severidad, servicio afectado, inicio probable, propietario y condición de recuperación. El incident commander coordina y protege la línea temporal; quienes investigan prueban hipótesis; quien comunica mantiene informados a los consumidores. Separar funciones reduce cambios simultáneos y memoria contradictoria. El objetivo inmediato no es encontrar la explicación perfecta, sino restaurar el servicio con una mitigación reversible y evidencia suficiente. Cada acción debe declarar hipótesis, riesgo, señal esperada y rollback. Sin esa disciplina, aumentar recursos puede ocultar la causa, elevar coste y destruir la comparación necesaria para el análisis posterior.

Incident commander

Rol único que coordina prioridades, responsables, decisiones y comunicación durante la respuesta, sin necesitar ejecutar cada investigación técnica personalmente.

Evita órdenes contradictorias, cambios simultáneos y pérdida de una visión común del impacto y la recuperación.
Mitigación reversible

Cambio temporal cuyo efecto puede deshacerse rápidamente si no mejora las señales o introduce un riesgo nuevo.

Permite recuperar servicio con incertidumbre sin convertir una reacción urgente en deuda o daño permanente.
Criterio de recuperación

Condición medible que combina disponibilidad, latencia, integridad y frescura para declarar restaurado el servicio afectado.

Impide cerrar cuando sólo desaparece el error visible pero permanecen datos atrasados, incorrectos o consumidores rotos.
YAMLCabecera de un expediente de incidente
incident: INC-2041
severity: SEV-2
started_at_utc: 2026-07-21T01:42:00Z
impact: "gold.sales_daily fuera de SLA; dashboards sin actualizar"
commander: data-platform-oncall
data_safety: "no ejecutar VACUUM ni borrar checkpoints"
recovery_criteria:
  freshness_minutes: 30
  duplicate_order_ids: 0
  p95_runtime_minutes: 24
rollback: "restaurar bundle release-2026.07.20"

El expediente es operativo: evita nombres de clientes y enlaza evidencia gobernada en lugar de pegar datos sensibles.

Puntos clave

  • Prioriza impacto y seguridad de datos sobre una optimización elegante.
  • Registra cada hipótesis, acción, resultado e identificador.
  • Separa mitigación inmediata de corrección permanente.

Evita

  • Cambiar varias configuraciones a la vez y perder atribución causal.
  • Declarar resuelto al terminar el job sin validar calidad y consumidores downstream.

Recuerdo activo

¿Qué diferencia una mitigación de una causa raíz?

Borrador privado · solo en este navegador
02
Implementación

Hipótesis y evidencia

Triangula rendimiento con tres capas: plan y datos, recursos de ejecución y demanda/concurrencia del servicio.

Objetivo
Triangula rendimiento con tres capas: plan y datos, recursos de ejecución y demanda/concurrencia del servicio.
Duración estimada
30 min aprox.
Dificultad
Professional
Prerrequisitos
m26
Reportar un error en esta lección

Una regresión puede provenir de cambio de código, crecimiento o distribución de datos, estadísticas/layout, compute o concurrencia. Compara el último run sano con el primero degradado usando la misma ventana: plan, top operator, bytes leídos, shuffle, spill, workers y cola. Un diff de bundle o historial de tabla acota cambios sin especular.

Formula hipótesis falsables: 'la clave nula genera skew' se prueba con distribución y tareas; 'el warehouse se satura' con cola y concurrencia; 'faltan estadísticas' con pruning y plan. Prioriza la prueba barata y reversible que más reduce incertidumbre. No redimensiones hasta saber si la etapa puede utilizar capacidad adicional.

Modelo mental

El rendimiento percibido es la composición de tres capas. La capa de plan y datos decide cuánto trabajo existe: scans, cardinalidad, shuffles, skew y layout. La capa de recursos decide con qué velocidad se ejecuta: CPU, memoria, I/O, red, spill y fallos. La capa de servicio decide cuándo puede comenzar y cuánto compite: colas, concurrencia, autoscaling y límites externos. Una métrica aislada pertenece sólo a una capa. CPU alta no demuestra código ineficiente; cola alta no se arregla con liquid clustering; bytes leídos bajos no excluyen un join explosivo. Triangular significa formular una hipótesis que prediga señales coherentes en las tres capas y descartarla si una de ellas contradice el relato.

Triangulación

Método que combina evidencia independiente de plan, recursos y demanda para aceptar o refutar una explicación causal del rendimiento.

Reduce diagnósticos basados en correlaciones parciales y dirige la mitigación hacia la capa que realmente limita el SLA.
Señal upstream

Métrica producida antes del operador lento que explica por qué éste recibió más trabajo, como una explosión de cardinalidad.

Corregir la causa temprana evita optimizar repetidamente operadores posteriores que sólo procesan el exceso generado.
Experimento controlado

Comparación que modifica una sola palanca relevante mientras mantiene entrada, resultado y condiciones restantes suficientemente equivalentes.

Permite atribuir una mejora a la acción realizada y no a caché, demanda o variación de volumen.
SQLBaseline de consultas por p95 y datos leídos
SELECT
  DATE_TRUNC('day', start_time) AS day,
  statement_type,
  percentile(total_duration_ms, 0.95) AS p95_duration_ms,
  SUM(read_bytes) AS read_bytes,
  COUNT(*) AS executions
FROM system.query.history
WHERE start_time >= current_timestamp() - INTERVAL 14 DAYS
  AND statement_type IN ('SELECT', 'MERGE')
GROUP BY day, statement_type
ORDER BY day DESC;

Ajusta nombres de métricas al esquema disponible en tu región; conserva statement IDs para abrir el perfil concreto.

Puntos clave

  • Compara un run sano y uno degradado con volumen controlado.
  • Distingue plan/datos, recursos y concurrencia.
  • Prueba una hipótesis a la vez con métrica de aceptación.

Evita

  • Comparar runs con ventanas de datos o caché diferentes.
  • Tratar correlación temporal entre dos eventos como causa demostrada.

Recuerdo activo

¿Qué evidencia refutaría la hipótesis de falta de capacidad global?

Borrador privado · solo en este navegador
03
Operación

Corrección de código y layout

Recupera fiabilidad respetando idempotencia, checkpoints, contratos Delta y límites exactos del backfill.

Objetivo
Recupera fiabilidad respetando idempotencia, checkpoints, contratos Delta y límites exactos del backfill.
Duración estimada
30 min aprox.
Dificultad
Professional
Prerrequisitos
m26
Reportar un error en esta lección

Antes de reintentar, determina el efecto parcial: qué commits Delta existen, qué tarea falló y si el sink externo recibió operaciones. Un `MERGE` con clave estable puede repetirse; un append sin deduplicación puede duplicar. En streaming, borrar un checkpoint cambia el progreso y el estado y rara vez es una reparación segura. Usa repair run para tareas fallidas cuando sus dependencias y outputs sean reutilizables.

Un backfill debe declarar rango, versión de código, tabla destino, estrategia de overwrite/merge y validaciones. Aísla el proceso de la ingesta viva para evitar carreras y conserva una tabla de control de lotes. La recuperación termina cuando reconcilias conteos, claves únicas, freshness y consumidores, no sólo cuando el run aparece verde.

Modelo mental

Recuperar fiabilidad significa reanudar desde una frontera conocida sin perder ni duplicar efectos. En Delta, una transacción hace atómica una escritura, pero no vuelve idempotente todo un pipeline: llamadas externas, múltiples tablas o claves de negocio deficientes pueden repetir resultados. En streaming, el checkpoint vincula progreso de fuente, estado y configuración; borrarlo equivale a olvidar lo procesado y exige un plan explícito. Un backfill es una nueva ejecución sobre un intervalo delimitado, no una excusa para releer toda la historia. El diseño seguro define claves, deduplicación, merge condition, versión de código, snapshot de entrada, orden con el stream activo y pruebas de reconciliación antes de publicar.

Idempotencia

Propiedad por la que repetir una operación con la misma entrada produce el mismo estado observable sin efectos adicionales.

Permite retries y backfills seguros cuando fallos parciales hacen incierto qué parte llegó a completarse.
Frontera de recuperación

Punto verificable de offsets, versión, timestamp o commit desde el que puede reanudarse procesamiento de forma coherente.

Evita reinicios arbitrarios que crean huecos, duplicados o mezclan código e input de periodos distintos.
Repair run

Reejecución selectiva de tareas fallidas y dependientes dentro de un run, preservando resultados válidos cuando el grafo lo permite.

Reduce tiempo, coste y riesgo comparado con repetir un workflow completo ya parcialmente correcto.
SQLMERGE idempotente para un rango de backfill
MERGE INTO prod.silver.orders AS target
USING staging.backfill_orders AS source
ON target.order_id = source.order_id
WHEN MATCHED AND source.updated_at > target.updated_at THEN
  UPDATE SET *
WHEN NOT MATCHED THEN
  INSERT *;

SELECT order_id, COUNT(*) AS copies
FROM prod.silver.orders
GROUP BY order_id
HAVING COUNT(*) > 1;

La segunda consulta es una evidencia mínima; añade reconciliación de importes y rango temporal según el contrato.

Puntos clave

  • Inspecciona commits y efectos externos antes de reintentar.
  • No borres checkpoints para resolver un fallo de código o calidad.
  • Acota y valida cada backfill con una clave de lote.

Evita

  • Borrar checkpoint y reprocesar toda la fuente sin conocer retención ni idempotencia.
  • Ejecutar backfill y pipeline vivo sobre el mismo rango sin coordinación.

Recuerdo activo

¿Por qué un run verde después de un retry no demuestra recuperación completa?

Borrador privado · solo en este navegador
04
Diagnóstico

Right-sizing y coste

Controla el gasto del incidente sin sacrificar evidencia ni convertir un aumento temporal de compute en deuda permanente.

Objetivo
Controla el gasto del incidente sin sacrificar evidencia ni convertir un aumento temporal de compute en deuda permanente.
Duración estimada
30 min aprox.
Dificultad
Professional
Prerrequisitos
m26
Reportar un error en esta lección

Durante un incidente puede ser racional aumentar temporalmente capacidad para restaurar un SLA, pero registra quién lo aprobó, duración máxima y rollback automático. `system.billing.usage` permite atribuir el run y comparar coste por ejecución. Una reparación que reduce runtime pero duplica coste no es mejora salvo que el impacto evitado justifique esa compensación.

Después de estabilizar, elimina recursos temporales, restaura límites de policies y calcula coste de reintentos, backfill y mantenimiento. Distingue coste causado por el incidente del baseline. Los presupuestos alertan; no sustituyen un control operativo de concurrencia, autotermination y modos serverless adecuados.

Modelo mental

Durante un incidente, el coste es una restricción y una señal, no el objetivo principal. Escalar temporalmente puede ser la decisión más barata si reduce una interrupción costosa, pero debe llevar caducidad, propietario y criterio de retirada. Recortar compute mientras se recopila evidencia puede prolongar el fallo o borrar logs; dejarlo ampliado indefinidamente convierte mitigación en nueva línea base. El análisis une coste incremental con tiempo de recuperación, backlog, riesgo de integridad y valor del servicio. También distingue compute útil de retries fallidos, scans repetidos y backfills solapados. La disciplina FinOps del incidente consiste en gastar conscientemente para recuperar y volver después a una configuración medida, no en bloquear acciones urgentes por presupuesto horario.

Coste incremental

Diferencia de gasto atribuible al incidente y sus mitigaciones respecto a una línea base comparable de operación normal.

Permite evaluar decisiones urgentes sin confundir crecimiento ordinario con compute, retries o backfills extraordinarios.
Caducidad operativa

Fecha, condición o automatismo que obliga a revisar y retirar una configuración temporal de emergencia.

Impide que un escalado útil durante la crisis permanezca indefinidamente como gasto y deuda no examinados.
Coste evitado

Estimación del impacto de negocio o riesgo que no ocurrió gracias a una mitigación suficientemente rápida y segura.

Da contexto al gasto adicional y evita optimizar sólo la factura mientras aumenta la pérdida del servicio.
SQLConsumo asociado a un job durante el incidente
SELECT
  usage_date,
  usage_metadata.job_id AS job_id,
  sku_name,
  SUM(usage_quantity) AS usage_quantity
FROM system.billing.usage
WHERE usage_metadata.job_id = '482901'
  AND usage_date BETWEEN DATE '2026-07-18' AND DATE '2026-07-21'
GROUP BY usage_date, usage_metadata.job_id, sku_name
ORDER BY usage_date;

Une precios para moneda y compara con días sanos equivalentes; conserva correcciones de uso.

Puntos clave

  • Todo escalado de emergencia necesita caducidad y rollback.
  • Compara coste por run y cumplimiento de SLA.
  • Incluye reintentos y backfills en el coste total del incidente.

Evita

  • Dejar un warehouse o clúster sobredimensionado después de la mitigación.
  • Omitir el coste de retries y backfills al evaluar la solución.

Recuerdo activo

¿Qué dos datos mínimos acompañan un escalado de emergencia?

Borrador privado · solo en este navegador
05
Decisión de diseño

Postmortem y acciones preventivas

Cierra con un postmortem sin culpa que transforme la causa técnica en controles, pruebas y observabilidad verificables.

Objetivo
Cierra con un postmortem sin culpa que transforme la causa técnica en controles, pruebas y observabilidad verificables.
Duración estimada
30 min aprox.
Dificultad
Professional
Prerrequisitos
m26
Reportar un error en esta lección

El postmortem reconstruye impacto, detección, timeline, causa raíz y factores contribuyentes con evidencia. Evita 'error humano' como causa final: pregunta qué guardrail, test o diseño permitió que una acción normal causara daño. Separa acciones correctivas por prevenir, detectar, mitigar y aprender, con propietario y fecha.

Cada acción debe tener condición de cierre. 'Mejorar monitorización' no sirve; 'alertar si p95 supera 24 min durante dos runs y enlazar el Query Profile' sí. Actualiza runbooks, añade una prueba de regresión con distribución representativa y valida el fix bajo carga. Comparte el aprendizaje sin incluir datos sensibles del incidente.

Modelo mental

Un postmortem útil explica cómo el sistema permitió el incidente, no quién cometió el último error. La causa raíz rara vez es una persona o una única línea: incluye condiciones técnicas, señales ausentes, controles que no funcionaron y decisiones razonables con información incompleta. El documento separa hechos del timeline, hipótesis confirmadas, factores contribuyentes e impacto. Cada acción debe cambiar una propiedad verificable del sistema y tener owner, prioridad, fecha y evidencia de cierre. Añadir monitorización no basta si nadie sabe qué umbral representa daño ni qué runbook ejecutar. La revisión termina cuando los aprendizajes se convierten en tests, guardrails, observabilidad o diseño, no cuando se publica una narrativa elegante.

Factor contribuyente

Condición técnica u organizativa que aumentó probabilidad, impacto o tiempo de recuperación sin ser por sí sola causa suficiente.

Permite corregir varias defensas débiles en lugar de buscar una única explicación simplista o una persona culpable.
Acción verificable

Tarea correctiva con responsable, fecha y una evidencia concreta que demuestra que cambió el comportamiento del sistema.

Transforma aprendizaje en reducción de riesgo y evita cerrar promesas vagas sin comprobar su eficacia.
Tiempo de detección

Intervalo entre el inicio del impacto y el momento en que una señal accionable llega al equipo responsable.

Muestra si observabilidad y ownership permitieron reaccionar antes de que el daño creciera significativamente.
YAMLAcciones correctivas verificables
actions:
  - id: INC-2041-A1
    class: prevent
    owner: data-orders
    change: "test de skew con 45 % de claves nulas"
    done_when: "p95 de tareas < 3x mediana en CI de rendimiento"
  - id: INC-2041-A2
    class: detect
    owner: platform-observability
    change: "alerta de p95 runtime y enlace a statement_id"
    due: 2026-08-05

Una acción se cierra con evidencia; no marques completado sólo por crear un ticket.

Puntos clave

  • Describe mecanismos y condiciones, no culpas.
  • Convierte acciones en resultados verificables con propietario.
  • Añade una prueba que reproduzca el patrón causal.

Evita

  • Usar 'formar al operador' como única acción ante un sistema sin guardrails.
  • Cerrar tareas por despliegue sin verificar que el indicador cambió.

Recuerdo activo

¿Qué hace verificable la acción 'añadir una alerta'?

Borrador privado · solo en este navegador
5 lecciones pendientes

Vista de lectura · sin ejecución

databricks-finops-system-tables

databricks-finops-system-tables · commit 7834d5d

README.md