De nombreux projets sont conçus avec une architecture en microservices mais est-ce réellement la solution la plus adaptée à votre projet ?Il est nécessaire de prendre conscience que ce type d’architecture n’est pas la solution magique à tous les problèmes qu’un projet peut rencontrer.
Jean-Christophe Bohin
Co-fondateur
“You might not need Microservices” : En effet, statistiquement il est très probable que vous n’ayez pas besoin de microservices au sein de votre projet.
Malgré la tendance et l'engouement pour ce type de solution, il faut prendre en compte plusieurs critères :
Des coûts importants : Le temps de développement, le déploiement de chaque service ainsi que l’API Gateway, le debugging plus important, le monitoring de chaque partie. Tous ces éléments entraînent des coûts supplémentaires non négligeables.
Des problématiques de performances : Les microservices entraînent beaucoup plus d’appels réseaux pour communiquer entre eux (contrairement à un monolithe). La consommation de ressources est également plus importante au niveau hardware.
Besoin de formalisation : Au-delà de la communication entre les services via un format commun, qui est un point déjà très important, les développeurs doivent s’assurer que les services continuent de communiquer ensemble après un développement spécifique. Les tests ne peuvent pas être réalisés de la même manière que sur un monolithe et il n’est pas aussi évident de se rendre compte lors du déploiement d’un service que tout continue de communiquer de bout en bout.
Polyglotism fallacy : Diverses personnes peuvent être amenées à travailler sur plusieurs services, il est préférable d’utiliser la même technologie au sein de tous les services pour garder une cohérence, pour intervenir et former plus facilement. De plus, chaque service conçu via la même technologie pourra utiliser les bibliothèques déjà conçues, à contrario d’une technologie différente ou toute l’implémentation doit être de nouveau effectuée.
Ces critères sont les plus importants et les plus évidents mais il y en a beaucoup d’autres à prendre en compte.
La maturité technologique du projet ainsi que la maturité de l’équipe sont également des points importants à ne pas négliger.
Cependant les microservices peuvent aussi être une bonne solution pour certains types de projets ; comme tout choix technologique ou d’architecture, il faut veiller à vérifier les avantages et inconvénients de ce type de solution.
Vous avez un projet ? Une suggestion ? Un mot doux ?