Puedes leer todo sin registrarte. Solo crearemos un perfil anónimo cuando decidas guardar tu progreso.
Professional
Compute, políticas, etiquetas y costes
Atribuye consumo, controla guardrails y optimiza coste sin degradar el valor del workload.
- Consultar costes con system tables
- Etiquetar y atribuir consumo
- Elegir modos serverless y políticas
01Modelo mentalDBUs, SKUs y coste cloud
Elige serverless, SQL warehouse o compute clásico según APIs, latencia, control de infraestructura y patrón operativo.
+
DBUs, SKUs y coste cloud
Elige serverless, SQL warehouse o compute clásico según APIs, latencia, control de infraestructura y patrón operativo.
- Objetivo
- Elige serverless, SQL warehouse o compute clásico según APIs, latencia, control de infraestructura y patrón operativo.
- Duración estimada
- 17 min aprox.
- Dificultad
- Professional
- Prerrequisitos
- m24
Databricks recomienda serverless para la mayoría de notebooks, jobs y pipelines porque administra aprovisionamiento, escalado, Photon y actualizaciones. Un SQL warehouse serverless sirve BI y SQL; jobs serverless sirve tareas automatizadas sin configurar clúster. Compute clásico sigue siendo válido cuando una API, runtime, red o configuración especializada no está soportada en serverless.
La decisión se toma por requisito, no por preferencia histórica. Define SLA de arranque y ejecución, lenguaje, librerías, conectividad y observabilidad disponible. En serverless no hay Spark UI: se usa Query Profile. En clásico controlas familias y autoscaling, pero también capacidad, parches y tiempo ocioso. Evita all-purpose para producción automatizada salvo una excepción explícita.
Modelo mental
Elegir compute es elegir un contrato operativo, no una talla de máquina. Serverless entrega capacidad gestionada con arranque, escalado y actualizaciones abstraídos; un SQL warehouse ofrece un endpoint gobernado y concurrente para SQL y BI; el compute clásico expone familias de instancia, driver, workers, runtime y políticas para workloads que necesitan ese control. Las tres opciones ejecutan trabajo, pero difieren en APIs admitidas, aislamiento, latencia de preparación, responsabilidad de operación y forma de facturación. El punto de partida son las propiedades del workload: lenguaje, estado, duración, concurrencia, dependencias, red privada, previsibilidad y SLA. La preferencia personal por un tipo de clúster no es un requisito técnico.
Conjunto de capacidades, límites y responsabilidades operativas asociado a una modalidad de ejecución.
Evita elegir sólo por nombre o precio cuando una API, red o dependencia puede bloquear el workload.Recurso de compute orientado a consultas SQL, BI y concurrencia mediante un endpoint administrado.
Aísla clientes del ciclo de vida del compute y ofrece controles específicos de cola y escalado.Compute con driver, workers, runtime y configuración de infraestructura explícitos.
Aporta control para requisitos especiales a cambio de mayor operación y riesgo de dimensionamiento.{
"workload": "daily_customer_360",
"candidate": "serverless_jobs",
"requirements": {
"startup_sla_minutes": 8,
"languages": ["Python", "SQL"],
"network": "managed_connector",
"spark_ui_required": false
},
"fallback": "classic_jobs_compute",
"review_after_runs": 20
}La decisión incluye un fallback y una fecha de revisión; evita declarar serverless o clásico como dogma.
Puntos clave
- Serverless es la opción por defecto para workloads compatibles.
- SQL warehouse corresponde a SQL/BI; jobs serverless a automatización general compatible.
- Compute clásico se justifica con una limitación concreta, no con costumbre.
Evita
- Usar all-purpose compartido para un job crítico y mezclar su coste con trabajo interactivo.
- Migrar a serverless sin revisar configuraciones Spark, sinks o dependencias no compatibles.
Recuerdo activo
¿Cuándo elegirías un SQL warehouse frente a jobs serverless?
Borrador privado · solo en este navegador02Implementaciónsystem.billing.usage
Dimensiona compute clásico con el cuello de botella real: memoria por partición, CPU, I/O, paralelismo y capacidad del driver.
+
system.billing.usage
Dimensiona compute clásico con el cuello de botella real: memoria por partición, CPU, I/O, paralelismo y capacidad del driver.
- Objetivo
- Dimensiona compute clásico con el cuello de botella real: memoria por partición, CPU, I/O, paralelismo y capacidad del driver.
- Duración estimada
- 17 min aprox.
- Dificultad
- Professional
- Prerrequisitos
- m24
Más nodos pequeños y pocos nodos grandes pueden sumar cores y memoria similares, pero no se comportan igual. Joins y agregaciones con particiones grandes necesitan memoria por executor; workloads muy paralelos pueden aprovechar más workers. El driver planifica, recopila metadatos y recibe resultados de acciones como `collect()`, por lo que escalar workers no resuelve un driver sobrecargado.
Comienza con una familia general, autoscaling y límites observables. Revisa utilización de CPU, memoria, spill, I/O y duración por stage; cambia una variable cada vez. En AWS, Azure y GCP varían nombres, discos y mercados spot, pero el método es el mismo. Mantén el driver bajo demanda y usa spot/preemptible en workers sólo si el workload tolera interrupciones.
Modelo mental
Dimensionar compute clásico es equilibrar un sistema distribuido con dos escalas distintas: recursos por tarea y número de tareas simultáneas. La memoria que necesita una partición determina si cada executor puede completar su operador; el número de cores y executors determina cuánto paralelismo se materializa. El driver tiene otra función: planifica, coordina, recopila metadatos y puede colapsar aunque los workers estén ociosos si el código hace collect o crea un plan enorme. Una máquina mayor no sustituye un buen particionado, y más workers no arreglan una tarea indivisible. Se mide primero el cuello de botella con CPU, I/O, spill, GC, distribución de tareas y presión del driver.
Aumento del número de workers o executors para disponer de más slots y throughput agregado.
Sólo acelera si el plan ofrece paralelismo y la etapa no depende de una tarea caliente o secuencial.Uso de nodos con más CPU o memoria por proceso de ejecución.
Puede hacer caber particiones grandes, pero aumenta coste unitario y no corrige distribución deficiente.Carga de planificación, metadatos o resultados que consume memoria y CPU del proceso coordinador.
Un driver puede fallar aunque los executors tengan recursos; collect y planes enormes son señales distintas.{
"spark_version": "16.4.x-scala2.12",
"runtime_engine": "PHOTON",
"autoscale": {
"min_workers": 2,
"max_workers": 8
},
"autotermination_minutes": 20,
"custom_tags": {
"cost_center": "finance-data",
"environment": "prod"
}
}Los node types son deliberadamente externos al ejemplo porque cambian por nube; selecciónalos después de perfilar CPU, memoria y disco.
Puntos clave
- Dimensiona por recursos de la etapa crítica, no por volumen total de la tabla.
- El driver y los workers tienen responsabilidades distintas.
- Autoscaling no arregla skew ni un único task no paralelizable.
Evita
- Elevar `max_workers` cuando una sola tarea sesgada domina la duración.
- Usar spot/preemptible para el driver y exponer el job completo a una reclamación.
Recuerdo activo
Un job tiene CPU baja en casi todos los workers y una única tarea de 40 minutos. ¿Ayudará duplicar `max_workers`?
Borrador privado · solo en este navegador03OperaciónTags y chargeback
Equilibra coste y latencia en serverless mediante modos de rendimiento, entornos versionados y límites de microbatch.
+
Tags y chargeback
Equilibra coste y latencia en serverless mediante modos de rendimiento, entornos versionados y límites de microbatch.
- Objetivo
- Equilibra coste y latencia en serverless mediante modos de rendimiento, entornos versionados y límites de microbatch.
- Duración estimada
- 17 min aprox.
- Dificultad
- Professional
- Prerrequisitos
- m24
Serverless jobs y pipelines ofrecen modo performance optimized para arranque rápido y modo standard para automatizaciones que toleran aproximadamente 4–6 minutos de inicio a cambio de menor coste. Los notebooks usan el modo interactivo adecuado. Serverless administra infraestructura y Photon, pero el ingeniero sigue controlando la forma de la consulta, paquetes, parámetros y cuánto dato procesa cada ejecución.
Los entornos serverless sustituyen la selección directa de Databricks Runtime y mantienen una API base estable. Fija versiones de paquetes y usa entornos/base environments, porque init scripts no están soportados. En streaming serverless, `Trigger.AvailableNow` procesa lo disponible; limita `maxFilesPerTrigger` o `maxBytesPerTrigger` para evitar microbatches impredecibles.
Modelo mental
Serverless mueve el control desde nodos individuales hacia objetivos de servicio. El ingeniero ya no elige cada instancia ni un init script arbitrario; expresa el tipo de workload, sus dependencias compatibles, paralelismo y límites, y evalúa latencia, coste y estabilidad como propiedades observadas. Los modos de rendimiento intercambian rapidez de provisión y respuesta por consumo, mientras los entornos versionados reducen variación de runtime. En streaming, el tamaño de microbatch conecta dos mundos: lotes grandes aprovechan throughput pero elevan latencia y estado temporal; lotes pequeños reaccionan antes pero pagan más overhead. La ausencia de clúster visible no elimina decisiones de diseño, sólo cambia las palancas permitidas.
Conjunto versionado de runtime y dependencias compatibles usado por el compute administrado.
Aporta reproducibilidad sin control de imagen completa y obliga a declarar dependencias de forma soportada.Trabajo disponible que aún no ha sido procesado por el servicio.
Guía escalado y muestra si el throughput sostenido alcanza la tasa de entrada.Restricción de datos procesados en cada disparo de un stream.
Equilibra latencia, throughput, estado, coste y capacidad de recuperación tras una interrupción.# requirements.txt
pydantic==2.11.7
requests==2.32.4
tenacity==9.1.2
# En el job, selecciona un entorno compatible y conserva
# este fichero versionado junto al código y sus pruebas.No dependas de una versión transitiva no fijada; valida el entorno en test antes de promoverlo.
Puntos clave
- Usa modo standard cuando el SLA admite más arranque y prima el coste.
- Fija versiones de paquetes dentro del modelo de entorno serverless.
- La infraestructura gestionada no elimina la necesidad de acotar cada workload.
Evita
- Elegir performance optimized para miles de jobs batch cuyo SLA tolera el arranque standard.
- Copiar init scripts de compute clásico a una migración serverless.
Recuerdo activo
¿Qué compensación introduce el modo standard de serverless jobs?
Borrador privado · solo en este navegador04DiagnósticoCompute policies y budgets
Impone guardrails con compute policies y atribuye serverless mediante usage policies sin incluir información sensible en tags.
+
Compute policies y budgets
Impone guardrails con compute policies y atribuye serverless mediante usage policies sin incluir información sensible en tags.
- Objetivo
- Impone guardrails con compute policies y atribuye serverless mediante usage policies sin incluir información sensible en tags.
- Duración estimada
- 17 min aprox.
- Dificultad
- Professional
- Prerrequisitos
- m24
Las compute policies restringen la creación de compute clásico: pueden fijar runtime, modo de acceso, Photon, límites de workers, autotermination y tags. Las familias de políticas aportan bases mantenidas por Databricks. Una buena policy reduce opciones peligrosas y deja editables sólo parámetros que el equipo debe decidir; instalar librerías mediante policies es preferible a init scripts.
Serverless usage policies son objetos distintos que asignan tags de coste a notebooks, jobs, pipelines y otros workloads serverless. Sus tags aparecen en `system.billing.usage.custom_tags`. Los tags viajan a registros y pueden replicarse globalmente: usa centro de coste, producto y entorno, nunca correo, nombre de cliente o datos confidenciales. Recuerda que un pipeline disparado por un job conserva su propia policy.
Modelo mental
Una policy es una barandilla ejecutable: transforma estándares de coste, seguridad y soporte en opciones permitidas antes de que nazca el compute. No reemplaza RBAC ni decide quién puede leer datos; limita cómo se configura la infraestructura, por ejemplo runtime, familia, Photon, autoscaling, autotermination o tags. En serverless, una usage policy sirve para atribuir consumo según metadatos y contexto disponibles, no para insertar secretos en etiquetas. La buena gobernanza ofrece caminos aprobados para clases de workload, con defaults sensatos y límites explícitos. Una policy demasiado abierta no controla; una demasiado rígida provoca excepciones manuales y equipos que mezclan cargas incompatibles en un único recurso.
Conjunto de reglas que limita y predetermina atributos al crear compute clásico.
Previene configuraciones inseguras o costosas sin depender de revisión manual posterior.Mecanismo de clasificación y atribución del consumo de productos serverless.
Permite FinOps cuando no existe un clúster propio al que adjuntar tags tradicionales.Vocabulario controlado de dimensiones como centro, entorno, producto y clase de workload.
Hace que la atribución sea agregable y evita cientos de etiquetas equivalentes o sensibles.{
"autotermination_minutes": {
"type": "range",
"maxValue": 60,
"defaultValue": 20
},
"autoscale.max_workers": {
"type": "range",
"maxValue": 12,
"defaultValue": 4
},
"custom_tags.cost_center": {
"type": "fixed",
"value": "finance-data"
}
}Completa la policy con familia y reglas del workspace; prueba que usuarios previstos pueden crear compute y no pueden superar guardrails.
Puntos clave
- Compute policies gobiernan configuración clásica; serverless usage policies atribuyen actividad serverless.
- Fija y oculta guardrails, permite sólo decisiones necesarias.
- Los tags no son un almacén seguro para datos personales o secretos.
Evita
- Usar la misma etiqueta `Name` que Databricks aplica al clúster y romper atribución/terminación.
- Incluir identificadores personales o secretos en tags de coste.
Recuerdo activo
¿Dónde aparecen los tags heredados de una serverless usage policy?
Borrador privado · solo en este navegador05Decisión de diseñoStandard frente a performance optimized
Construye FinOps con cantidades de uso, precios efectivos, correcciones y metadatos de workload, no con estimaciones de horas de clúster.
+
Standard frente a performance optimized
Construye FinOps con cantidades de uso, precios efectivos, correcciones y metadatos de workload, no con estimaciones de horas de clúster.
- Objetivo
- Construye FinOps con cantidades de uso, precios efectivos, correcciones y metadatos de workload, no con estimaciones de horas de clúster.
- Duración estimada
- 17 min aprox.
- Dificultad
- Professional
- Prerrequisitos
- m24
`system.billing.usage` ofrece registros regionales de consumo con SKU, producto origen, metadatos de job/notebook/warehouse, identidad y tags. Para coste monetario se une con la tabla de precios por SKU y vigencia; las correcciones pueden emitir retracciones y restatements, así que agrega `usage_quantity` con su signo en lugar de descartar filas negativas.
Un dashboard útil separa coste, volumen y resultado: coste por ejecución, por millón de filas o por SLA cumplido. Segmenta serverless por `billing_origin_product` y `usage_metadata`, porque varias capacidades comparten SKU. Define presupuestos y alertas como detección temprana, no como mecanismo que detiene automáticamente todos los workloads.
Modelo mental
FinOps no intenta minimizar cada factura aislada; optimiza el coste de entregar valor con fiabilidad. En Databricks, los registros de uso son hechos temporales que deben unirse con precios efectivos, metadatos de identidad y recursos, y resultados del workload. Las horas de clúster son una aproximación pobre para serverless, autoscaling, tarifas cambiantes o correcciones. system.billing.usage incluye cantidades y metadatos, pero un registro puede ser una retracción o corrección y no todo consumo se atribuye igual. La unidad útil es coste por pipeline exitoso, tabla publicada, terabyte procesado o consulta con SLA. Esa normalización separa crecimiento sano del derroche y evita premiar jobs baratos que fallan.
Entrada de facturación que retracta o ajusta una cantidad publicada previamente.
Debe netearse correctamente para no duplicar uso ni mostrar ahorros ficticios.Importe dividido por una unidad de valor o trabajo comparable.
Distingue aumento de gasto por crecimiento de una regresión de eficiencia.Porcentaje del coste asignado de forma trazable a propietario, producto o workload.
Expone cuánto del dashboard es accionable y cuánto permanece compartido o desconocido.SELECT
usage_date,
billing_origin_product,
custom_tags['cost_center'] AS cost_center,
sku_name,
SUM(usage_quantity) AS usage_quantity
FROM system.billing.usage
WHERE usage_date >= current_date() - INTERVAL 30 DAYS
GROUP BY usage_date, billing_origin_product,
custom_tags['cost_center'], sku_name
ORDER BY usage_date DESC, usage_quantity DESC;Para moneda, une con `system.billing.list_prices` respetando SKU y periodo; este ejemplo evita fingir que DBU equivale directamente a coste.
Puntos clave
- Suma registros de corrección con signo para obtener consumo neto.
- Une uso y precios por SKU y periodo de vigencia.
- Normaliza coste por unidad de negocio o trabajo terminado.
Evita
- Multiplicar todas las DBU por un único precio sin considerar SKU ni vigencia contractual.
- Ignorar correcciones negativas y sobreestimar consumo histórico.
Recuerdo activo