Guía paso a paso: Migrar datos entre servicios con alta concurrencia

Cuando tenemos miles de inserts por segundo, migrar datos entre diferentes servicios se convierte en un reto.

Es un gran reto porque es muy fácil que se nos queden datos por importar o que tengamos inconsistencias en la información.

Para ello, hemos hecho esta pequeña guía para que, en base a una pequeña checklist, puedas asegurarte de que migras todos los datos de forma correcta.

1️⃣ Crear la(s) nueva(s) cola de mensajería y empezar a puiblicarle sus eventos

Empezaremos a publicar todos los eventos que nos hagan falta para tener la proyección de nuestros datos. Por ejemplo, si es una proyección de usuario escucharemos:

  • user_registered
  • user_renamed
  • user_bio_changed

Depende como tengamos montado nuestro sistema, crearemos una o diversas colas para ello.

2️⃣ Crear una réplica de la Base de Datos fuera del balanceador

Con ello conseguimos tener una "foto" de los datos sin afectar al rendimiento del sistema en producción.

3️⃣ Establecer el Momento X™

Desconectamos la réplica en un instante preciso. Este timestamp será crucial, le llamamos el Momento X™. Todos los datos hasta ese momento vendrán de la réplica, todo lo posterior de la cola de eventos.

4️⃣ Importar el histórico de la réplica

Transferimos todos los datos que hay en réplica al nuevo sistema. Si lo tienes, podemos tomarnos nuestro tiempo para ello, ya que los cambios nuevos se están acumulando en la cola.

5️⃣ Consumir la cola de eventos

Una vez completada la importación histórica, podemos empezar a procesar los eventos acumulados, descartando aquellos anteriores al Momento X™ para evitar duplicados. Si se nos olvidó tomar el timestamp para saber ese momento, podemos ver la fecha del último registro que ha entrado en la réplica (tanto por created_at como por updated_at).

Esta técnica nos ha permitido migrar sistemas con millones de registros sin interrupciones de servicio y con total integridad de datos.

Si quieres aprender más sobre cómo hacer migraciones de datos en sistemas con alta concurrencia, te recomendamos el curso de Migración de Datos: De Legacy a Event-Driven Architecture donde exploramos cómo migrar datos entre diversos sistemas de forma segura y eficiente.

Paga según tus necesidades

lite (sólo mensual)

19 €
al mes
  • Acceso a un subconjunto de cursos para sentar las bases para un código mantenible, escalable y testable
  • Factura de empresa
Popular

standard

24,92 €
Ahorra 121
Pago anual de 299
al mes
  • Catálogo completo de cursos
  • Retos de diseño y arquitectura
  • Vídeos de soluciones destacadas de los retos
  • Recibir ofertas de empleo verificadas por Codely
  • Factura de empresa

premium

41,58 €
Ahorra 89
Pago anual de 499
al mes
  • Todo lo anterior
  • Más beneficios próximamente

No subiremos el precio mientras mantengas tu suscripción activa