Las novedades más importantes de Apache Airflow 3.0

Recientemente, se produjo el lanzamiento oficial de la versión 3.0.0 de Airflow y, con ella, llegan varias novedades en las funcionalidades implementadas y la interfaz gráfica. En este post, abordaremos los cambios más interesantes.

Versionamiento de DAGs

Una de las nuevas características de Airflow 3.0 es el versionamiento de los DAGs. Para observar esta funcionalidad, creamos un DAG simple, lo ejecutamos y veremos lo siguiente:

Captura de pantalla de la interfaz de Apache Airflow mostrando la ejecución exitosa de un DAG llamado "simple_version_example_dag", con una sola tarea denominada "my_task".

En la información de los DAG ejecutados, observamos la versión del DAG que se utilizó para ese DAG run. Si ahora modificásemos ese DAG simple, lo guardamos y lo volvemos a ejecutar, obtendremos:

Captura de pantalla de la ejecución de un DAG en Airflow donde se ve el lanzamiento exitoso de "simple_version_example_dag" tanto para la versión v1 como para la versión v2

Tal y como se puede observar, tenemos un nuevo DAG run pero con una versión diferente. Además, una vez se lanza un DAG run, Airflow reparsea el DAG y crea una nueva versión. No altera el DAG run, ejecutando la versión con la que empezó. De esta forma, el control de versiones se simplifica considerablemente y añade una capa de auditoría que antes no se podía obtener de forma nativa.

Backfills en Airflow 3.0

Ahora es posible ejecutar backfills desde la CLI y la interfaz gráfica. Los backfills se comportan como si fueran también DAGs y permiten re-ejecutar periodos pasados con facilidad.

Captura de pantalla de la interfaz gráfica de un DAG de Airflow donde se puede ver un ejemplo de la ejecución de backfills

En este caso, tenemos un DAG con un periodo de errores y queremos reprocesar dichos fallos. Para ello, hacemos uso del backfill.

Captura de pantalla de la interfaz gráfica de Airflow donde se puede configurar el reprocesamiento de datos de un backfill

Indicamos el intervalo de tiempo que queremos que el backfill procese y añadimos la configuración que únicamente procese los DAG runs que fallaron.

Captura de pantalla de interfaz gráfica de Airflow con ejemplo de éxito en reprocesamiento con backfill

Una vez ejecutado el backfill, podemos ver que los DAGs ahora están reprocesados sin fallos.

Captura de pantalla de la interfaz gráfica de Airflow donde se puede ver un ejemplo de auditoría de backfill

Además, el backfill queda guardado, facilitando así su auditoría.

DAG sin logical_date

En la versión 3.0 de Airflow es posible tener DAGs sin una logical_date. Esta opción permite apoyar cargas de trabajo que no usan intervalos más fácilmente, ya que logical_date era parte de la ID de un DAG run, haciendo que múltiples DAG runs con una misma fecha fueran considerados como diferentes intentos del mismo. Ahora, pudiendo indicar esta fecha en nulo, son DAG runs separados.

Como ejemplo, aquí podemos ver un DAG ejecutado con una logical_date:

Captura de pantalla de la interfaz gráfica de Airflow que muestra un ejemplo de un DAG ejecutado con una logical_date

Aquí podemos ver el mismo DAG sin logical_date:

Captura de pantalla de la interfaz gráfica de Airflow donde se muestra un ejemplo de un DAG ejecutado sin establecer logical_date

Como podemos ver, la Run ID ahora tiene una string aleatoria al final para hacerla única, y no tiene Data Interval Start o Data Interval End.

Conclusión

En este espacio hemos abordado algunos de los cambios que se han introducido en Airflow 3.0 y cómo nos permiten agilizar varios procesos, especialmente, de auditoría y control de ejecución. Teniendo en cuenta esta serie de tips y aplicando estas nuevas funcionalidades en futuros procesos de Airflow, conseguiremos sacar el máximo partido a la herramienta.

¡Eso es todo! Si este artículo te ha resultado interesante, te animamos a visitar la etiqueta Airflow para ver todos los posts relacionados y a compartirlo en redes. ¡Hasta pronto!

Antoni Casas
Antoni Casas
Artículos: 20