Il y a 8 ans -
Temps de lecture 3 minutes
Principles of microservices
Lors de cette présentation, Sam Newman consultant chez ThoughtWorks , souhaite partager avec nous ses réflexions sur les microservices. Il est également l’auteur du livre Building Microservices.
Sam commence par définir ce que sont les microservices : « small autonomous services that work together ». De cela il nous présente sept principes.
Modelled around business model
Cette règle rejoint les principes du Domain Driven Design. Le but est de définir des Bounded Context et d’isoler les règles métiers au sein des microservices. D’ailleurs Sam nous conseille de nous inspirer du livre Implementing Domain Driven Design de Vaughn Vernon.
Culture of automation
Si l’on souhaite se lancer dans les microservices, Sam nous conseille de mettre de l’effort dans l’automatisation de l’infrastructure, des tests automatisés et le Continuous Delivery. Cela permet notamment d’avoir des boucles de feedbacks rapides pendant les phases de développement, et permet d’être très réactif lors de problèmes en production.
Hide implementation details
En tant que consommateur d’un microservice, nous ne devons pas savoir les technologies sous-jacentes (langage, type de base, etc). De même nous n’avons pas à connaître le modèle interne et les entités associées.
Decentralise all the things
Le but ici est de laisser de l’autonomie à l’organisation et aux personnes. Pour fonctionner les mentalités doivent être changées. Un travail culturel est nécessaire dans les équipes. Il évoque notamment la loi de Conway :
« organizations which design systems… are constrained to produce designs which are copies of the communication structures of these organizations »
L’idée est de mettre en place une organisation à l’image des microservices (i.e petites équipes cross-fonctionnelles qui communiquent entre elles).
Deploy independantly
Sam affirme que c’est un point difficile. En effet avoir des microservices indépendants signifie gérer les versions de manière indépendante, et donc des appels entre services qui deviennent compliqués. Sam évoque la notion de Consumer Driven Contracts et nous présente l’outil Pact. Ce dernier permet de définir des contrats entre producteur et consommateur. Très pratique pour effectuer des tests.
Sam continue en nous parlant de la manière de déployer les services. Sam préfère l’approche un service sur un host. Par host, il entend un OS, une machine. Cela présente l’avantage d’être isolé des autres services (par rapport à une approche plusieurs services sur un même host).
Isolate failure
Dans un environnement microservice, beaucoup de messages (i.e évènements) transitent. De ce fait, suivre le cheminement d’un message à travers les services et détecter d’éventuelles erreurs devient rapidement un cauchemar.
Sam conseille de centraliser les logs et de les agréger. Des outils comme Kibana permettent de requêter et de retrouver facilement les données. Son autre conseil concerne le monitoring de services avec des statistiques (ratio de messages échangés par exemple). Sam nous conseille également d’utiliser des correlations Ids dans les logs. Cela permet de « tracer » les messages et de les retrouver plus simplement.
A travers cette présentation, nous voyons que la mise en place des microservices soulève beaucoup de challenges. Merci à Sam de nous avoir donné des éléments concrets pour avancer sur nos réflexions.
Commentaire