Usamos cookies. Tienes opciones. Las cookies nos ayudan a mantener el sitio funcionando sin problemas e informar sobre nuestra publicidad, pero si deseas realizar ajustes, puedes visitar nuestro Aviso de cookies para más información.
Utilizamos cookies propias y de terceros para analizar su actividad en el sitio web con el objetivo de enviarle publicidad personalizada y mejorar el funcionamiento de la web. Puedes aceptar todas las cookies pulsando el botón “ACEPTAR” o seleccionarlas en función de su funcionalidad pulsando el botón “AJUSTES”.
×

Airflow: un software para orquestarlos a todos

Nos encontramos en un momento en el que cada interacción de las empresas con sus clientes se analiza minuciosamente con el fin de optimizar la inversión publicitaria y, en última instancia, aumentar las ventas. Esto permite un mayor conocimiento de los usuarios, pero requiere unos mecanismos de recolección de datos consolidados para que las decisiones de negocio se tomen en base a criterios objetivos y reales. 

Es por ello que, de cara a realizar análisis correctos y llegar a conclusiones que sean de ayuda en nuestro negocio, es necesario asegurarse de que los flujos de extracción y manipulación de los datos están funcionando correctamente en base a lo que esperamos. 

En este artículo hablaremos de una de las herramientas más potentes y utilizadas en la actualidad para la orquestación de flujos de trabajo: Apache Airflow, que nos permitirá el control de todo esto desde una única herramienta. 

orchestration

 

¿Qué es Apache Airflow?

Se trata de una herramienta de código abierto publicada en junio de 2015 por parte del equipo de Airbnb. Podemos intuir su importancia, ya que entre marzo de 2016 y enero de 2019 se consolida como ‘top level project’ en Apache Software Foundation y hoy en día los principales entornos cloud existentes en el mercado han encontrado un modo de integrarlo en sus sistemas. 

Airflow es una plataforma para crear, programar y monitorear flujos de trabajo mediante código. En otras palabras, es un orquestador de flujos de trabajo, que podremos utilizar para automatizar tareas programáticamente. Cada flujo de trabajo dentro de la herramienta se define como un grafo acíclico dirigido (DAG) de tareas atómicas. Para ejecutar estas tareas, existen operadores predefinidos, pero también tenemos la posibilidad de desarrollarlos bajo demanda de forma sencilla. 

 

F&KDT

Figura 1: ‘Graph view’ de un DAG básico.

Quienes ejecutan las tareas son los ‘worker’ que siguen las dependencias que se hayan especificado previamente. La definición de las dependencias y de las tareas atómicas se hace a través de código python, lo que permite que las tareas se vuelvan más fáciles de mantener, versionar y validar.

Además, la interfaz de usuario facilita la visualización de las pipelines de datos que se ejecutan en producción, supervisa el funcionamiento y brinda un sencillo sistema de logs que es de gran ayuda en la depuración de errores. En la siguiente imagen podemos ver la vista de árbol de un determinado DAG y cómo las casillas de colores indican el estado de la ejecución para cada fecha:

 

FIgura 3

Figura 2: ‘Tree view’ de un DAG desde la interfaz web

En este caso, la ejecución de todas las tareas ha funcionado correctamente, por lo que se marcan en verde. Pero existen situaciones en las que podemos determinar otro estado para las tareas. Por ejemplo, si tenemos un operador que diariamente ejecuta un sensor para detectar un fichero y este fichero no está disponible, podremos marcar la tarea como ‘skipped’ e indicarle al programa que debe reejecutar todas las tareas de fechas anteriores que se hayan saltado o que hayan tenido problemas. Configurar este comportamiento es sencillo y permite generar pipelines robustas y resilientes a fallos externos.

 

Arquitectura de airflow

A continuación mostramos una versión simplificada de la arquitectura de Airflow. Consiste en un servidor web que proporciona la interfaz de usuario, un almacén de metadatos relacionales que podría ser una base de datos MySQL o PostreSQL, un volumen persistente que almacena los archivos de los DAG, un scheduler que planifica las tareas, un bróker que las distribuye y los worker, que serían los encargados de ejecutarlas finalmente:

Figura 4

Figura 4: arquitectura básica de airflow. Fuente: https://azure.microsoft.com/es-es/blog/deploying-apache-airflow-in-azure-to-build-and-run-data-pipelines/

Además, hay que destacar que esta arquitectura es flexible y se podría implementar de distintas formas: 

  • Secuencial: modo útil para fines de desarrollo o pruebas. Serializa las operaciones y permite que solo se ejecute una tarea cada vez.
  • Local executor: este modo admite paralelización y es adecuado para cargas de trabajo pequeñas o medianas. No permite escalar la solución.
  • Celery Executor: este es el modo preferido de las implementaciones en producción y una de las formas de escalar el número de trabajadores. Para que funcione, se requiere un sistema tipo Redis para la coordinación de los worker.
  • Dask Executor: este modo también puede escalar horizontalmente, lo que permite a los usuarios ejecutar las tareas en un clúster distribuido.

Todas estas características hacen de Airflow una de las soluciones más flexibles y consolidadas para la gestión de flujos de trabajo. Además, se puede implementar directamente en máquinas virtuales o mediante servicios administrados para contenedores, como Kubernetes. Sin ninguna duda, la potencia de la herramienta como orquestador, unido a su capacidad para escalar y dimensionar las cargas de trabajo lo ha convertido en todo un estándar de mercado. 

 

En nuestra compañía