Skip to content

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

Referencias