Cloud Composer: Orquestación de Streaming (El Patrón Fire and Forget)
Autor: Eduardo Martínez Agrelo
Llegamos a uno de los desafíos arquitectónicos más interesantes para un Data Engineer: ¿Cómo orquestar un proceso que nunca termina (Streaming) usando una herramienta diseñada para procesos finitos (Airflow)? Si lanzamos un job de Dataflow de forma convencional, Airflow esperará eternamente a que finalice, bloqueando un "worker" y marcando el DAG como inacabado. Para solucionar esto, implementaremos el patrón Fire and Forget.
El Dilema de los Procesos Infinitos
Apache Airflow está optimizado para tareas Batch con un inicio y un fin claros. Sin embargo, un pipeline de streaming está diseñado para estar encendido 24/7:
- Bloqueo de Recursos: Una tarea que no termina consume una "ranura" (slot) de ejecución, impidiendo que otros DAGs se ejecuten.
- Falsos Negativos: Si el DAG nunca llega a estado "Success", perdemos la capacidad de monitorizar correctamente la salud de nuestra infraestructura.
Orquestación Moderna con Airflow 3
En las versiones más recientes de Cloud Composer y Airflow 3, la integración con Apache Beam se ha profesionalizado. Utilizaremos el operador de nueva generación que separa la lógica del pipeline de la configuración de la infraestructura:
BeamRunPythonPipelineOperator(runner="DataflowRunner", ...)
Este operador permite una gestión mucho más limpia de los parámetros de ejecución, permitiendo que Cloud Composer actúe como un disparador de alta precisión para nuestros motores de Dataflow.
El Parámetro Mágico: wait_until_finished
La clave para resolver nuestro dilema reside en un único parámetro dentro de la configuración de Dataflow. Al
establecerlo en False, cambiamos el comportamiento de Airflow por completo:
- Disparo y Desconexión: Airflow envía la orden a Google Cloud para iniciar el Job de Dataflow.
- Liberación de Workers: Una vez confirmado que el Job ha arrancado con éxito, Airflow marca la tarea como "Verde" y libera sus recursos.
- Monitorización Independiente: El proceso de streaming continúa viviendo en el servicio de Dataflow, totalmente independiente del ciclo de vida del DAG en Composer.
Implementación práctica
En este laboratorio, desplegaremos un DAG diseñado con la TaskFlow API de Airflow 3. Configuraremos el operador para que localice nuestro script de Beam en el Data Lake y lo envíe a ejecución. Verás con tus propios ojos cómo el DAG finaliza con éxito en pocos segundos, mientras que en la consola de Dataflow el motor empieza a escalar y a procesar los mensajes en tiempo real que estamos enviando desde nuestro publicador de Pub/Sub.
Conclusión: Arquitecturas Híbridas
Has dominado la capacidad de gobernar procesos Batch y Streaming desde un único punto de control. Esta es la marca de un ingeniero avanzado: saber cuándo Airflow debe supervisar y cuándo debe simplemente disparar. Con todas nuestras piezas funcionando en la nube, solo nos queda un paso final: crear el Master DAG que gobierne todo este ecosistema de forma modular y automatizada.