Google Cloud VII

Las aplicaciones modernas ya no ejecutan todo de forma continua: reaccionan. Cuando ocurre algo —una imagen subida, un mensaje recibido, un evento generado— se dispara una acción específica. Este enfoque, llamado event-driven (orientado a eventos), permite construir sistemas más eficientes, escalables y desacoplados.

Aquí es donde entra Cloud Run Functions: una solución serverless que ejecuta pequeñas piezas de código solo cuando ocurre algo relevante. Sin servidores, sin infraestructura, sin ejecución constante—solo lógica que se activa exactamente en el momento necesario.


Modelo conceptual

Cloud Run Functions es un servicio serverless (sin gestión de servidores) que permite ejecutar funciones de propósito único en respuesta a eventos o peticiones HTTP, eliminando la necesidad de aprovisionar infraestructura o mantener entornos de ejecución.

El modelo se fundamenta en tres principios:

  • Event-driven: la ejecución se dispara por eventos externos.
  • Asíncrono: el productor del evento no espera respuesta inmediata.
  • Stateless: cada ejecución es independiente, sin estado persistente.

Arquitectura y flujo de ejecución

El flujo operativo sigue un patrón simple pero altamente escalable:

  1. Se genera un evento (ej. subida de archivo).
  2. Un trigger (activador) detecta el evento.
  3. Se invoca la función.
  4. La función ejecuta lógica específica.
  5. Se interactúa con otros servicios (almacenamiento, bases de datos, APIs).

Ejemplo típico:

  • Usuario sube imagen → Cloud Storage
  • Evento → activa función
  • Función:
    • convierte formato
    • genera thumbnails
    • almacena resultados

Triggers y modos de invocación

1. Event-driven (asíncrono)

  • Cloud Storage: eventos sobre objetos (upload, delete)
  • Pub/Sub (Publish/Subscribe): sistema de mensajería desacoplado basado en eventos

Este modelo permite construir pipelines reactivos sin acoplamiento directo entre componentes.

2. HTTP (síncrono)

  • HTTP invocation: ejecución mediante petición HTTP
  • Uso: APIs ligeras o endpoints funcionales

Características técnicas clave

  • Escalado automático: ajusta instancias según demanda
  • Ejecución bajo demanda: solo se ejecuta cuando hay eventos
  • Facturación granular:
    • basada en tiempo de ejecución
    • precisión ≈ 100 ms
  • Multilenguaje:
    • Node.js, Python, Go, Java, .NET, Ruby, PHP
  • Integración nativa GCP

Relación con el ecosistema GCP

Cloud Run Functions actúa como capa de ejecución dentro de una arquitectura desacoplada:

  • Cloud Storage: fuente de eventos (datos)
  • Pub/Sub: transporte de eventos
  • Cloud Run Functions: procesamiento
  • BigQuery / Cloud SQL: persistencia

Esto habilita pipelines tipo:

Evento → Mensajería → Procesamiento → Almacenamiento

Caso de uso: ETL ligero

ETL (Extract, Transform, Load): proceso de extracción, transformación y carga de datos.

Cloud Run Functions permite implementar ETL ligero, caracterizado por:

  • bajo volumen de datos
  • transformación simple
  • ejecución casi en tiempo real

Ejemplo:

  • archivo subido → evento
  • función:
    • parsea datos
    • valida
    • inserta en BigQuery

Ventajas operativas

  • Eliminación total de gestión de infraestructura
  • Coste optimizado (pago por ejecución real)
  • Alta escalabilidad sin configuración
  • Arquitectura desacoplada (microservicios/eventos)
  • Integración directa con servicios cloud

Limitaciones

  • Stateless obligatorio → requiere almacenamiento externo
  • Tiempo de ejecución limitado
  • No adecuado para:
    • procesos largos
    • cargas continuas persistentes
    • aplicaciones monolíticas complejas

Comparativa técnica

  • Cloud Run Functions vs Cloud Run:
    • Functions: lógica puntual (granular)
    • Run: servicios completos en contenedores
  • Cloud Run Functions vs App Engine:
    • Functions: ejecución efímera
    • App Engine: aplicaciones persistentes

Conclusión

Cloud Run Functions encapsula el paradigma:

Serverless + Event-driven + Funciones granulares

Es una solución óptima para construir sistemas reactivos, altamente escalables y desacoplados, donde cada unidad de lógica se ejecuta exclusivamente cuando es necesaria, maximizando eficiencia operativa y económica.

Apoya este blog

Si quieres apoyar el blog con una aportación.

Comentarios

Deja una respuesta