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 alors que je travaillais chez eBay, où j’ai migré l’un des grands projets internes d’eBay 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 écrit 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 faites-nous savoir :

  1. Ce que vous avez fait
  2. Ce qui a rendu cela difficile
  3. Ce que vous avez appris de cette expérience
  4. Comment vous avez grandi 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 alors que je travaillais à mon poste actuel chez eBay. Actuellement chez eBay, où je suis sous contrat via Hitachi Vantara, je développe et maintiens un outil interne appelé Système de Gestion de Stockage ou STMS. STMS est un outil utilisé par l’équipe Service & Infrastructure de Stockage (SSI) d’eBay pour surveiller et gérer des dispositifs à travers les centres de données d’eBay. STMS permet à un ingénieur de surveiller les métriques de nombreux ensembles, commutateurs, hôtes, groupes de disques, clusters et bases de données. Il gère également les alertes pour les commutateurs et les ensembles 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, comptant des dizaines/hundreds d’ensembles, de commutateurs, d’hôtes, de groupes de disques et de clusters à travers les centres de données d’eBay. Il sert d’outil critique pour l’équipe SSI afin de surveiller et de gérer l’infrastructure de stockage d’eBay, qui est vitale pour le service et le modèle commercial de base d’eBay. Sachant tout cela, le problème le plus difficile que j’ai dû résoudre pendant mon temps chez eBay était de migrer le STMS de l’utilisation de la base de données MongoDB à l’utilisation de la base de données Postgres.

2 - Ce qui a rendu cela difficile

Ce qui a rendu ce problème difficile, c’est que MongoDB et Postgres sont fondamentalement des bases de données différentes. MongoDB est une base de données basée sur des 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), et 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, tout le backend de STMS a été construit pour traiter et gérer des données sous forme de JSON, en utilisant des packages exclusivement compatibles avec MongoDB pour les opérations de base de données. De plus, 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 vitale de STMS en tant qu’outil interne. Cette migration dans son ensemble devait être complétée en quelques mois, sans temps d’arrêt, et sans plan clair pour son exécution. Je n’avais également pas beaucoup d’expérience avec Postgres auparavant et, avec tous mes collègues, je n’avais pas d’expérience dans la migration d’une grande base de code héritée d’une base de données NoSQL à une base de données 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 maintenant presque toutes les fonctionnalités et la fonctionnalité. 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 fonctionner 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 avec Postgres. Dans l’ensemble, la migration s’est déroulée sans accroc et sans réels défauts, ce qui a dépassé mes attentes. Tout au long de ce processus, j’ai beaucoup appris. Techniquement, j’ai acquis une meilleure compréhension de Postgres, SQL, des arbres de syntaxe, 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-de secours 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 à sa conclusion malgré de nombreuses limitations, revers et inconnues.

4 - Comment vous avez grandi en conséquence

J’ai commencé ma carrière dans la robotique pendant mon diplôme de premier cycle, mais je me suis tourné vers le développement web lorsque j’ai obtenu le poste chez eBay, entrant dans un domaine où je n’avais aucune expérience préalable. Cette transition a jeté les bases d’une carrière définie par un apprentissage constant et une adaptabilité. Le défi de migrer STMS de MongoDB vers Postgres a été un saut significatif dans ma carrière, contribuant énormément à ma croissance professionnelle. Ce n’était pas seulement une question 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 un nouveau territoire, exigeant une planification minutieuse et un engagement à ne pas avoir de temps d’arrêt. Diriger la migration sans expérience préalable dans les transitions de bases de données à grande échelle, j’ai appris la valeur de la 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, m’orientant vers des objectifs et des projets plus ambitieux. Ce jalon dans ma carrière a non seulement démontré ma croissance 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 dans l’entreprise, me permettant d’avoir une conversation agréable avec l’un des développeurs de l’équipe, ce qui était plutôt agréable. Mais, principalement, cette mission 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. Cela m’a permis de réfléchir à ma croissance en tant que développeur/ingénieur, de développer de nouvelles compétences et d’améliorer ma confiance dans l’adaptation et la résolution de problèmes complexes.