Al crear canalizaciones de datos modernas, los ingenieros suelen recurrir a funciones sin servidor para agilizar los flujos de trabajo de extracción, carga y transformación (ELT). Tradicionalmente, AWS Lambda ha sido la solución preferida para la informática sin servidor en AWS, pero Google Cloud Run ofrece una alternativa igual de potente. Nos complace anunciar que Orchestra ya es compatible con Google Cloud Run. Esto significa que los Heads of Data que entienden el poder de ejecutar algunos ELT en GCP Python autoalojado pueden aprovechar Cloud Run como parte de una canalización de datos de end to end.
Tabla de contenidos
¿Por qué utilizar Google Cloud Run?
Google Cloud Run es una plataforma sin servidor totalmente gestionada que permite ejecutar contenedores de forma escalable y de pago por uso. Es particularmente útil para los ingenieros de datos que buscan orquestar tareas ELT con scripts Python externos debido a su flexibilidad y soporte para aplicaciones en contenedores. A diferencia de AWS Lambda, que tiene limitaciones de memoria y tiempo de ejecución, Cloud Run puede manejar tareas que requieren más recursos.
Configuración de Google Cloud Run y Orchestra
Visión general de la arquitectura
En nuestro escenario, aprovecharemos Google Cloud Run para:
- Lanzar y gestionar trabajos ETL basados en Python.
- Interactuar con otros servicios de Google Cloud como Cloud Storage, BigQuery y Pub/Sub.
- Integrar Orchestra para gestionar la orquestación de estos componentes para una automatización y supervisión perfectas.
Paso 1: Configuración de Google Cloud Run
El primer paso en nuestro proceso es desplegar una aplicación Python en Google Cloud Run. Esta aplicación en contenedor realizará la lógica central de nuestro proceso ELT, como extraer datos de una API, transformarlos utilizando Pandas u otra biblioteca, y cargarlos en un destino como BigQuery.
- Dockeriza tu aplicación Python: Cloud Run funciona desplegando contenedores Docker. Tu primera tarea es construir una imagen Docker para tu aplicación Python.
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "main.py"]
- Despliega en Cloud Run: Una vez que hayas contenedorizado tu aplicación, despliégala en Google Cloud Run con configuraciones mínimas.
gcloud run deploy my-python-elt-app \
--image gcr.io/<your-project-id>/<image-name> \
--platform managed \
--region <region>
Paso 2: Orquestación de Google Cloud Run y procesos Python externos con Orchestra
Orchestra es una herramienta versátil de orquestación de flujos de trabajo que te ayuda a gestionar dependencias, realizar un seguimiento de fallos y activar eventos en varios servicios. Para orquestar tareas de Cloud Run y procesos externos de Python utilizando Orchestra:
1.Define los pasos del flujo de trabajo: En Orchestra, define cada paso de tu proceso ELT como una tarea. Por ejemplo:
- Extraer datos de Cloud Storage o de una API.
- Activar el servicio Cloud Run para transformar los datos.
- Cargar los datos transformados en BigQuery.
2. Activa Cloud Run desde Orchestra: Utiliza la API REST de Orchestra o la programación de tareas para activar despliegues de Cloud Run. Esto puede hacerse mediante solicitudes HTTP, ya que Cloud Run expone puntos finales para cada contenedor.
3. Monitorización y gestión de fallos: Orchestra proporciona un mecanismo integrado para reintentar tareas fallidas y enviar notificaciones para la intervención manual si es necesario.
steps:
- name: extract_data
action: call_cloud_function
function_name: extract_from_storage
- name: run_transformation
action: http_call
url: https://<cloud-run-url>
method: POST
data: {"source": "gs://data-bucket/raw-data.csv"}
- name: load_to_bigquery
action: run_bigquery_query
query: "INSERT INTO dataset.table SELECT * FROM temp_table"
Paso 3: Integrar procesos Python externos
En algunos casos, es posible que desee descargar parte de la transformación a un proceso Python externo, que se ejecuta en un servidor o plataforma diferente. Puedes integrar fácilmente scripts Python remotos utilizando los activadores HTTP flexibles de Cloud Run.
- Invocar Procesos Remotos: Configura Orchestra para invocar procesos Python alojados externamente, como en Google Compute Engine o Kubernetes. Utilice peticiones HTTP o llamadas gRPC desde Orchestra para activar estos procesos, pasando los datos o parámetros necesarios.
- Comunicación segura: Garantiza una comunicación segura entre Orchestra, Cloud Run y los procesos Python externos utilizando OAuth, claves API o roles IAM de Google Cloud para autenticar cada solicitud.
Paso 4: Gestión del flujo de datos entre Cloud Run y los servicios de Google Cloud
Google Cloud Run funciona a la perfección con otros servicios de Google Cloud, lo que lo convierte en la opción ideal para canalizaciones ELT complejas.
- Almacenamiento en Cloud: Almacena datos sin procesar en Cloud Storage y configura tu servicio Cloud Run para que extraiga datos de un bucket específico. Puedes pasar la URL del bucket a tu servicio Cloud Run a través de una solicitud HTTP o un activador basado en eventos (como un mensaje Pub/Sub).
- BigQuery: Una vez que tu aplicación Python haya transformado los datos, carga los resultados procesados en BigQuery. Cloud Run puede interactuar directamente con la API de BigQuery para ejecutar comandos SQL o ejecutar trabajos.
- Pub/Sub: Utiliza Pub/Sub para activar su servicio Cloud Run. Por ejemplo, cuando llegan nuevos datos a Cloud Storage, puedes enviar un mensaje Pub/Sub que inicie todo el proceso ELT.
Paso 5: Automatizar y escalar con Orchestra
Una vez definidos e integrados tus flujos de trabajo, dirígete a Orchestra y crea una nueva integración. Sigue la documentación para autorizar Google a Orchestra aquí.
Cuando hayas terminado de conectarte, añade el nombre del trabajo de Cloud Run a una nueva canalización en Orchestra. Aquí, estamos ejecutando Cloud Run junto con algunas tareas de procesamiento de datos en Snowflake, Fivetran y AWS antes de ejecutar dbt-core en Orchestra.
Los resultados son magníficos:
Ventajas
- Integración con sólo una cuenta de servicio: la integración de Cloud Run en canalizaciones de datos de extremo a extremo sólo requiere una cuenta de servicio
- Seguimiento completo de registros: Orchestra realiza un seguimiento de los registros de los trabajos de Cloud Run y le proporciona un panel de control para la supervisión, por lo que no necesita crear uno
- Alertas centralizadas: al utilizar Orchestra como plano de control, siempre será proactivo en lugar de reactivo si los trabajos de Cloud Run fallan o tardan demasiado.
Conclusión
Google Cloud Run, en combinación con el SDK Orchestra, proporciona una solución escalable y rentable para orquestar flujos de trabajo ELT.
Los ingenieros de datos también pueden hacer uso de marcos ELT como dlt y pyairbyte dentro de Google Cloud Run.
Las capacidades sin servidor de Google Cloud Run también permiten a los equipos de datos ejecutar tareas complejas de procesamiento de datos con facilidad, mientras que Orchestra garantiza una automatización fluida del flujo de trabajo y la gestión de errores.
Tanto si trabajas con datos a gran escala en BigQuery como si activas tareas de transformación en varios servicios, esta configuración está diseñada para optimizar y agilizar tus esfuerzos de ingeniería de datos.
Más información sobre Orchestra
Orchestra es un plano de control unificado para operaciones de datos e IA.
Ayudamos a los equipos de datos a dedicar menos tiempo al mantenimiento de la infraestructura, a ser proactivos en lugar de reactivos y, en última instancia, a ganarse la confianza de la empresa en los datos y la IA. Lo hacemos consolidando la Orquestación con la monitorización, las pruebas de calidad de datos y el descubrimiento de datos. Con Orchestra no necesita observabilidad, linaje, catálogo, etc.
Échale un vistazo