Por qué Airflow es nuestra herramienta de referencia para la gestión moderna del flujo de trabajo

Y debería ser tuyo también

April 20, 2022
Modern Data Platform

Por qué utilizamos Airflow

Un poco de contexto...

A medida que los datos se convierten en uno de los insumos más relevantes, si no el más importante, para que las empresas generen un valor empresarial real, los ingenieros de datos han tenido que estar a la altura de las circunstancias. Su desafío: construir edificios cada vez más complejos canalizaciones de datos.

Estos canalizaciones de datos son la base de cualquier producto de datos:

  • Ingestión: tus datos tienen que venir de alguna parte, ¿verdad? Desde bases de datos relacionales hasta APIs y web scraping. Los ingenieros de datos tienen que ingerir datos de todas estas fuentes de datos completamente diferentes.
  • Transformación: si necesita transformar sus datos, ahora es el momento. Algunas canalizaciones solo limpian los datos ingeridos, otras los transforman en métricas empresariales reveladoras. ¡Quizás solo quieras almacenarlos sin procesar y saltarte este paso por completo!
  • Almacenamiento: los datos del oleoducto tienen que terminar en alguna parte. Tal vez un archivo S3 sin procesar en su lago de datos después de ejecutar un proceso ELT o una tabla nueva. Ahora los datos están listos para ser consumidos por sus usuarios, por una herramienta de inteligencia empresarial o por un sistema de aprendizaje automático.

Estas tuberías pueden procesar lote datos (cantidades discretas y, por lo general, grandes de datos durante un período determinado, como un día, una semana o un mes) o streaming datos (cantidades continuas de datos sin discretización ni separación claras).

Las canalizaciones de datos son lo suficientemente complejas, pero el problema está en los detalles. Los pasos mencionados anteriormente deben ejecutarse en un orden específico y tener dependencias entre sí: ¿cómo asegurarse de que se han ingerido datos de todas las fuentes antes de transformarlas y almacenarlas? ¿Qué ocurre si nuestra canalización no logra ingerir una de esas fuentes?

Por ejemplo, supongamos que queremos contar la cantidad de usuarios nuevos que tenemos para una fecha determinada. Construiríamos una canalización de datos que ingiere datos de clientes para la fecha indicada de dos bases de datos diferentes, transforma esta entrada contando el número de usuarios, y luego tiendas está en una tabla aparte. Es fácil ver que si no nos aseguramos de que estas tareas se ejecuten de forma secuencial, ¡nuestro resultado no sería correcto! Lo mismo ocurre con los errores: si no podemos ingerir datos de ninguna de sus fuentes, no contabilizaremos realmente a todos nuestros usuarios.

Y este es un escenario simple: ¿qué pasa si nuestra canalización tiene aún más tareas y dependencias?

Afortunadamente, hay una manera de evitar todos estos dolores de cabeza: los ingenieros de datos usan gestión del flujo de trabajo herramientas para ayudarlos a lidiar con todos esos escenarios desagradables.

No hace mucho, en una galaxia no muy lejana, las canalizaciones de datos se ejecutaban utilizando algo como trabajos cron (un planificador de tareas [simple] en sistemas operativos tipo Unix) Sin embargo, las canalizaciones de datos son cada vez más complejas, con más dependencias y pasos. Lo que antes era una consulta simple que seleccionaba datos de dos tablas, los unía e insertaba los datos resultantes en una tercera tabla, ahora es un flujo de trabajo complejo de pasos con varias canalizaciones de datos en diferentes fuentes de datos y sistemas.

Dado que CRON es solo un programador de tareas que activa un script o un comando en un momento específico, resultó insuficiente para soportar este escenario. Si necesita desarrollar código personalizado para gestionar los flujos de trabajo de datos modernos, puede detectar que cron y otros sistemas de programación de tareas no son suficientes para gestionar los flujos de trabajo de datos modernos.

  1. Reintentos automáticos con tiempos de espera configurables.
  2. Rellenar datos antiguos (p. ej. ¿Y si creé el flujo de trabajo el día 10 del mes y quiero que la herramienta lo ejecute en todas las fechas (desde principios de mes) y siga ejecutándolo a diario de ahora en adelante?
  3. Determinar si un trabajo tuvo éxito o no.
  4. Ejecutar varios trabajos no dependientes en paralelo y determinar si todos se realizaron correctamente o no para averiguar si la ejecución de un flujo de trabajo se realizó correctamente.
  5. Comprueba si se cumplen todas las dependencias de datos (u otras) para determinar si se puede iniciar la ejecución de un flujo de trabajo.
  6. Una solución de monitoreo para ver métricas de alto nivel y determinar la cantidad de trabajos en ejecución, la cantidad lista para comenzar a ejecutarse, la cantidad fallida y el estado general de la ejecución del flujo de trabajo.
  7. Volver a ejecutar parte del flujo de trabajo y todas las tareas dependientes.
  8. Poder controlar las versiones de las definiciones de flujo de trabajo y tener una lógica de procedimiento en el archivo de definición del flujo de trabajo que puede variar la composición del flujo de trabajo según las configuraciones empresariales definidas para un entorno determinado.

La respuesta llegó en forma de herramientas de orquestación automatizadas. En 2014, con el objetivo de abordar los desafíos que planteaba la gestión de su propio flujo de trabajo, Airbnb desarrolló Flujo de aire Apache: una herramienta que facilitaría mucho la ejecución, la resolución de problemas, la supervisión y la adaptación de los flujos de trabajo.

Airflow se especializa en ejecutar y coordinar tareas que implican la manipulación discreta de lotes de datos. Si está buscando una herramienta que pueda gestionar flujos de datos, Apache Airflow no es la herramienta para usted, pero la tiene algunas recomendaciones al respecto!

Flujo de aire, flujo de aire Apache

Volvamos al pasado lejano de 2014 por un minuto. Nuestro jefe nos pidió que ejecutáramos un trabajo de ETL todos los días a medianoche para incluir esos datos en los informes y visualizaciones diarios.

Creaste un trabajo de cron de confianza en un caso olvidado, y esa solución mantuvo a tu jefe contento durante unos días. Pero una mañana tu jefe te da un golpecito en el hombro (recuerda que estamos en 2014, ¡así que todos trabajamos en oficinas con espacios abiertos en lugar de en nuestras casas!) y te dice con enfado que los informes no recogían los datos de ayer, justo cuando tu jefe tenía que mostrárselos a su supervisor.

Comprueba el trabajo de cron en tu instancia, pero no encuentras nada, lo que te deja rascarte la cabeza por la confusión. Más tarde, te das cuenta de que una de las API que utilizas para extraer datos tenía un pequeño tiempo de inactividad durante la noche, lo que hacía que todo el proceso fallara.

Esa es solo una de las complejidades ocultas de la creación de una plataforma de orquestación: ¿cómo sé cómo y por qué falló? ¿Cómo defino las dependencias complejas entre mis tareas? ¿Qué sucede si quiero volver a intentarlo unos minutos después del error? ¿Es posible ejecutar varias de estas tareas en paralelo? ¿Suele fallar a la misma hora o al mismo día? ¿Cuánto tiempo tarda en ejecutarse?

¡Es difícil sacar esas características de un simple cron job!

Pero Airflow hace todo esto y mucho más. Todas estas funciones vienen listas para usar con Flujo de aire:

  • El orden de las tareas se configura en un sencillo archivo de Python, denominado DÍA, lo que le permite definir las acciones tanto en caso de fracaso como de éxito.
  • Los reintentos también forman parte de este archivo DAG, lo que le permite decidir qué hacer si el proceso falla.
  • ¡Informe fácilmente esos fracasos y éxitos a la plataforma que elija! Es fácil enviar informes por correo electrónico o mensajes de Slack.
  • Y lo mejor de todo: tienes el poder de Python en tus manos para crear y modificar de forma dinámica cualquiera de estas funciones.

Solo necesitará comprender los siguientes componentes, lo que hace que Airflow sea extremadamente fácil de captar:

  • DAG (gráfico acíclico dirigido): Grupo de tareas con dependencias (flujo de trabajo)
  • Operador: Tipo de tarea que se va a ejecutar. Por ejemplo. Comando Bash, script de Python, sentencia SQL, etc.
  • Tarea: Instancia de operador que define un nodo en el DAG.
  • Ejecución de DAG: Instancia temporal en la que se ejecuta un DAG. Airflow mantiene el control y las dependencias entre las tareas.
  • Instancia de tarea: Ejecución específica de una tarea en el contexto de un DaGrun.

Por qué nos encanta Airflow en Mutt Data

Fácil de usar desde el primer momento

La barrera de entrada para usar Airflow es baja, ya que su lenguaje principal es Python: el lenguaje de programación más utilizado para los equipos de datos.

Trabajar con muchos clientes se traduce en trabajar con muchos requisitos y entornos de desarrollo diferentes: algunos lo usan en la nube, otros lo ejecutan en sus propios servidores privados. Consideramos que poder configurar y ejecutar Airflow con facilidad es clave para permitirnos ofrecer valor y resultados de manera eficiente.

Este beneficio no se limita a los programadores. Cualquier persona que tenga acceso a la interfaz de usuario de Airflow puede volver a ejecutar tareas, comprobar los registros y solucionar problemas para descubrir si algo ha ido mal. Su interfaz de usuario amigable y su moderna aplicación web permiten acceder a una variedad de métricas, como el rendimiento, los tiempos de ejecución, el estado de los procesos y los intentos de ejecución. Esto hace que la supervisión de los flujos de trabajo sea accesible. Muchas funciones, como iniciar, pausar y finalizar un flujo de trabajo, se pueden llevar a cabo directamente desde la aplicación.

Jugador de equipo

Airflow facilita la ejecución de tareas en proveedores de uso común, como Google Cloud, Amazon AWS y Microsoft Azure. Además, en lugar de programar las conexiones manualmente, puede utilizar los «operadores de flujo de aire» previamente definidos, lo que permite la integración con otros sistemas, como bases de datos, alertas de correo y marcos.

Escalabilidad y personalización

Airflow permite a los usuarios escalar horizontalmente a medida que se agregan más tareas o procesos al flujo de trabajo. De esta forma, nunca lo sorprenderá una carga de trabajo repentina con un uso intensivo de cómputos.

Pero esa no es la única razón por la que Airflow es escalable. Como Airflow define todos sus flujos de trabajo como código, los DAG se pueden generar de forma dinámica. Consumir un recurso externo, como una base de datos o un archivo de configuración, será suficiente. Agregar un nuevo DAG para su producto más reciente ahora no requiere codificación, lo que permite alguien para programar potentes trabajos de ETL.

Ser capaz de definir los flujos de trabajo como código Python significa que Airflow permite crear abstracciones de nivel superior de forma similar a un marco. Puede crear funciones que generen una combinación típica de tareas que se repita con frecuencia para evitar la repetición del código y simplificar los cambios. Además, puede tener un objeto generador que cree DAG (flujos de trabajo de flujo de aire) de forma dinámica a partir de los archivos de configuración. Esto podría lograrse con cualquier lenguaje procedimental, pero Python, al ser un lenguaje dinámico y el estándar de facto para las aplicaciones de datos, es la opción ideal. Estas características y la popularidad de Airflow lo convierten en un candidato ideal para usarlo como base para construir un marco que permita crear una plataforma al estilo de DataOps.

Puede obtener más información sobre nuestra experiencia en la creación de plataformas DataOps aquí.

Basado en Python y en una comunidad de código abierto, Airflow es fácilmente ampliable y personalizable con un sólido ecosistema de integraciones y extensiones.

Astrónomo

Si ha oído hablar de Airflow antes de esta publicación, es posible que también haya oído hablar de Astrónomo. Si no, puedes leer más sobre ellos en nuestra última comunicado de prensa donde anunciamos nuestra asociación tecnológica.

Astronomer ofrece la orquestación para la plataforma de datos moderna y actúa como administrador del proyecto Apache Airflow. Astronomer, que actualmente ocupa un lugar central en la comunidad y el ecosistema de Airflow, es la fuerza impulsora de los lanzamientos y de la hoja de ruta de Airflow.

Astronomer también ofrece Airflow autohospedado y gestionado por SaaS con soporte comercial, creando una plataforma completa de orquestación de datos.

Por qué recomendamos Astronomer

En comparación con el simple uso de Airflow, Astrónomo se destaca por lo que permite una implementación perfecta, una escalabilidad infinita, una mayor visibilidad del sistema, una reducción de los tiempos de operación del segundo día y, más allá del soporte de reparación y reparación por parte de expertos.

Como parte de su objetivo de hacer crecer la comunidad de Airflow, Astronomer ofrece un miríada de recursos útiles incluidos: charlas, podcasts, foros comunitarios, canales de Slack, vídeos, documentos y atención al cliente. También ofrecen certificaciones de Apache Airflow con formación y exámenes que abarcan variables, grupos, DAG, versiones, plantillas, API de flujo de tareas, subdivisiones, acuerdos de nivel de servicio y muchos más conceptos para destacar en la comunidad como expertos en Airflow.

Cómo empezar a usar Airflow

Probablemente ya se haya dado cuenta de que nos gusta usar Airflow y creemos que la plataforma ofrece muchos beneficios a sus usuarios. Si está interesado en obtener más información, nos hemos tomado la libertad de recomendarle algunos enlaces útiles. ¡Espero que los disfrutes!

Después de mojarse los pies, le recomendamos que tome uno de ¡Certificaciones de astrónomo!

Finalizando

Hemos creado con éxito canales de datos y aprendizaje automático para plataformas de tecnología publicitaria, sistemas de ofertas publicitarias en tiempo real, optimización de campañas de marketing, visión artificial, PNL y muchos más proyectos que utilizan Airflow. No solo recomendamos la herramienta, sino que seguimos desarrollando nuestra experiencia e incentivando a los miembros de nuestro equipo a obtener la certificación de astrónomos.

¿Necesita ayuda para descubrir la mejor manera de impulsar su negocio con datos? Estamos encantados de poder ayudarle. Puede obtener más información sobre nosotros aquí.

Esperamos que esta publicación te haya resultado útil y, al menos, entretenida. Si te ha gustado lo que has leído hasta ahora, tienes unas increíbles habilidades de desarrollo, te gusta la ingeniería de datos crear canales de datos modernos y te gusta aplicar el aprendizaje automático para resolver desafíos empresariales difíciles, envíanos tu currículum aquí o visita nuestra cuenta de Lever para ¡vacantes actuales de equipos!

Share article.
News & insights

Latest Insights

Muttdata
Empresa

¿Cómo sabes que es hora de hacer evolucionar tu marca?

Evolucionar nuestra marca para que esté a la altura de nuestro crecimiento
Read Article
Modern Data Platform

El lenguaje natural se une a los datos en tiempo real: análisis sin cuellos de botella

Obtenga información sin necesidad de conocimientos técnicos
Read Article
Paid Media Optimizer

No todos los optimizadores de medios de pago están diseñados de la misma manera

5 razones por las que deberías solicitar una demo
Read Article

Listo para desbloquear

¿el poder de los datos?