MongoDB vers Postgres
De quoi s’agit-il ?
Lors d’un entretien pour un poste dans une entreprise, on m’a demandé de répondre à la question suivante : Pouvez-vous décrire le problème le plus difficile que vous avez résolu ? En résumé, le problème le plus difficile que j’ai résolu s’est produit pendant que je travaillais chez eBay, où j’ai migré l’un des grands projets internes d’eBay de l’utilisation de MongoDB vers Postgres au cours de l’année 2023. Cependant, cette question m’a vraiment fait réfléchir à la manière dont j’ai résolu ce problème difficile et m’a permis de réfléchir à mon parcours de développeur. En raison de cela, j’ai rédigé une réponse très détaillée et approfondie à cette question, et je voulais partager ma réponse sur mon site web.
Quelle était la question ?
Pouvez-vous décrire le problème le plus difficile que vous avez résolu ? Veuillez répondre en moins de 4 paragraphes et nous faire savoir :
- Ce que vous avez fait
- Ce qui l’a rendu difficile
- Ce que vous avez appris de cette expérience
- Comment vous avez évolué en conséquence
Quelle était ma réponse ?
1 - Ce que vous avez fait
Actuellement, dans ma carrière, le problème le plus difficile que j’ai résolu s’est produit pendant mon poste actuel chez eBay. Chez eBay, où je suis sous contrat via Hitachi Vantara, je développe et maintiens un outil interne appelé Storage Management System ou STMS. STMS est un outil utilisé par l’équipe Service & Storage Infrastructure (SSI) d’eBay pour surveiller et gérer les appareils à travers les centres de données d’eBay. STMS permet à un ingénieur de surveiller les métriques de nombreux tableaux, commutateurs, hôtes, groupes de disques, clusters et bases de données. Il gère également les alertes pour les commutateurs et les tableaux et permet facilement à un ingénieur d’effectuer des tâches avancées comme les allocations d’hôtes. STMS ingère plus de 1,5 million de métriques par minute, couvrant des dizaines voire des centaines de tableaux, commutateurs, hôtes, groupes de disques et clusters à travers les centres de données d’eBay. Il constitue un outil essentiel pour l’équipe SSI afin de surveiller et gérer l’infrastructure de stockage d’eBay, qui est vitale pour le service principal et le modèle commercial d’eBay. En sachant tout cela, le problème le plus difficile que j’ai dû résoudre pendant mon temps chez eBay a été la migration du STMS de l’utilisation de la base de données MongoDB vers la base de données Postgres.
2 - Ce qui la rendait difficile
Ce qui rendait ce problème difficile était que MongoDB et Postgres sont fondamentalement des bases de données différentes. MongoDB est une base de données orientée documents (NoSQL), ce qui signifie que les données sont stockées sous forme de JSON dans une collection (comme des documents dans un classeur), tandis que Postgres est une base de données relationnelle (SQL), ce qui signifie que les données sont stockées sous forme de lignes dans une table (comme dans une feuille de calcul). De plus, l’ensemble du backend de STMS était construit pour traiter et gérer les données sous forme de JSON, en utilisant des packages exclusivement compatibles avec MongoDB pour les opérations de base de données. En outre, lors de cette migration, il ne devait y avoir aucun temps d’arrêt et presque toutes les fonctionnalités devaient continuer à fonctionner en raison de l’importance de STMS en tant qu’outil interne. Cette migration devait être réalisée en quelques mois, sans temps d’arrêt, et sans plan clair pour son exécution. Je n’avais pas beaucoup d’expérience avec Postgres au préalable et, avec tous mes collègues, nous n’avions aucune expérience de migration d’une grande base de code legacy d’une base NoSQL vers une base SQL.
3 - Ce que vous avez appris de cette expérience
La migration du code STMS de MongoDB vers Postgres a été réalisée avec succès sans temps d’arrêt tout en conservant presque toutes les fonctionnalités et le fonctionnement. Cela a nécessité des recherches approfondies, de l’apprentissage, des tests et du dépannage. J’ai restructuré nos structures de données pour travailler plus efficacement avec les bases de données relationnelles et développé de nouveaux packages pour remplacer ceux dont nous dépendions et qui ne s’intégraient pas à Postgres. Dans l’ensemble, la migration s’est déroulée sans accroc et sans défauts réels, dépassant mes attentes. Tout au long de ce processus, j’ai beaucoup appris. Sur le plan technique, j’ai acquis une meilleure compréhension de Postgres, SQL, des arbres d’analyse, des ORM, Sequelize, Prisma, des générateurs de requêtes, de la vérification d’équivalence, de la configuration de bases de données primaire‑secondaire, et des tests unitaires liés aux bases de données. Fondamentalement, j’ai appris à décomposer plus efficacement un problème complexe en parties plus petites et à mettre en œuvre des solutions efficaces pour ces parties. De plus, j’ai appris à être un leader et à mener ce projet à son terme malgré de nombreuses limitations, revers et inconnues.
4 - Comment vous avez évolué en conséquence
J’ai commencé ma carrière en robotique pendant mes études de premier cycle, mais je me suis orienté vers le développement web lorsque j’ai obtenu le poste chez eBay, entrant ainsi dans un domaine où je n’avais aucune expérience préalable. Cette transition a posé les bases d’une carrière définie par l’apprentissage constant et l’adaptabilité. Le défi de migrer STMS de MongoDB vers Postgres a été un saut significatif dans ma carrière, contribuant immensément à ma croissance professionnelle. Il ne s’agissait pas seulement d’approfondir ma compréhension des bases de données ou d’améliorer mes compétences en résolution de problèmes. Ce projet m’a poussé dans de nouveaux territoires, exigeant une planification minutieuse et un engagement à ne pas avoir de temps d’arrêt. En dirigeant la migration sans expérience préalable dans les transitions de bases de données à grande échelle, j’ai appris la valeur d’une communication claire, du travail d’équipe et de la décomposition des défis complexes en parties gérables. Cette expérience a élargi mes compétences techniques et a également renforcé ma confiance, me dirigeant davantage vers des objectifs et projets plus ambitieux. Cette étape de ma carrière a non seulement démontré ma progression en tant que développeur et leader, mais aussi en tant que résolveur de problèmes, montrant que l’acceptation de l’inconnu et la réussite sont essentielles au développement personnel et professionnel.
Quelle est la conclusion ?
Mes réponses m’ont permis de passer à la deuxième étape du processus d’entretien chez l’entreprise, me donnant l’occasion d’avoir une conversation agréable avec l’un des développeurs de l’équipe, ce qui était assez agréable. Mais surtout, cet exercice m’a permis de réfléchir au problème technique le plus difficile que j’ai résolu dans ma carrière pendant mon temps chez eBay. Il m’a permis de penser à ma croissance en tant que développeur/ingénieur, de développer de nouvelles compétences et d’améliorer ma confiance en m’adaptant et en résolvant des problèmes complexes.