Jesús Erro
Explorar conexiones
Dos bases de datos PostgreSQL y Azure SQL conectadas por un puente de migración con fases de sync, integración y verificación.

Convivir con PostgreSQL y Azure SQL durante una migración

Migrar entre Azure SQL y PostgreSQL —o mantener ambos sistemas durante una transición prolongada— rara vez es un volcado único. Suele ser convivencia temporal: dos motores, dos equipos de herramientas, una verdad de negocio que aún no ha elegido residencia definitiva. Este artículo describe estrategias para ese periodo sin afirmar que existe una receta universal.

Por qué convivir en lugar de cortar

Un big-bang cutover concentra riesgo en una ventana corta. Convivir permite:

  • validar equivalencia con tráfico real o sombra;
  • migrar dominios por fases;
  • mantener rollback mientras el destino madura.

El coste es complejidad operativa: sincronización, divergencia, gobernanza de esquemas duplicados.

Estrategias de sincronización

Estrategia Cuándo encaja
Batch Volúmenes acotados, ventanas nocturnas, tolerancia a lag.
Sincronización controlada Jobs idempotentes con checkpoints y reconciliación.
Transactional Outbox Eventos de negocio con atomicidad local; ver Transactional Outbox.
CDC Cambios continuos desde WAL/binlog; latencia baja.
Rehearsals de migración Ensayos completos sin cutover; ver Rehearsal Pattern.

Ninguna estrategia elimina la necesidad de reconciliación: comparar conteos, checksums o muestras estratificadas entre origen y destino.

CDC y Debezium como alternativa, no como afirmación

Change Data Capture puede replicar cambios en near-real-time desde PostgreSQL hacia downstream —incluido un destino Azure SQL o un pipeline intermedio. Debezium es una implementación conocida de CDC sobre Kafka Connect.

No afirmo que este proyecto utilice Debezium actualmente. Aparece aquí como referencia arquitectónica y posibilidad futura, no como componente desplegado en el archivo. Elegir CDC implica operar conectores, schemas de eventos, lag y compensaciones —decisión distinta a batch nocturno.

OLTP, no transformación analítica central

Este artículo habla de evolución e integración OLTP: pedidos, clientes, pagos en movimiento. No posiciona dbt ni capas analíticas como pieza central del puente. Las cargas analíticas pueden consumir réplicas o eventos derivados, pero la migración del sistema transaccional tiene otras restricciones —latencia, FK, transacciones cortas.

Puente con modernización legacy

La modernización incremental comparte el espíritu de este artículo: el origen sigue vivo mientras una capa limpia crece alrededor. Durante una migración entre ambos motores, esa capa puede ser API + mapping que abstrae el motor concreto mientras conviven ambos.

Rehearsals antes del cutover

Un rehearsal de migración ejecuta el plan completo —export, transform, load, smoke— contra un entorno desechable. Detecta incompatibilidades de tipos, collations, secuencias y stored procedures antes de tocar producción.

Confundir rehearsal con cutover es error clásico: el ensayo debe ser reversible y observable, con criterios de éxito definidos antes de empezar.

Límites

Convivencia prolongada puede cristalizarse en deuda si no hay fecha de fin. Dos fuentes de verdad exigen gobernanza explícita: ¿quién gana en conflicto? ¿cómo se depreca el origen?

Este artículo no documenta herramientas concretas desplegadas ni cronogramas reales. Ofrece vocabulario para decidir estrategias cuando PostgreSQL y Azure SQL deben coexistir con rigor, no con optimismo.