IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

La Grande Migration de MongoDB vers PostgreSQL : comment Infisical a réussi le passage
Quelles sont les raisons qui l'ont motivée à quitter MongoDB et pourquoi s'est-elle orientée vers PostgreSQL ?

Le , par Stéphane le calme

265PARTAGES

10  0 
Infisical, une plateforme en pleine croissance, traite désormais plus de 50 millions de secrets par jour. Ces secrets sont des configurations d’applications et des données sensibles envoyées aux équipes, aux pipelines CI/CD et aux serveurs/applications qui en ont besoin. Face à cette croissance, Infisical a dû mettre à jour sa pile technologique. Récemment, Infisical a effectué une migration complète de sa base de données de MongoDB à PostgreSQL. Ce processus complexe a nécessité une réflexion approfondie, l’adoption de nouvelles technologies, la création de nouveaux schémas de base de données, la réécriture de requêtes et la migration de millions (voire de milliards) d’enregistrements vers PostgreSQL. Voici l’histoire de la décision d'Infisical de passer de MongoDB à PostgreSQL et de la manière dont ils l'ont réalisée.
Pourquoi avons-nous migré ?

Début avec MongoDB

Lorsque nous avons initialement construit Infisical, nous avons choisi MongoDB + Mongoose ORM, car cette combinaison présentait le moins de surcharge et nous permettait de livrer rapidement des fonctionnalités de qualité. À l’époque, nous étions davantage concentrés sur Infisical Cloud, notre offre SaaS gérée. Nous n’avions pas anticipé autant d’utilisateurs auto-hébergés du produit, et il n’avait donc pas été conçu dans cette optique.

Limitations de MongoDB

Bien que MongoDB ait bien servi Infisical au début, il a montré ses limites lorsque notre produit a évolué au-delà du service géré. De plus en plus d’organisations, notamment celles opérant à l’intersection de la conformité et de la sécurité, ont préféré l’auto-hébergement d’Infisical plutôt que d’utiliser Infisical Cloud. D’autres avaient des exigences sur site à respecter. La demande croissante pour l’auto-hébergement nous a amenés à quitter MongoDB au profit de PostgreSQL.

Problèmes avec MongoDB

Voici quelques-uns des problèmes que nous avons rencontrés avec MongoDB :
  1. Transactions difficiles à configurer : la mise en place de transactions avec MongoDB n’était pas triviale, car elle nécessitait l’exécution de MongoDB en mode cluster avec diverses configurations. Cela rendait difficile la réalisation d’un simple POC d’Infisical, car cela exigeait une configuration de production de MongoDB ;
  2. Manque de support pour les transactions : MongoDB ne prenait pas en charge les transactions de manière native, ce qui posait des problèmes pour les opérations critiques ;
  3. Structure de base de données sans schéma : bien que la flexibilité de MongoDB soit un avantage, elle a également entraîné des problèmes de conception de schéma. La conception sans schéma a rendu difficile la gestion des versions et la maintenance.



Pourquoi PostgreSQL ?

Lors de notre recherche d'une nouvelle base de données, nous avons commencé par dresser la liste des aspects qui nous importaient le plus : facilité de gestion (c'est-à-dire configuration, déploiement et mise à l'échelle inclus), support intégré des transactions et capacités relationnelles. Dans le cadre de nos délibérations, nous nous sommes également demandé si nous devions ou non créer notre propre système de stockage intégré ou opter pour une solution de stockage externe.

Voici ce que cela signifie pour chaque option :
[LIST][*]stockage intégré : Nous pourrions intégrer un système de base de données comme SQLite directement dans Infisical et poursuivre une stratégie de réplication horizontale pour réduire la latence en évitant les sauts de réseau supplémentaires. Dans ce modèle, la mise à l'échelle du système impliquerait de déployer plusieurs instances d'Infisical et de les faire communiquer entre elles par le biais d'un algorithme de consensus comme Raft. Bien que cela semble être une excellente solution puisque les clients n'auraient pas besoin de connecter des dépendances pour faire fonctionner Infisical, l'écosystème d'outils pour exécuter cette vision semblait immature et l'effort d'ingénierie requis pour cela semblait rien de moins que démesuré ;[*]stockage externe : Nous pouvions simplement remplacer MongoDB par une ou plusieurs autres bases de données telles que PostgreSQL ou MySQL et utiliser leurs capacités d'extension intégrées. Bien que cette solution n'ait pas totalement éliminé les frictions associées au besoin de dépendances externes pour utiliser Infisical, nous avons estimé qu...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !