Orquestación de datos
Correr los procesos de datos en el orden y el momento justos, y reaccionar cuando fallan.
Una plataforma de datos real son decenas o cientos de procesos: traer los pedidos de la base de la tienda, traer los pagos del banco, limpiar los dos, cruzarlos, reconstruir el data mart, refrescar los dashboards. Cada paso depende de que otros terminen antes. La orquestación de datos es la capa que conoce esas dependencias, arranca cada proceso cuando sus insumos están listos y lleva la cuenta de qué corrió, qué falló y qué viene atrasado.
La mayoría de los orquestadores describe un pipeline como un DAG, un grafo dirigido acíclico: cajas para las tareas y flechas para "esto tiene que terminar antes de que arranque aquello", sin ciclos. Escribís el DAG como código y el orquestador lo programa (todas las noches a las 2, o cada vez que llega un archivo nuevo), corre en paralelo las tareas independientes, reintenta las que fallan y avisa a alguien cuando reintentar no alcanza. Si se rompe la extracción de pagos, nada de lo que sigue corre con la mitad de los datos.
Apache Airflow es la herramienta más conocida. Nació en Airbnb en 2014, pasó a ser un proyecto de Apache y los pipelines se escriben en Python. Herramientas más nuevas como Dagster y Prefect ponen el foco en los datos que produce cada tarea y no solo en las tareas, y las nubes ofrecen versiones administradas como Amazon MWAA. La orquestación no transforma los datos: llama a las herramientas que lo hacen, como dbt, Spark o SQL a secas, y se asegura de que corran en orden.
Para quedarse
- Corre procesos de datos según sus dependencias, por horario o por eventos.
- Los pipelines suelen ser DAGs: tareas y flechas de "va después de", sin ciclos.
- Se encarga de reintentos, alertas, reprocesos y el historial de cada corrida.
- Apache Airflow es la herramienta clásica; Dagster y Prefect son opciones más nuevas.
Para seguir leyendo
- Apache Airflow en Wikipedia
- Documentación de Apache Airflow (en inglés)
- Qué es la orquestación de datos (IBM, en inglés)