Publié par
Il y a 3 années · 3 minutes · Back

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.
principlesMicro.jpg

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.

Nicolas Jozwiak
Nicolas est delivery manager disposant de 12 ans d’expérience en conception et développement. Son parcours chez un éditeur avant son entrée chez Xebia lui a notamment permis de développer de solides compétences dans le domaine de la qualité et de l’industrialisation (tests, intégration continue, gestion de configuration, contrôle qualité). Bénéficiant d’une expérience très solide de mise en place des méthodes agiles et d’accompagnement d’équipes sur le terrain, il s’attache à mettre à profit quotidiennement son expérience qui est reconnue pour son approche pragmatique, proactive et pédagogique.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *