découpage micro-services
Architectures innovantes - Articles

Découper en micro services : gros morceaux ou hachis parmentier ?

« L’erreur la plus commune, quand on entreprend une démarche microservices, est de vouloir découper en micro-services ! »


Le concept de microservices existe désormais depuis une dizaine d’années. Netflix étant la première « grande entreprise » (si on pouvait la nommer ainsi à l’époque) à adopter une telle orientation.


Avec le recul, le plus gros problème des microservices repose sur le fait de les avoir appelés « micro ». En lisant sur Wikipedia, on retrouve sous le chapitre « Philosophie », la phrase suivante : « Les services sont petits, et conçus pour remplir une seule fonction ». 


Rien de plus incorrect si on veut bien entamer une démarche microservices… Tout comme parler de nanoservices et macroservices, pour analyser des mauvaises pratiques, comme font certains acteurs. Ce n’est pas une question de taille ! 


Les efforts doivent principalement se focaliser sur trois axes fondamentaux dans la réflexion sur le découpage :

  • SIMPLICITÉ : un micro-service doit être spécialisé. Il ne doit pas avoir une couverture fonctionnelle complexe, il doit effectuer un ensemble d’actions simples et ciblées. Ceci étant dit, nous ne devons pas non plus réduire un microservice à une simple fonction, dans l’objectif de “faire petit” : un microservice doit couvrir un ensemble fonctionnel cohérent.
  • ISOLATION : un microservice doit être isolé des autres. Le dysfonctionnement d’un microservice ne doit pas impacter les autres afin d’éviter l’effet domino.
  • INDÉPENDANCE : un microservice garantit son indépendance, il englobe tout ce qui lui est nécessaire pour son fonctionnement. Dans la décennie de la containérisation, tout a été mis en œuvre pour que le concept d’indépendance, associé aux microservices, devienne simple et intuitif. Un container de par sa nature est facilement associable à un microservice


A partir de ces considérations, quelle est la meilleure approche pour définir le périmètre de ses microservices ?


Partons du besoin primaire d’un SI : Traiter de la donnée !


Conjuguons ce besoin à une autre caractéristique des microservices : un microservice interagit avec une donnée qui lui est propre.


Une solution simple se propose : réalisons un découpage par la donnée ! Le premier pas pour dessiner un découpage des microservices est de définir la structure de la donnée.


Prenons un exemple très simple : le triptyque CLIENT, PRODUIT et ORDRE. 


Dans la logique que je viens d’expliquer, nous pouvons construire un Microservice sur chaque entité métier :


Ce qui permet à une application frontale de combiner les trois pour, par exemple, permettre à un site d’eCommerce, de :

  • passer un ordre
  • après avoir consulté la liste des produits
  • et avoir géré l’inscription d’un client

 


Cette démarche n’est certainement pas exhaustive. Chaque cas de figure nécessite une analyse à part entière, mais à notre sens c’est un bon point de départ pour une réflexion micro-service. 


Pour résumer, une bonne pratique de découpage en microservices est initiée par le découpage de la donnée, en entités métier.


Voici une vidéo créée par nos soins pour illustrer ces explications :

 

CONCLUSION

Essayer de faire « petit » n’est pas forcément le sujet sur lequel focaliser ses efforts… L’indépendance et l’isolation sont les clés d’une bonne démarche micro-services. Si un doute surgit, le mieux est de ne pas découper tant que les autres principes sont respectés.




Découvrez-en plus concernant l’expertise de Erik : Architectures Innovantes.

Découvrir également
Découvrir plus d'articles
load