Skip to content

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-prod o datos depurados de solvento-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

  1. Ingesta: Todos los datos ingresan primero a solvento-data-prod en formato raw
  2. ETL: Los procesos ETL leen de solvento-data-prod y escriben a solvento-adv-analytics-prod
  3. Consumo Analítico: Las herramientas de BI consumen de solvento-adv-analytics-prod
  4. Análisis de Riesgo: solvento-risk-analytics-prod puede leer directamente de solvento-data-prod (raw) o de solvento-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

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

Ejemplo 1b: Webhooks de Syntage

Webhooks Syntage → Cloud Run → Pub/Sub (múltiples colas) → Dataflow Templates → BigQuery (data-prod)

Ejemplo 1c: Webhooks de Toku

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

Ejemplo 2: Replicación de LoanPro (Datastream)

LoanPro (MySQL) → Datastream CDC → flush cada 15 min → BigQuery (data-prod)

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

BigQuery (data-prod) → dbt/Dataform → BigQuery (adv-analytics-prod)

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 desde solvento-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:

  1. Lectura: Desde solvento-data-prod (datos raw)
  2. Transformación: Limpieza, validación, enriquecimiento
  3. dbt: Proyecto dbt-etls (repositorio: dbt-etls)
  4. Dataform: Transformaciones complementarias
  5. 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


Esta filosofía asegura la separación de responsabilidades y facilita el mantenimiento y escalabilidad de la arquitectura de datos.