Buenas Prácticas para Ahorrar Costos en Workflows de Databricks
Introducción
Gestionar los costos de tus pipelines de manera efectiva es clave cuando usás Databricks Workflows. Este blog presenta consejos prácticos para reducir tu costo total de propiedad (TCO) sin sacrificar rendimiento y, además, entender mejor tus gastos. Con estas recomendaciones vas a poder optimizar el uso de recursos y sacar el máximo provecho de tu entorno Databricks.
1. Usá job compute e instancias spot para pagar menos por el mismo rendimiento
Los job clusters son mucho más económicos que los all-purpose clusters, ya que consumen menos DBUs (la unidad de cómputo que se paga a Databricks). Si además usás spot instances en un pipeline tolerante a fallos (fault-tolerant pipeline), tus costos pueden reducirse casi a la mitad.
Por ejemplo, una instancia DS5 v2 en modo all-purpose cuesta $4.47/hora, mientras que en job compute baja a $3.42/hora. Si sumás instancias spot (spot instances), el costo se reduce a $2.37/hora, un descuento cercano al 50%.
2. Aprovechá los “Warnings” para recibir alertas cuando un pipeline demora más de lo esperado
Ejecutá tu job varias veces para establecer un tiempo promedio. Tomá el mayor tiempo registrado, sumale entre 5 % y 20 %, y configurá eso como tu tiempo de advertencia (Warning).
De esta forma, vas a recibir una notificación por email cuando un job supere ese umbral y podrás investigar el motivo.
3. Protegete ante escenarios críticos con los “Timeouts”
Dependiendo de tu pipeline y su tolerancia a fallos, configurá un Timeout. Esto le indica a Databricks que, bajo ninguna circunstancia, un job debe exceder ese tiempo. Si lo hace, el workflow se detiene para que puedas analizar el problema.
Una buena práctica es establecer el doble del tiempo del Warning como valor de Timeout, dándote margen para resolver sin tener que reiniciar el job.
4. Usá dependencias entre tareas para orquestar la ejecución de código de manera eficiente
Las dependencias de tareas en Databricks permiten que cada job se ejecute en el orden correcto. Así, evitás que tareas posteriores comiencen antes de que las previas hayan finalizado correctamente, reduciendo errores y consumo innecesario de compute.
Mapeá tu workflow, identificá qué tareas dependen de otras y configurá las dependencias para lograr una ejecución fluida y optimizada.
5. Ejecutá código de larga duración dentro de workflows, incluso si no lo hacés de forma programada
Si tenés tareas puntuales que tardan horas o días en completarse, ejecutarlas dentro de un workflow te permite aprovechar job compute, reduciendo el costo.
Además, si estás desarrollando un pipeline, usar workflows facilita el A/B testing de tiempos de ejecución y configuraciones.
6. Configurá el autoscaling para obtener la potencia justa en el momento justo
El autoscaling ajusta dinámicamente los recursos de cómputo según la carga del trabajo. Así, evitás pagar por capacidad ociosa sin perder rendimiento.
Probá diferentes configuraciones de cluster (mínimo y máximo de workers) hasta encontrar el equilibrio ideal entre rendimiento y costo.
7. Usá etiquetas (tags) para entender mejor tus costos
Incorporar tags en tus jobs, clusters y recursos te da una visión clara de cómo se distribuyen los gastos por departamento, proyecto o cliente.
Definí una estrategia de etiquetado consistente para monitorear cada elemento de tu infraestructura y mejorar la trazabilidad del presupuesto. Esto no solo facilita la gestión de costos, sino también la transparencia y responsabilidad interna.
Cierre
Espero que esta guía te ayude a reducir costos en tus Workflows de Databricks. En el futuro, la introducción de Serverless Compute traerá nuevas dinámicas relacionadas con los workflows y otros componentes.