Migrando más de 250 bases de datos de SQL Server a Postgres

24 ene 2024

Escrito por: Cristian Córdova

El último Q del 2023, nuestro equipo de DevOps junto con el equipo de ingeniería y producto de nuestro cliente, Zinkee, nos embarcamos en un reto bastante grande. Migrar más de 250 bases de datos de SQL Server en AWS y GCP a Postgres en AWS RDS.

Los problemas

Tras un análisis conjunto, llegamos a la conclusión de que la arquitectura que había en ese momento tenía varios problemas a causa de SQL Server:

  • Pago de licencias por cada instancia de SQL Server para poder aprovechar los recursos del servidor.

  • Límite de 100 bases de datos por cada instancia.

  • Alta complejidad para conectar con herramientas de análisis de terceros o no propietarios de Microsoft.

  • Limitación para utilizar ciertos tipos de datos por nula o poca compatibilidad del motor.

  • Coste muy alto en el Cloud.

Dados todos estos problemas, se decidió que la mejor solución era proceder con una migración a Postgres. No solo resolvía todos estos problemas sino que se tenía la posibilidad de mejorar el rendimiento actual de la plataforma.

Plan de ejecución

Organizar una tarea de este calibre es muy complicado, ya que solo es posible si todos los miembros de los equipos que participan en este reto, están comprometidos y en constante comunicación.

Antes de realizar la migración hubo que hacer un refactor fuerte de varios componentes a nivel de desarrollo, ya que sin esto no era posible realizar finalmente la migración.

Tras esto se debía crear una serie de automatizaciones que permitieran crear tareas automatizadas capaces de obtener las bases de datos de SQL Server, generar las tareas de migración y posteriormente cargar la base de datos adaptada a su sitio correspondiente en Postgres.

Nuestro equipo de DevOps generó todos los scripts necesarios para realizar estas tareas. Apoyándonos en el servicio de DMS de AWS, éramos capaces de generar cientos de tareas de migración de forma simultánea.

Cada una de estas tareas, obtenía una base de datos de un origen personalizado en SQL Server, lo cargaba en el servicio de DMS con la toda la configuración necesaria y preparaba el destino. Creando la base de datos y las extensiones necesarias para que al final, la tarea de DMS pueda restaurar las bases de datos ya migradas con éxito.

Proceso de Migración

Con todo ya listo se decidió hacer varias migraciones parciales para poder detectar y corregir errores rápidamente y además no afectar al servicio.

Para poder llevar a cabo esto se tuvo que migrar varias bases de datos que había alojadas en GCP a AWS, adaptar partes de la infraestructura y monitorizar constantemente el estado de la misma para poder actuar antes de que surja cualquier problema.

Tras unas semanas intensas de trabajo en conjunto con el equipo de ingeniería de Zinkee, finalmente, llevamos a cabo esa migración sin ningún problema grave. La migración había concluido con éxito.

Momento de medir resultados

Un tiempo prudente después de la migración y con datos suficientes para valorar el estado de la plataforma, hemos obtenido datos inmejorables que reflejan el esfuerzo y trabajo realizado por parte de todos.

Mejor manejo de recursos (CPU) de los servidores de bases de datos:

Output image


Mejora en el tiempo de respuesta de las aplicaciones de Zinkee:

Output image


Reducción significativa de costes en AWS:

Conclusiones

La migración ha sido todo un éxito. Ayudar a nuestros clientes a resolver estos retos tan grandes son en gran medida lo que nos define como DevOps Partner. Un equipo dedicado a tu infraestructura, que trabaja codo con codo y día a día junto con los equipos de tu empresa.

💙 Kudos a todo el equipo de Zinkee por el trabajazo y el reto enorme que hemos resuelto juntos.

¿Empezamos?

Consigue ya el equipo de DevOps que necesitas.

¿Empezamos?

Consigue ya el equipo de DevOps que necesitas.

¿Empezamos?

Consigue ya el equipo de DevOps que necesitas.