Google Cloud Platform ofrece una solución de orquestación de flujo de trabajo de datos totalmente administrada llamada Composer

En este artículo te contaremos en detalle cómo Composer permite a los usuarios definir, programar y administrar flujos de trabajo complejos en un entorno de nube escalable y altamente disponible.

Una de las principales ventajas de Composer es que proporciona una interfaz de usuario basada en web y una CLI, lo que hace que sea fácil para los usuarios crear, programar y monitorear flujos de trabajo. Además, Composer utiliza Apache Airflow, una plataforma de orquestación de flujo de trabajo de código abierto, para definir y ejecutar flujos de trabajo.

El uso de Composer es común en casos de ingestión de datos, transformación de datos, integración de servicios de GCP y flujos de trabajo ETL. También es adecuado para la creación de flujos de trabajo de aprendizaje automático, lo que permite a los usuarios construir modelos de aprendizaje automático y ejecutarlos en un entorno de nube escalable.

El entorno de Cloud Composer es una plataforma de procesamiento de datos autogestionado. Está compuesto por varios componentes que trabajan juntos para proporcionar una solución confiable y escalable.

Uno de los componentes más importantes del entorno es el clúster. Es un clúster nativo de VPC de Google Kubernetes Engine que consta de nodos y pods que ejecutan diferentes componentes del entorno. El clúster es responsable de garantizar la disponibilidad y escalabilidad de los recursos necesarios para ejecutar las tareas.

Otro componente importante son los programadores y trabajadores de Airflow. Estos distribuyen y ejecutan tareas individuales desde los DAG (gráficos acíclicos dirigidos). Los DAG son una forma de representar la lógica del flujo de trabajo que se va a ejecutar.

La cola de Redis es otro componente importante que se encarga de almacenar las tareas y se ejecuta como una aplicación StatefulSet en el clúster del entorno. Esto ayuda a garantizar que las tareas se ejecuten de manera confiable y que no se pierdan si ocurre un error.

El servidor web de Airflow proporciona la interfaz de usuario de Airflow y la base de datos de Airflow aloja los metadatos en una instancia de Cloud SQL. La base de datos de Airflow es esencial para el correcto funcionamiento del entorno, ya que almacena información crítica sobre los DAG y las tareas. Por último, el bucket de entorno de Cloud Storage almacena los DAG, complementos, dependencias de datos y registros de Airflow. Es importante asegurarse de que los datos se almacenen en un lugar seguro y accesible para que el entorno pueda funcionar sin problemas.

Cada componente del entorno de Cloud Composer tiene una función importante y está diseñado para trabajar juntos de manera cohesiva. Sin embargo, es importante tener en cuenta que el clúster del entorno es administrado por Google y cualquier cambio en la configuración del clúster podría interrumpir el entorno.

Un entorno de Cloud Composer funciona como un envoltorio en Apache Airflow. Cada entorno de Cloud Composer genera los siguientes elementos:

  • Clúster de GKE: Los programadores, los trabajadores de Airflow y la cola de Redis se ejecutan como cargas de trabajo de GKE en un solo clúster, procesando y ejecutando los DAG. Además, el clúster aloja componentes como el agente de Cloud Composer y el monitoreo de Airflow para administrar el entorno, almacenar registros en Cloud Logging y recopilar métricas para Cloud Monitoring.

  • Servidor web: La interfaz web de Apache Airflow se ejecuta en el servidor web, protegido por Identity-Aware Proxy. Consulte la Interfaz web de Airflow para más información.

  • Base de datos: Los metadatos de Apache Airflow se almacenan en la base de datos.

  • Bucket de Cloud Storage: Cloud Composer asocia un bucket de Cloud Storage con cada entorno. El bucket asociado almacena DAG, registros, complementos personalizados y datos del entorno. Para obtener más información sobre el bucket de almacenamiento de Cloud Composer, consulte Datos almacenados en Cloud Storage.

Este entorno al ser  administrado por Google Cloud Platform ofrece una gran cantidad de componentes y servicios adicionales para facilitar el proceso de creación y ejecución de flujos de trabajo complejos en la nube.

Entre los componentes clave de Cloud Composer se encuentran el almacenamiento de Cloud SQL, el proxy de Cloud SQL, Firestore, la supervisión de Airflow, el agente de Composer, Airflow InitDB, FluentD, suscripciones de Pub/Sub y la sincronización de buckets.

  • El almacenamiento de Cloud SQL se encarga de guardar las copias de seguridad diarias de la base de datos de Airflow para minimizar la pérdida de datos. 

  • El proxy de Cloud SQL conecta la base de datos de Airflow con otros componentes del entorno y autoriza el acceso desde aplicaciones y servicios de Google Cloud.

  • Firestore, por su parte, balancea el tráfico de la instancia de Cloud SQL entre dos instancias de proxy de Cloud SQL. 

  • La supervisión de Airflow informa sobre el estado del entorno y se ejecuta como una implementación en el clúster de tu entorno.

  • El agente de Composer es el encargado de realizar cambios en el entorno, como crear, actualizar, mejorar y borrar entornos.

  • Airflow InitDB crea una instancia de Cloud SQL y un esquema de base de datos inicial. 

  • FluentD recopila registros de todos los componentes del entorno y los sube a Cloud Logging.

  • Las suscripciones de Pub/Sub permiten la comunicación con el agente de servicio de GKE.

  • Por último, la sincronización de buckets se encarga de sincronizar los buckets del entorno en los proyectos del cliente y el usuario. 

Todos estos componentes están integrados en Cloud Logging y Cloud Monitoring para facilitar la visualización y análisis de datos de registro y estadísticas.

Todos estos componentes hacen que Cloud Composer ofrezca una solución completa para la orquestación de flujos de trabajo en la nube, con una amplia variedad de servicios y componentes para facilitar la gestión y análisis de datos en tiempo real.

Figura 1. Arquitectura del entorno de IP pública

IMG1.jpg

Para acceder y administrar tus entornos de Airflow, existen varias herramientas que puedes utilizar de manera nativa. Entre ellas se encuentran:

  1. Interfaz web: La interfaz web de Airflow puede ser accedida desde Google Cloud Console o mediante una URL directa con los permisos correspondientes. Es una herramienta útil que te permite visualizar y administrar tus DAGs, ver el estado de las tareas y monitorear el rendimiento del sistema.

  2. Herramientas de línea de comandos: Después de instalar Google Cloud CLI, puedes ejecutar comandos gcloud composer environments para emitir comandos de línea de comandos de Airflow en entornos de Cloud Composer. Esto es especialmente útil si necesitas automatizar procesos o realizar tareas de administración a gran escala.

Además de estas herramientas nativas, Cloud Composer también proporciona API de REST y RPC que permiten el acceso programático a tus entornos de Airflow. Esto te brinda la posibilidad de integrar tus procesos de Airflow con otros sistemas o herramientas que utilices en tu organización.

La configuración de Apache Airflow en Cloud Composer es similar a la configuración en una implementación local de Airflow. Sin embargo, algunos parámetros de configuración están preconfigurados en Cloud Composer y no se pueden modificar. 

Los DAG de Airflow, también conocidos como flujos de trabajo, se pueden y suelen almacenar en Cloud Storage en el bucket asociado con tu entorno de Cloud Composer. Debes agregar o eliminar DAG del bucket de almacenamiento para agregar o eliminar DAG en tu entorno.

Puedes instalar complementos personalizados, como operadores internos y personalizados de Apache Airflow, hooks, sensores o interfaces en tu entorno de Cloud Composer. 

Para instalar dependencias de Python en tu entorno de Cloud Composer, puedes utilizar el Índice de paquetes de Python o un repositorio de paquetes privado. Si las dependencias que necesitas no están en el índice del paquete, también puedes utilizar la función de complementos. 

¿No estás seguro de cuál versión de Cloud Composer utilizar para tus proyectos de infraestructura de datos? ¡No te preocupes! En este artículo te explicamos las diferencias entre Cloud Composer 1 y Cloud Composer 2, y te ayudamos a seleccionar la mejor opción según tus necesidades.

Cloud Composer 2 es la versión más reciente y avanzada, con capacidad de escalado automático según la demanda. Además, utiliza imágenes de Cloud Composer más actualizadas, junto con Airflow 2 y Python 3.8.12, lo que mejora la eficiencia en comparación con Cloud Composer 1 que requiere ajuste manual.

Otro aspecto a considerar es la arquitectura del entorno. Cloud Composer 2 utiliza el modo Autopilot de Google Kubernetes Engine, lo que proporciona mayor flexibilidad y soporte para Private Service Connect para intercambios de tráfico entre VPC.

En términos de control de acceso, Cloud Composer 2 requiere permisos adicionales y utiliza Workload Identity para mayor seguridad. También cuenta con una mayor flexibilidad en cuanto a escalado vertical, permitiendo la configuración de cargas de trabajo específicas para los trabajadores, programadores, servidor web y la base de datos de Airflow.

Además, el costo de la capa de Compute Engine en Cloud Composer 1 está asociado con las instancias de Compute Engine que usa el clúster de GKE del entorno, mientras que en Cloud Composer 2 se incluye en los SKU para núcleos de CPU, memoria y almacenamiento de Compute Engine. Esto proporciona una perspectiva clara del costo general de los entornos de Cloud Composer.

En resumen, si buscas la versión más avanzada y eficiente, Cloud Composer 2 es la mejor opción. Pero si necesitas una versión más simple y básica, Cloud Composer 1 puede ser la adecuada para ti. ¡Selecciona la versión que se adapte mejor a tus necesidades y comienza a optimizar tus proyectos de infraestructura de datos con Cloud Composer!

Figura 2. Transición del modelo de precios de Cloud Composer 1 a Cloud Composer 2

IMG2.jpg

Para mejorar el rendimiento de tu entorno en Google Cloud Composer, es clave realizar ajustes iterativos en los parámetros del entorno. Como todo el rendimiento del entorno está sujeto a la ejecución de DAG específicos, es vital considerar la cantidad total de DAG a implementar, la cantidad máxima de ejecuciones simultáneas de DAG y la cantidad máxima de tareas simultáneas.

En este sentido, se recomienda seguir los siguientes pasos en ambos tipos de Composer:

  1. Ejecuta tus DAG para evaluar el rendimiento del entorno.

  2. Optimiza la línea temporal para iniciar los DAGs de acuerdo a tus necesidades.

  3. Utiliza Monitoring para supervisar el comportamiento de los recursos del entorno de Composer.

  4. Ajusta la escala y los parámetros de rendimiento según sea necesario y repite los pasos del paso anterior.

En el caso de Composer 2, se sugiere comenzar con uno de los ajustes predeterminados según las siguientes estimaciones:

  • Pequeñas: 50 DAG totales, 15 ejecuciones simultáneas de DAG y 18 tareas simultáneas.

  • Medio: 250 DAG totales, 60 ejecuciones simultáneas de DAG y 100 tareas simultáneas.

  • Grandes: 1,000 DAG totales, 250 ejecuciones simultáneas de DAG y 400 tareas simultáneas.

Es importante tener en cuenta que si se espera que los DAG consuman más recursos de lo que se indica en estas estimaciones, se deben ajustar las configuraciones correspondientes para lograr un óptimo rendimiento.

Los flujos de trabajo son una herramienta valiosa para mejorar la eficiencia y la productividad de tu equipo, pero es importante tener en cuenta las mejores prácticas de seguridad para evitar exponer tus recursos a vulnerabilidades. Al seguir estas prácticas recomendadas, no solo mejoras la seguridad de tus flujos de trabajo, sino que también fortalecer la seguridad general de tu sitio web o aplicación.

En primer lugar, asegúrate de seguir las prácticas recomendadas generales de seguridad y herramientas de redes para proteger tus sistemas contra ataques maliciosos.

Luego, es importante crear una cuenta de servicio nueva y otorgarle solo las funciones de administración de identidades y accesos (IAM) que contengan los permisos mínimos necesarios para ejecutar tu flujo de trabajo. Evita usar la cuenta de servicio predeterminada, ya que esta otorga automáticamente la función básica de editor con una gran cantidad de privilegios y permisos, lo que aumenta el riesgo de exposición involuntaria.

Además, te recomendamos utilizar Terraform para crear tu flujo de trabajo y almacenar la configuración de tu entorno como código en un repositorio. Esto no solo te ayuda a mantener un registro detallado de los cambios en la configuración, sino que también facilita la implementación y gestión de flujos de trabajo en diferentes entornos.

Para mitigar los riesgos de robo de datos, es importante configurar un perímetro de servicio con los controles del servicio de VPC. Esto te permite restringir el acceso a recursos específicos y protegerlos contra posibles amenazas externas.

Por último, te recomendamos utilizar Secret Manager para proteger y almacenar datos sensibles, como claves de API, contraseñas y certificados. Puedes integrar Secret Manager en tus flujos de trabajo utilizando un conector de flujos de trabajo, lo que simplifica el proceso y te ayuda a mantener tus datos seguros.

Al seguir estas prácticas recomendadas de seguridad al utilizar flujos de trabajo, puedes mejorar la seguridad de tus sistemas y protegerlos contra posibles amenazas externas.