Aller au contenu principal

Lead développeur des bibliothèques open source Neo9

mars 2018 - septembre 2024 · 6 ans 7 mois

Lors du démarrage du projet Catalogue en 2018, les développements des bibliothèques open source de Neo9 étaient en suspens. Le projet a consisté en une remise à jour tout en accompagnant les changements nécessaires.

  • Ajout de nouvelles bibliothèques et de skeletons pour démarrer plus rapidement les nouveaux projets
  • Maintien des bibliothèques existantes, patchs de sécurité, corrections de bugs
  • Amélioration de la couverture de tests
  • Gestion des contributions des collaborateurs

Taille d'équipe​

  • 1-2 développeurs

Compétences​

Contributions​

node-routing : Base des microservices chez Neo9​

Elle élimine tous les développements annexes à la création d'un microservice. Elle intègre :

  • Un routage HTTP basé sur les annotations (routing-controllers)
  • Une validation (class-validator) et une transformation des données entrantes (class-transformer)
  • Le pattern d'IoC (Inversion of Control) grâce à TypeDI
  • Un chargeur de configuration (node-conf) ainsi que sa validation au démarrage
  • Un logger (node-log)
  • L'exposition de métriques pour Prometheus (promster)
  • Un client HTTP basé sur Got
  • La génération et exposition de la documentation OpenAPI
  • etc.

mongodb-client : Surcouche du client MongoDB standard​

Ce client permet de standardiser l'usage des collections MongoDB, et propose beaucoup de simplifications par rapport au client standard. Quelques exemples :

  • il intègre automatiquement la gestion des dates de création/modification/dernière mise à jour, ainsi que l'utilisateur effectuant l'action
  • il peut aussi tracer toutes les modifications sur une collection dans une collection d'historisation avec une simple option keepHistoric: true

mongodb-migration : Outil de migration d'une base de données MongoDB d'une version applicative à une autre​

Cet outil exécute les scripts de migration, avec un verrou et un rollback en cas d'erreur.

node-conf : Chargeur de configuration par environnement​

Cette bibliothèque passée en TypeScript charge une configuration par environnement, avec héritage d'une configuration globale et surcharge possible par fichier externe.

node-log : Simple bibliothèque de log au format JSON hors dev​

node-utils : Des fonctions utilitaires​

Cette bibliothèque fournit un type d'erreur N9Error standard qui peut embarquer un contexte en plus du message et du statut de l'erreur, ainsi que d'autres informations aidant à l'analyse des erreurs.

microservice-skeleton & gateway-skeleton​

Ces exemples servent de point de départ pour créer de nouveaux microservices.