Skip to content

Relaciones entre Componentes

Este diagrama detalla las relaciones y dependencias entre los componentes de la arquitectura de Solvento.

Diagrama de Relaciones

graph TB
    subgraph externos["Componentes Externos"]
        APIs[APIs Externas]
        Webhooks[Webhooks<br/>Syntage + Toku]
    end

    subgraph bases_datos["Bases de Datos y SaaS"]
        LoanPro[(LoanPro<br/>MySQL)]
        BackendSolvento[(Backend Solvento<br/>PostgreSQL)]
        HubSpotCRM[HubSpot<br/>CRM]
    end

    subgraph ingesta_tools["Herramientas de Replicación"]
        DatastreamSvc[Datastream<br/>ventanas de 15 min]
        AirbyteSvc[Airbyte<br/>Replicación]
    end

    subgraph messaging["Mensajería y Eventos"]
        PubSub[Pub/Sub]
    end

    subgraph storage["Almacenamiento"]
        Storage[Cloud Storage]
        BigQuery[BigQuery]
    end

    subgraph compute["Computación"]
        Functions[Cloud Functions]
        Run[Cloud Run]
        Dataflow[Dataflow]
    end

    %% Fuentes externas → Cloud Run
    APIs -.->|"HTTP Requests"| Run
    Webhooks -.->|"HTTP Requests"| Run

    %% Bases de datos → herramientas de replicación
    LoanPro -.->|"CDC Binlog / 15 min"| DatastreamSvc
    BackendSolvento -.->|"CDC / Incremental"| AirbyteSvc
    HubSpotCRM -.->|"API REST"| AirbyteSvc

    %% Herramientas de replicación → BigQuery
    DatastreamSvc -.->|"Flush cada 15 min"| BigQuery
    AirbyteSvc -.->|"Escribe datos raw"| BigQuery

    %% Pub/Sub
    PubSub -.->|"Activa"| Functions
    PubSub -.->|"Consume"| Dataflow
    PubSub -.->|"Activa"| Run

    %% Storage
    Storage -.->|"Activa"| Functions
    Storage -.->|"Lee archivos"| Dataflow

    %% Functions
    Functions -.->|"Escribe archivos"| Storage
    Functions -.->|"Escribe datos"| BigQuery

    %% Cloud Run
    Run -.->|"HTTP Request"| Run
    Run -.->|"Publica eventos"| PubSub
    Run -.->|"Escribe archivos"| Storage
    Run -.->|"Escribe datos"| BigQuery

    %% Dataflow
    Dataflow -.->|"Escribe datos"| BigQuery
    Dataflow -.->|"Escribe archivos"| Storage

    %% BigQuery
    BigQuery -.->|"Lee datos"| Dataflow
    BigQuery -.->|"Exporta datos"| Storage

Matriz de Relaciones

Componente Origen Componente Destino Tipo de Relación Descripción
APIs Externas Cloud Run Activa HTTP requests activan servicios Cloud Run
Webhooks (Syntage, Toku) Cloud Run Activa HTTP requests activan servicios Cloud Run
LoanPro (MySQL) Datastream Replica CDC vía binlog — flush a BigQuery cada 15 min
Backend Solvento (PostgreSQL) Airbyte Replica CDC / Incremental sync hacia BigQuery
HubSpot (CRM) Airbyte Replica API REST sync hacia BigQuery
Datastream BigQuery Escribe Datos raw de LoanPro (ventanas de 15 min)
Airbyte BigQuery Escribe Datos raw de Backend Solvento y HubSpot
Pub/Sub Cloud Functions Activa Mensajes activan funciones
Pub/Sub Dataflow Consume Pipelines consumen mensajes
Pub/Sub Cloud Run Activa Mensajes activan servicios
Cloud Storage Cloud Functions Activa Cambios activan funciones
Cloud Storage Dataflow Lee Pipelines leen archivos
Cloud Functions Cloud Storage Escribe Archivos generados
Cloud Functions BigQuery Escribe Datos procesados
Cloud Run Cloud Run Invoca Un Cloud Run puede invocar a otro
Cloud Run Pub/Sub Publica Único componente que publica a Pub/Sub
Cloud Run Cloud Storage Escribe Archivos generados
Cloud Run BigQuery Escribe Datos procesados
Dataflow BigQuery Escribe Datos transformados desde Pub/Sub
Dataflow Cloud Storage Escribe Archivos procesados
BigQuery Dataflow Lee Pipelines leen tablas
BigQuery Cloud Storage Exporta Exporta datos a archivos

Tipos de Relaciones

1. Activación (Trigger)

Un componente activa la ejecución de otro. - Ejemplo: Pub/Sub activa Cloud Functions cuando llega un mensaje

2. Publicación (Publish)

Un componente publica eventos o mensajes. - Ejemplo: Cloud Run publica eventos a Pub/Sub (único componente que publica a Pub/Sub)

3. Replicación (Replicate)

Una herramienta replica datos de una fuente hacia BigQuery. - Ejemplo: Datastream replica LoanPro (MySQL) con flush cada 15 minutos - Ejemplo: Airbyte replica Backend Solvento (PostgreSQL) y HubSpot (CRM)

4. Escritura (Write)

Un componente escribe datos a otro. - Ejemplo: Dataflow escribe datos a BigQuery

5. Lectura (Read)

Un componente lee datos de otro. - Ejemplo: Dataflow lee archivos de Cloud Storage

6. Consumo (Consume)

Un componente consume mensajes o eventos. - Ejemplo: Dataflow consume mensajes de Pub/Sub

Dependencias Críticas

Componentes de Entrada

  • Webhooks / APIs: Puntos de entrada via Cloud Run → Pub/Sub
  • Datastream: Replicación de LoanPro (MySQL) — ventanas de 15 min
  • Airbyte: Replicación de Backend Solvento (PostgreSQL) y HubSpot (CRM)

Componentes Centrales

  • Pub/Sub: Hub de eventos que conecta Cloud Run con Dataflow
  • BigQuery: Destino final para todos los datos (raw en data-prod)

Componentes de Procesamiento

  • Dataflow: Motor ETL streaming que consume Pub/Sub → escribe a data-prod
  • Cloud Run: Procesamiento de webhooks/APIs y servicios de consistencia

Flujos de Datos Principales

Flujo 1: Webhooks (Syntage / Toku)

Webhooks → Cloud Run → Pub/Sub → Dataflow → BigQuery (data-prod)

Flujo 2: Replicación LoanPro

LoanPro (MySQL) → Datastream → BigQuery (data-prod) [cada 15 min]

Flujo 3: Replicación Backend Solvento + HubSpot

Backend Solvento / HubSpot → Airbyte → BigQuery (data-prod)

Flujo 4: APIs Externas

APIs → Cloud Run → Pub/Sub → Dataflow → BigQuery (data-prod)

Consideraciones de Diseño

  • Especialización: Datastream para MySQL CDC, Airbyte para PostgreSQL y SaaS, Cloud Run para webhooks/APIs
  • Pub/Sub como único bus: Solo Cloud Run publica a Pub/Sub; Dataflow y Cloud Run subscriben
  • Desacoplamiento: Cada herramienta de ingesta escribe directamente a BigQuery sin pasar por Pub/Sub (excepto el flujo de webhooks/APIs)
  • Escalabilidad: Cada componente escala independientemente