En el mundo ‘data-driven’ que nos ha tocado vivir parece que cada día cobran más importancia las herramientas que nos permiten desarrollar y orquestar flujos de trabajo destinados a la integración y consolidación de datos en datawarehouses o datalakes. Una de las plataformas que más ha crecido en estos últimos años ha sido el proyecto open-source Apache Airflow, un proyecto consolidado ya como ‘top level project’ en la Apache Software Foundation y que ha estrenado recientemente su ‘release’ 2.0 con un nuevo lavado de cara de su interfaz y muchas mejoras. Una de las características más potentes de utilizar Airflow es la cantidad de operadores (conectores que permiten interactuar con diferentes servicios) que la comunidad ha desarrollado y que están disponibles desde el minuto 0 para poder incorporarlos dentro de tus DAGs. En ese aspecto esta nueva ‘release’ incorpora más de 100 conectores para poder conectar desde bases de datos a servicios de las diferentes clouds.
Airflow as a Service
El avance de Airflow como herramienta de orquestación es imparable, y, tal y como comenta mi compañero Pelayo Rodríguez en este post, algunas de las plataformas de cloud públicas lo han integrado como servicio ‘fully managed’ dentro de sus entornos, lo que permite de manera relativamente sencilla poder desplegar un entorno totalmente escalable a golpe de click y sin el ‘overhead’ de gestionar toda la infraestructura que lo soporta por debajo, lo que permite a los ‘data engineers’ centrarse en el desarrollo de los DAGs y las diferentes tareas que forman el flujo de trabajo. Veamos algunas de las opciones que existen ahora mismo para poder comenzar a trabajar con Airflow en entornos cloud.
-
Amazon Managed Workflows for Apache Airflow (MWAA)
Hace unas semanas AWS daba el salto definitivo para incorporar Airflow dentro de su catálogo de servicios. Hasta ese momento la única manera de generar y controlar este tipo de pipelines era a través de su servicio AWS Step Functions (que permite configurar máquinas de estados para lanzar y sincronizar diferentes tipos de tareas).

*Figura 1. MWAA en AWS
Si necesitas desarrollar e integrar datos dentro del entorno de AWS, MWAA ofrece toda la potencia de Airflow y el acceso a todos los operadores disponibles. Amazon provee actualizaciones de versiones menores de manera automática y la capacidad de utilizar el IAM para la gestión de permisos y accesos a la herramienta. Por supuesto, la integración con otros servicios dentro del entorno AWS es total, y mediante los operadores podemos generar tareas que utilicen servicios como Athena, Cloudwatch, Lambda, Redshift, etc.
-
Cloud Composer

Google ha sido, en este aspecto, pionero en la integración total de Airflow dentro de sus servicios en GCP. Cloud Composer utiliza además Kubernetes como plataforma soporte, lo que permite una escalabilidad total para lanzar y ejecutar las diferentes tareas. Todo esto, de nuevo, sin tener que preocuparnos por la gestión de la infraestructura. Existen varias configuraciones posibles en la generación del entorno. En la Figura 2 podemos ver una de ellas, donde se muestra una de las posibles arquitecturas sobre la que Airflow se sustenta. Google despliega los recursos entre dos proyectos (tenant Project, gobernado por Google y que añade una capa de control de acceso y seguridad y el customer Project gestionado por el usuario) y esta partición depende, como decíamos, del tipo de configuración aplicado. Los servicios de Airflow además utilizan un proxy para conectarse a la base de metadatos de manera segura.

*Figura 2. Arquitectura de cloud composer en configuración Public IP
-
Microsoft Azure
En el caso de Azure, todavía no podemos ver una implementación SaaS de Apache Airflow dentro de su nube, pero la potencia y el liderazgo indiscutible de Airflow para orquestar todo tipo de tareas hacen pensar que, en algún momento no muy lejano, tendremos algo similar a lo visto en AWS y GCP. Hasta entonces, es posible comenzar a trabajar dentro de Azure a partir de una plantilla (perdemos ese despliegue a golpe de click) que utiliza la imagen de Docker de ‘puckle’ (en desuso debido a la creación de una imagen por parte de la comunidad de Airflow para el despliegue como contenedores Docker) y que permite crear diferentes recursos dentro de la nube, así como soportarlo sobre servicios como Kubernetes o VMs.

*Figura 3. Desplegando Airflow sobre Azure
-
Astronomer
Tener Airflow desplegado e integrado dentro del proveedor cloud con el que trabajamos, nos aporta ciertos beneficios en temas de gobernanza de la herramienta, monitorización e integración nativa con muchos de los servicios de la cloud.
Uno de los mayores “problemas” al utilizar Airflow como SaaS dentro de los proveedores clouds son los costes asociados, tanto AWS como GCP tienen unos costes aproximados para un entorno de Airflow de unos 300€ (de base) al que hay que sumar costes de almacenamiento y computación. La compañía Astronomer se ha posicionado como una solución intermedia a un coste más reducido y ‘cloud agnostic’, es decir, está preparado para ejecutarse sobre cualquier cloud pública o incluso sobre una nube privada. También tienen la opción de desplegarlo sobre su propia infraestructura (Astronomer Cloud). Esto hace que sea una opción muy a tener en cuenta si necesitamos optimizar los costes de la infraestructura o no queremos que nuestra solución este sujeta a un proveedor cloud concreto. Además Astronomer ofrece SLA y servicio de soporte lo que la convierte en una sólida opción para competir con los SaaS nativos de las nubes públicas.

*Figura 4. Astronomer
- Certificaciones en Apache Airflow
Astronomer está además preparando una serie de certificaciones que van a permitir, tanto a nuevos usuarios como a usuarios con experiencia, dar visibilidad a los conocimientos adquiridos en Apache Airflow.
Volviendo al título del artículo, Apache Airflow ha llegado para quedarse y eso nos abre la oportunidad a los Data Engineers y Data Scientists de crear complejos flujos de datos para todo tipo de casos de uso (desde integración de datos en datalakes hasta definición y puesta en producción de pipelines de Machine Learning) utilizando Python como herramienta principal y sin la carga de horas que conllevaría gestionar toda esa infraestructura, permitiendo que nos centremos en lo realmente importante: dar respuesta a las necesidades de nuestros clientes.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Bibliografía