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)
Flujo 2: Replicación LoanPro
Flujo 3: Replicación Backend Solvento + HubSpot
Flujo 4: APIs Externas
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