MongoDB a Postgres
¿De Qué Se Trata Esto?
Mientras estaba en una entrevista para un puesto en una empresa, se me pidió que respondiera a la siguiente pregunta: ¿Puedes describir el problema más difícil que has resuelto? En resumen, el problema más difícil que resolví ocurrió mientras trabajaba en eBay, donde migré uno de los grandes proyectos internos de eBay de usar MongoDB a Postgres durante el año 2023. Sin embargo, esta pregunta realmente me hizo pensar en cómo resolví este difícil problema y me permitió reflexionar sobre mi trayectoria como desarrollador. Debido a esto, escribí una respuesta muy detallada y completa a esa pregunta, y quería compartir mi respuesta en mi sitio web.
¿Cuál Fue La Pregunta?
¿Puedes describir el problema más difícil que resolviste? Por favor, responde con menos de 4 párrafos y háznos saber:
- Lo que hiciste
- Lo que lo hizo difícil
- Lo que aprendiste de esta experiencia
- Cómo creciste como resultado
¿Cuál Fue Mi Respuesta?
1 - Lo que hiciste
Actualmente, en mi carrera, el problema más difícil que resolví ocurrió mientras trabajaba en mi puesto actual en eBay. Actualmente en eBay, donde estoy contratado a través de Hitachi Vantara, desarrollo y mantengo una herramienta interna llamada Sistema de Gestión de Almacenamiento o STMS. STMS es una herramienta utilizada por el equipo de Infraestructura de Servicio y Almacenamiento (SSI) de eBay para monitorear y gestionar dispositivos en los centros de datos de eBay. STMS permite a un ingeniero monitorear las métricas de numerosos arreglos, conmutadores, hosts, grupos de discos, clústeres y bases de datos. Así como manejar alertas para conmutadores y arreglos y permitir fácilmente a un ingeniero completar tareas avanzadas como asignaciones de hosts. STMS ingiere más de 1.5 millones de métricas por minuto, contabilizando más de docenas/cientos de arreglos, conmutadores, hosts, grupos de discos y clústeres en los centros de datos de eBay. Sirve como una herramienta crítica para el equipo de SSI para monitorear y gestionar la infraestructura de almacenamiento de eBay, que es vital para el servicio y modelo de negocio central de eBay. Sabiendo todo esto, el problema más difícil que tuve que resolver durante mi tiempo trabajando en eBay fue migrar el STMS de usar la base de datos MongoDB a usar la base de datos Postgres.
2 - Lo que lo hizo difícil
Lo que hizo que este problema fuera difícil fue que MongoDB y Postgres son bases de datos fundamentalmente diferentes. MongoDB es una base de datos basada en documentos (NoSQL), lo que significa que los datos se almacenan como JSON en una colección (como documentos en un archivador), y Postgres es una base de datos relacional (SQL), lo que significa que los datos se almacenan como filas en una tabla (como en una hoja de cálculo). Además, todo el backend de STMS fue construido para procesar y gestionar datos como JSON, utilizando paquetes exclusivamente compatibles con MongoDB para operaciones de base de datos. También, al realizar esta migración, no debía haber tiempo de inactividad y casi todas las funciones debían seguir funcionando debido a lo vital que es STMS como herramienta interna. Esta migración en su totalidad debía completarse en unos pocos meses, sin tiempo de inactividad, y sin un plan claro para su ejecución. También, no tenía demasiada experiencia con Postgres antes y, junto con todos mis compañeros de trabajo, no teníamos experiencia en migrar un gran código legado de una base de datos NoSQL a una base de datos SQL.
3 - Lo que aprendiste de esta experiencia
La migración del código de STMS de MongoDB a Postgres se completó con éxito sin tiempo de inactividad mientras se mantenían casi todas las funciones y funcionalidades. Esto requirió una extensa investigación, aprendizaje, pruebas y resolución de problemas. Reestructuré nuestras estructuras de datos para trabajar de manera más efectiva con bases de datos relacionales y desarrollé nuevos paquetes para reemplazar aquellos de los que dependíamos que no se integraban con Postgres. En general, la migración se realizó sin problemas y sin fallas reales, lo que superó mis expectativas. A lo largo de este proceso, aprendí mucho. Técnicamente, adquirí una mejor comprensión de Postgres, SQL, árboles de análisis, ORMs, Sequelize, Prisma, generadores de consultas, verificación de equivalencias, configuración de bases de datos primarias en espera y pruebas unitarias relacionadas con bases de datos. Fundamentalmente, aprendí a descomponer un problema complejo en partes más pequeñas e implementar soluciones efectivas para esas partes. Además, aprendí a ser un líder y llevar este proyecto a su conclusión a pesar de enfrentar muchas limitaciones, contratiempos e incógnitas.
4 - Cómo creciste como resultado
Comencé mi carrera en robótica durante mi licenciatura, pero me cambié hacia el desarrollo web cuando conseguí el trabajo en eBay, ingresando a un campo en el que no tenía experiencia previa. Esta transición sentó las bases para una carrera definida por el aprendizaje constante y la adaptabilidad. El desafío de migrar STMS de MongoDB a Postgres fue un salto significativo en mi carrera, contribuyendo inmensamente a mi crecimiento profesional. No se trataba solo de profundizar mi comprensión de las bases de datos o mejorar mis habilidades para resolver problemas. Este proyecto me empujó a un nuevo territorio, exigiendo una planificación meticulosa y un compromiso con la ausencia de tiempo de inactividad. Liderando la migración sin experiencia previa en transiciones de bases de datos a gran escala, aprendí el valor de la comunicación clara, el trabajo en equipo y descomponer desafíos complejos en partes manejables. Esta experiencia amplió mis habilidades técnicas y también aumentó mi confianza, orientándome hacia metas y proyectos más ambiciosos. Este hito en mi carrera no solo demostró mi crecimiento como desarrollador y líder, sino también como solucionador de problemas, mostrando que abrazar lo desconocido y tener éxito es clave para el desarrollo personal y profesional.
¿Cuál Es La Conclusión?
Mis respuestas me llevaron a la segunda etapa del proceso de entrevista en la empresa, permitiéndome tener una conversación agradable con uno de los desarrolladores del equipo, lo cual fue bastante agradable. Pero, principalmente, esta tarea me permitió reflexionar sobre el problema técnico más desafiante que resolví en mi carrera durante mi tiempo en eBay. Me permitió pensar en mi crecimiento como desarrollador/ingeniero, desarrollar nuevas habilidades y mejorar mi confianza en adaptarme y resolver problemas complejos.