Cloud Functions
Google Cloud Functions son funciones serverless que se ejecutan en respuesta a eventos en la arquitectura de data engineering de Solvento.
Descripción
Cloud Functions permite ejecutar código sin gestionar servidores. Se activan automáticamente en respuesta a eventos como mensajes de Pub/Sub, cambios en Cloud Storage, o requests HTTP.
Flujo de Datos
graph TB
subgraph triggers["Triggers"]
PubSub[Pub/Sub]
Storage[Cloud Storage]
HTTP[HTTP Requests]
Webhooks[Webhooks]
end
subgraph functions["Cloud Functions"]
Function1[Function 1]
Function2[Function 2]
Function3[Function 3]
end
subgraph destinos["Destinos"]
BigQuery[BigQuery]
PubSubOut[Pub/Sub]
StorageOut[Cloud Storage]
end
PubSub --> Function1
Storage --> Function2
HTTP --> Function3
Webhooks --> Function3
Function1 --> BigQuery
Function1 --> PubSubOut
Function2 --> StorageOut
Function3 --> PubSubOut
Recursos
Functions
Las funciones serverless que procesan eventos. Documenta aquí las funciones principales:
- Por agregar: Lista de funciones con descripción, trigger y propósito
Configuraciones Relevantes
Triggers
- Pub/Sub: Activación por mensajes de topics
- Cloud Storage: Activación por cambios en buckets (create, update, delete)
- HTTP: Activación por requests HTTP
- Cloud Scheduler: Activación programada
Runtime
- Lenguajes soportados: Python, Node.js, Go, Java, etc.
Memory y Timeout
- Configuración de memoria y timeout por función
Environment Variables
- Variables de entorno y secretos utilizados
VPC Connector
- Configuración de conectividad a VPC si aplica
Relaciones con Otros Componentes
Triggers (Activadores)
- Pub/Sub: Mensajes de topics activan funciones
- Cloud Storage: Cambios en archivos activan funciones
- Webhooks: Requests HTTP activan funciones
- Cloud Scheduler: Programación periódica activa funciones
Destinos (Outputs)
- BigQuery: Funciones escriben datos procesados
- Pub/Sub: Funciones publican eventos
- Cloud Storage: Funciones escriben archivos
- APIs: Funciones exponen endpoints HTTP
Patrones de Uso
Event Processing
Procesamiento de eventos en tiempo real desde Pub/Sub o Cloud Storage.
Data Transformation
Transformación de datos antes de almacenarlos en BigQuery.
API Endpoints
Exposición de APIs ligeras para consumo de datos.
Webhook Handlers
Manejo de webhooks de sistemas externos.
Ejemplos de Funciones
Función Triggered por Pub/Sub
import base64
import json
from google.cloud import bigquery
def pubsub_to_bigquery(event, context):
"""Procesa mensajes de Pub/Sub y los escribe a BigQuery"""
pubsub_message = base64.b64decode(event['data']).decode('utf-8')
data = json.loads(pubsub_message)
client = bigquery.Client(project='solvento-adv-analytics-prod')
table = client.get_table('dataset.table')
errors = client.insert_rows_json(table, [data])
if errors:
print(f"Errors: {errors}")
Función Triggered por Cloud Storage
from google.cloud import pubsub_v1
import json
def storage_to_pubsub(event, context):
"""Notifica a Pub/Sub cuando se crea un archivo en Storage"""
file_name = event['name']
bucket_name = event['bucket']
publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path('solvento-data-prod', 'storage-events')
message = {
'bucket': bucket_name,
'file': file_name,
'event_type': event['eventType']
}
publisher.publish(topic_path, json.dumps(message).encode('utf-8'))
Función HTTP
from flask import jsonify
def http_function(request):
"""Función HTTP para consultar datos"""
# Lógica de la función
return jsonify({'status': 'success', 'data': '...'})
Monitoreo y Métricas
- Invocations: Número de invocaciones
- Execution Time: Tiempo de ejecución
- Errors: Errores y fallos
- Costos: Costos por invocación y tiempo de ejecución
- Concurrency: Número de ejecuciones concurrentes