Proyectos GCP - Filosofía y Arquitectura
Documentación de los proyectos de Google Cloud Platform utilizados en la arquitectura de data engineering de Solvento y su filosofía de organización.
Proyectos GCP
La arquitectura de Solvento utiliza tres proyectos principales de GCP, cada uno con un propósito específico:
solvento-data-prod
Proyecto de Datos Raw
- Propósito: Almacenamiento de datos sin procesar (raw data)
- Filosofía: Todo lo que ingresa al sistema se almacena primero aquí en su formato original
- Contenido: Datos raw, sin transformaciones ni depuración
- Uso: Fuente de datos para procesos ETL
solvento-adv-analytics-prod
Proyecto de Datos Analíticos Avanzados
- Propósito: Almacenamiento de datos depurados y transformados
- Filosofía: Datos procesados mediante ETL desde
solvento-data-prod - Contenido: Datos depurados, transformados y listos para consumo analítico
- Uso: Consumo por Metabase Cloud para analíticas internas y dashboards embebidos
solvento-risk-analytics-prod
Proyecto de Datos de Riesgo
- Propósito: Almacenamiento y manejo de datos relevantes para análisis de riesgo
- Filosofía: Puede leer datos raw de
solvento-data-prodo datos depurados desolvento-adv-analytics-prod - Contenido: Datos específicos para análisis de riesgo, data products de riesgo
- Uso: Análisis de riesgo, modelos de riesgo, reportes de riesgo
- Procesamiento: Proyecto dbt dedicado (
dbt-analytics) transforma datos hacia este proyecto
Filosofía de Organización
Principio: Raw First
Datos Externos → solvento-data-prod (RAW) → ETL → solvento-adv-analytics-prod (DEPURADO)
│ │
│ │
└───────────────┬──────────────────────────────┘
│
↓
solvento-risk-analytics-prod (RIESGO)
(puede leer de ambos: raw o depurado)
Flujo de Datos
- Ingesta: Todos los datos ingresan primero a
solvento-data-proden formato raw - ETL: Los procesos ETL leen de
solvento-data-prody escriben asolvento-adv-analytics-prod - Consumo Analítico: Las herramientas de BI consumen de
solvento-adv-analytics-prod - Análisis de Riesgo:
solvento-risk-analytics-prodpuede leer directamente desolvento-data-prod(raw) o desolvento-adv-analytics-prod(depurado) según necesidad
Diagrama de Relaciones
graph TB
subgraph fuentes["Fuentes Externas"]
APIs[APIs]
S3[S3 Bucket]
SyntageWebhooks[Webhooks de Syntage]
TokuWebhooks[Webhooks de 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["Capa de Ingesta"]
CloudRunAPI[Cloud Run<br/>API Handler]
CloudRunSyntage[Cloud Run<br/>Syntage Handler]
CloudRunToku[Cloud Run<br/>Toku Handler]
Glue[AWS Glue]
DatastreamSvc[Datastream<br/>CDC Tiempo Real]
AirbyteSvc[Airbyte<br/>ELT Platform]
end
subgraph raw["solvento-data-prod<br/>RAW DATA"]
RawPubSub[Pub/Sub<br/>Topics]
RawBQ[BigQuery Raw]
RawStorage[Cloud Storage Raw]
end
subgraph procesamiento["Procesamiento"]
Dataflow[Dataflow<br/>Templates]
CloudRunFinal[Cloud Run<br/>Final Processor]
end
subgraph etl["Transformaciones a DEPURADO"]
DBT[dbt]
Dataform[Dataform]
end
subgraph processed["solvento-adv-analytics-prod<br/>DEPURADO"]
ProcessedBQ[BigQuery Processed]
end
subgraph risk["solvento-risk-analytics-prod<br/>RIESGO"]
RiskBQ[BigQuery Risk]
end
subgraph consumo["Consumo"]
Metabase[Metabase Cloud<br/>solvento.metabaseapp.com]
end
%% Flujo APIs
APIs --> CloudRunAPI
CloudRunAPI --> RawPubSub
RawPubSub --> Dataflow
RawPubSub --> CloudRunFinal
Dataflow --> RawBQ
CloudRunFinal --> RawBQ
%% Flujo S3
S3 --> Glue
Glue --> RawBQ
%% Flujo Datastream - LoanPro (ventanas 15 min)
LoanPro -->|"CDC Binlog<br/>flush 15 min"| DatastreamSvc
DatastreamSvc -->|"Replica datos raw"| RawBQ
%% Flujo Airbyte - Backend Solvento y HubSpot
BackendSolvento -->|"Replicación CDC"| AirbyteSvc
HubSpotCRM -->|"Replicación API"| AirbyteSvc
AirbyteSvc -->|"Escribe datos raw"| RawBQ
%% Flujo Webhooks Syntage
SyntageWebhooks --> CloudRunSyntage
CloudRunSyntage -->|"Alimenta colas"| RawPubSub
%% Flujo Webhooks Toku
TokuWebhooks --> CloudRunToku
CloudRunToku -->|"Alimenta colas"| RawPubSub
%% ETL a processed (SOLO dbt y Dataform)
RawBQ --> DBT
RawBQ --> Dataform
DBT --> ProcessedBQ
Dataform --> ProcessedBQ
%% Risk puede leer de ambos
RawBQ -.->|"Lee raw"| RiskBQ
ProcessedBQ -.->|"Lee depurado"| RiskBQ
%% Consumo
ProcessedBQ --> Metabase
Reglas y Convenciones
solvento-data-prod
✓ Permitido: - Escritura de datos raw desde cualquier fuente - Lectura para procesos ETL - Almacenamiento temporal de datos sin procesar
✗ No Permitido: - Datos transformados o depurados - Datos procesados por ETL - Datos listos para consumo directo
solvento-adv-analytics-prod
✓ Permitido: - Escritura desde procesos ETL - Datos depurados y transformados - Datos listos para consumo analítico
✗ No Permitido: - Datos raw sin procesar - Escritura directa desde fuentes externas (sin pasar por data-prod)
solvento-risk-analytics-prod
✓ Permitido:
- Lectura de solvento-data-prod (datos raw)
- Lectura de solvento-adv-analytics-prod (datos depurados)
- Escritura de datos procesados específicos de riesgo
- Transformaciones específicas para análisis de riesgo mediante dbt
- Data products especializados (Solvento Score, DSCR, Customer Classifier, etc.)
Proyecto dbt: El proyecto dbt-analytics es el motor principal de transformación para este proyecto.
Ejemplos de Uso
Ejemplo 1: Ingesta de APIs
Ejemplo 1b: Webhooks de Syntage
Webhooks Syntage → Cloud Run → Pub/Sub (múltiples colas) → Dataflow Templates → BigQuery (data-prod)
Ejemplo 1c: Webhooks de Toku
Ejemplo 2: Replicación de LoanPro (Datastream)
Ejemplo 3: Replicación de Backend Solvento y HubSpot (Airbyte)
Backend Solvento (PostgreSQL) → Airbyte CDC → BigQuery (data-prod)
HubSpot (CRM) → Airbyte API → BigQuery (data-prod)
Ejemplo 4: Transformaciones a Adv-Analytics
Ejemplo 5: Análisis de Riesgo
BigQuery (data-prod) → dbt Risk Analytics → BigQuery (risk-analytics-prod)
BigQuery (adv-analytics-prod) → dbt Risk Analytics → BigQuery (risk-analytics-prod)
Servicios por Proyecto
solvento-data-prod
- BigQuery: Datasets y tablas raw
- Cloud Storage: Buckets para datos raw
- Pub/Sub: Topics para eventos raw
- Cloud Run: Servicios de ingesta (webhooks, APIs)
- Dataflow: Pipelines que consumen Pub/Sub y escriben hacia raw
- Datastream: Replicación de LoanPro (MySQL) — ventanas de 15 min
- Airbyte: Replicación de Backend Solvento (PostgreSQL) y HubSpot (CRM)
solvento-adv-analytics-prod
- BigQuery: Datasets y tablas procesadas
- dbt ETLs: Proyecto dbt (
dbt-etls) que transforma datos desdesolvento-data-prod - Repositorio:
dbt-etls - Schemas:
consistency_jobs,terminal, etc. - Dataform: Transformaciones complementarias
- Cloud Run: Procesos de consistencia
Importante: SOLO dbt y Dataform escriben a este proyecto. Dataflow NO escribe aquí.
solvento-risk-analytics-prod
- BigQuery: Datasets y tablas de riesgo
- Schema
warehouse: Capas staging, intermediate, marts - Schema
data_products: Productos especializados de riesgo - dbt Analytics: Proyecto dbt que transforma datos hacia este proyecto
- Análisis: Modelos y cálculos de riesgo
- Reportes: Dashboards y reportes de riesgo
Herramientas de Ingesta por Fuente
| Fuente | Herramienta | Método | Frecuencia | Destino |
|---|---|---|---|---|
| LoanPro (MySQL) | Datastream | CDC vía binlog | Ventanas de 15 min | solvento-data-prod |
| Backend Solvento (PostgreSQL) | Airbyte | Replicación CDC | Configurable | solvento-data-prod |
| HubSpot (CRM) | Airbyte | Replicación API | Configurable | solvento-data-prod |
| Webhooks Syntage | Cloud Run → Pub/Sub → Dataflow | Streaming | Tiempo real | solvento-data-prod |
| Webhooks Toku | Cloud Run → Pub/Sub → Dataflow | Streaming | Tiempo real | solvento-data-prod |
| APIs Externas | Cloud Run → Pub/Sub → Dataflow | Streaming | Tiempo real | solvento-data-prod |
| S3 | AWS Glue | Batch ETL | Programado | solvento-data-prod |
Migración y ETL
Patrón de ETL a Adv-Analytics
Los procesos ETL hacia solvento-adv-analytics-prod SOLO utilizan dbt y Dataform:
- Lectura: Desde
solvento-data-prod(datos raw) - Transformación: Limpieza, validación, enriquecimiento
- dbt: Proyecto
dbt-etls(repositorio:dbt-etls) - Dataform: Transformaciones complementarias
- Escritura: A
solvento-adv-analytics-prod(datos depurados)
Importante:
- Dataflow NO escribe a solvento-adv-analytics-prod
- Dataflow solo procesa datos hacia solvento-data-prod (raw)
- Solo dbt (dbt-etls) y Dataform transforman hacia solvento-adv-analytics-prod
Excepciones
- Risk Analytics: Puede leer directamente de ambos proyectos según necesidad
Referencias
- BigQuery Documentation
- Datastream Documentation
- Airbyte Documentation
- Dataflow Documentation
- dbt Documentation
Esta filosofía asegura la separación de responsabilidades y facilita el mantenimiento y escalabilidad de la arquitectura de datos.