Vous souhaitez effectuer la transition d'une application monolithe à une architecture microservice ?
Simon Macor, lead developer chez Matters, nous donne dans ce Matters Meetup son retour d'expérience sur cette migration qu'il a réalisée.
Il commence par rappeler la définition du monolithe : un bloc unique qui contient l'intégralité des services métiers dans une même codebase. Il en détaille les conséquences : les règles métiers dialoguent directement en interne sans appel réseau ; la modification d'un service nécessite le redéploiement de toute l'application ; et souvent, les services ne sont pas clairement définis et délimités.
Simon Macor présente ensuite comment effectuer la transition vers une architecture microservices. Il s'agit de savoir découper le monolithe, d'en extraire petit à petit les services métiers, et les faire communiquer par appels distants.
La première étape de la transition est de découper correctement les futurs services. Simon Macor propose d'utiliser des wrappers qui appellent les services existants dans le monolithe. La seconde étape consiste à effectivement sortir les services dans des blocs applicatifs distants qui communiquent entre eux, et à exposer une API stateless pour les appeler.
- Avoir une équipe assez mature car le changement d'architecture implique un changement de communication
- Pouvoir valider rapidement l'absence de régression avec des tests fonctionnels
- Définir le contrat de communication de l'API et son versioning
- Savoir comment documenter l'API de manière homogène
- Utiliser extensivement les logs pour comprendre ce qu'il se passe dans l'application et entre les services
Simon Macor termine en présentant les pièges qu'il a pu rencontrer et comment les éviter. Il insiste sur l'importance des process d'intégration continue et sur la précision que les logs doivent avoir. Il conseille de ne pas se diversifier trop rapidement en termes de technologies utilisées dans les microservices, et enfin, de faire attention aux librairies partagées entre les microservices, qui peuvent se transformer en point de défaillance unique.