Service Mesh, pour une intégration optimale des Microservices
Sécurisation transparente des communications inter-Microservices, fiabilité des communications, gestion efficace des accès pour un utilisateur final, résilience des systèmes, le Service Mesh permet de simplifier au maximum la conception des Microservices.
A l’heure où la mise en œuvre des Architectures Microservices se multiplie dans les DSI, le panel des solutions techniques ne cessent de s’enrichir. Complément aux plateformes de conteneurisation basées sur Kubernetes, les Services Mesh proposent une vision innovante de l’intégration des Microservices.
Les plateformes de conteneurisation laissent beaucoup de points techniques ouverts lors de la mise en œuvre d’une Architecture Microservices :
- Comment sécuriser les communications inter-Microservices ?
- Comment fiabiliser ces communications ?
- Comment identifier et autoriser l’utilisateur final ?
Sans Services Mesh, chaque Microservice embarque une lourde charge technique
Netflix est l’un des grands précurseurs des Architectures Microservices. Sa suite Netflix OSS a dès sa publication été considérée comme une référence pour mettre en œuvre une telle Architecture. Eureka, Zuul ou Hystrix sont effectivement des solutions intéressantes mais se présentent sous forme de librairies à incorporer et à utiliser dans les sources des applications.
Les développeurs sont contraints d’utiliser des librairies particulières et de respecter certaines règles de développement. Progressivement ces particularités prennent l’aspect d’un anti-pattern, alourdissant le code source et complexifiant sa maintenabilité, tout en augmentant la quantité de bonnes pratiques techniques à tester et valider.
Le sidecar : la simplification des Services Mesh
Après quelques tentatives passées (notamment par Linkerd dans sa première version), les Services Mesh ont aujourd’hui construit une solution élégante pour contourner ces écueils : externaliser l’ensemble des configurations et du runtime des échanges interapplicatifs dans une brique appelée « sidecar ». Ce sidecar se trouve placé en front de chaque Microservice et s’impose en passage obligé pour l’ensemble des appels entrants et sortants de ce service. Une brique centrale se charge de diffuser la configuration du cluster à travers tous les sidecars, tout en centralisant leurs statistiques et logs.
Conteneurisation Orientée Microservices
Grâce aux Services Mesh et au concept de sidecar, le développement d’un microservice se fait sans se préoccuper d’un certain nombre de sujets clefs :- L’authentification des appels reçus par les Microservices
- La gestion des droits des utilisateurs
- La gestion des quotas d’accès
- La télémétrie et la surveillance des échanges
- la mise en place d’un système de « circuit-breaker » permettant d’isoler des services en défaut le temps de leur correction ;
- la « fault-injection », allant du retour aléatoire d’un code d’erreur à l’injection de temps de latence, qui permet aux développeurs et aux concepteurs de s’assurer du bon fonctionnement en mode dégradé de leurs Microservices dès les phases de test.