Skip to content

Datastream · Loanpro (CDC del core de préstamos)

CDC continuo desde una read-replica RDS MySQL de Loanpro hacia solvento-data-prod.datastream_loanpro.* mediante GCP Datastream.

¿Llegaste hasta acá desde…?

Usa esta tabla para entrar en sentido inverso (lo que ves → de dónde sale):

Si ves… Eso sale de… La lógica está en…
Préstamos / pagos en analítica o Metabase solvento-data-prod.datastream_loanpro.* (RAW) dbt-analytics → models/staging/loanpro/ y models/marts/core/loanpro/
Un fact_loanpro_* / dim_loans marts models/marts/core/loanpro/ dbt-analytics → models/marts/core/loanpro/
Una tabla datastream_loanpro.5202851_P_* cruda solvento-data-prod.datastream_loanpro.* (RAW) Ingesta vía GCP Datastream (CDC, sin lógica de negocio); ver "Paso a paso"

Resumen

Campo Valor
Origen Read-replica RDS MySQL de Loanpro (44.208.254.51:3307, usuario solvento_ro)
Patrón GCP Datastream (CDC) — sin lógica de negocio en la ingesta
Destino solvento-data-prod.datastream_loanpro.*
Frecuencia CDC continuo (streaming)
Criticidad 🟡 Media — réplica del core de préstamos
Dueño Gero (Datastream) · transformaciones: Diego (dbt-analytics)
Repos (servicio gestionado — sin repo; configurado en consola de GCP Datastream)

⚠️ No tenemos acceso a la cuenta AWS donde vive el RDS de Loanpro: solo al usuario MySQL solvento_ro. Si el problema está del lado de la réplica (caída, credenciales, firewall del origen) hay que contactar al equipo de Loanpro.

Diagrama de linaje

graph LR
    SRC[["🗄️ RDS MySQL Loanpro<br/>read-replica · 44.208.254.51:3307<br/>(cuenta AWS de Loanpro)"]]

    subgraph ing["1 · Ingesta (CDC, sin lógica de negocio)"]
        DS["GCP Datastream<br/>stream Loanpro (CDC)"]
        RAW[("solvento-data-prod<br/>datastream_loanpro.* · RAW")]
    end

    subgraph logica["2 · Lógica de negocio · dbt-analytics"]
        STG["staging/loanpro/<br/>stg_loanpro__*"]
        MARTS["marts/core/loanpro/<br/>fact_* · dim_loans"]
    end

    CONS["📈 Metabase / analítica de préstamos"]

    SRC -->|"CDC continuo (solvento_ro)"| DS --> RAW
    RAW --> STG --> MARTS --> CONS

    classDef src fill:#fde68a,stroke:#b45309,color:#000;
    classDef store fill:#bfdbfe,stroke:#1e40af,color:#000;
    classDef logic fill:#dcfce7,stroke:#15803d,color:#000;
    class SRC src;
    class RAW store;
    class STG,MARTS logic;

Paso a paso

1 · Ingesta (mueve datos, no aplica lógica de negocio)

  1. Loanpro mantiene una read-replica RDS MySQL (44.208.254.51:3307). Vive en una cuenta AWS de Loanpro a la que no tenemos acceso; solo se nos dio el usuario MySQL de solo lectura solvento_ro.
  2. GCP Datastream corre un stream de CDC continuo configurado en la consola de GCP Datastream (no hay repo de código). Lee el binlog de la réplica y propaga inserts/updates/deletes.
  3. Datastream escribe los datos crudos en solvento-data-prod.datastream_loanpro.*. Los nombres de tabla conservan el prefijo del origen (5202851_P_loan_entity, 5202851_P_payment_entity, etc.). La ingesta solo replica; no aplica reglas de negocio.

Nota: esta fuente migró de Matia a GCP Datastream el 2026-02-02.

2 · Lógica de negocio (dbt — aquí están las reglas) → repo dbt-analytics

  1. models/staging/loanpro/stg_loanpro__* — renombra/tipa las tablas crudas 5202851_P_* a nombres legibles (stg_loanpro__loans, stg_loanpro__payments, stg_loanpro__charges, stg_loanpro__customers, …).
  2. models/marts/core/loanpro/ — construye los hechos y dimensiones (fact_loanpro_loans, fact_loanpro_payments, fact_loanpro_charges, dim_loans, …) que consume la analítica.

3 · Consumo

  • Metabase / analítica de préstamos lee de los modelos staging/loanpro y marts/core/loanpro.

Tablas que alimenta

Tabla Contenido Job que la carga
datastream_loanpro.5202851_P_loan_entity Préstamos (core) GCP Datastream (CDC)
datastream_loanpro.5202851_P_payment_entity Pagos GCP Datastream (CDC)
datastream_loanpro.5202851_P_charge_entity Cargos GCP Datastream (CDC)
datastream_loanpro.5202851_P_customer_entity Clientes GCP Datastream (CDC)
datastream_loanpro.5202851_P_portfolio_entity Portafolio GCP Datastream (CDC)
datastream_loanpro.5202851_P_line_of_credit_entity Líneas de crédito GCP Datastream (CDC)

Consumo aguas abajo

  • dbt-analytics (models/staging/loanpro, models/marts/core/loanpro) → Metabase / analítica de préstamos.

Si falla 🛠️

Impacto: 🟡 medio. Réplica del core de préstamos; un stream detenido desactualiza la analítica de loans/pagos.

Síntoma Dónde mirar Acción
datastream_loanpro.* no avanza Consola de GCP Datastream — estado del stream + Cloud Logging Revisar el error; si es transitorio, reanudar el stream
Error de conexión al origen Conectividad GCP → 44.208.254.51:3307 (usuario solvento_ro) Verificar conectividad/credenciales de nuestro lado; reanudar el stream
Falla del lado de la réplica (caída, credenciales del origen, firewall, binlog) Stream marca el origen como inalcanzable No tenemos acceso a la cuenta AWS → contactar al equipo de Loanpro
Números "raros" en analítica de préstamos Lógica en dbt-analytics (staging/loanpro, marts/core/loanpro) Revisar la transformación en el repo, no la ingesta

Escalación: Datastream / ingesta → Gero · réplica del origen (AWS de Loanpro) → equipo de Loanpro · lógica SQL / Metabase → Diego · resto → Martin.

Enlaces

  • 📊 Estado en vivo: dashboard "Data Processes" (Cloud Monitoring)
  • ⚙️ Configuración de la ingesta: consola de GCP Datastream → stream Loanpro (servicio gestionado, sin repo)
  • 🧮 Lógica: dbt-analytics — modelos en models/staging/loanpro/ y models/marts/core/loanpro/

Última actualización: 2026-06-21 · Si cambia el flujo o un modelo dbt, actualizar esta ficha en el mismo MR.