Service Mesh, pour une intégration optimale des 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
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
En prenant la responsabilité de la gestion des échanges, le Services Mesh permet de déplacer les questions d’accès – authentification et gestion du trafic – de l’applicatif vers la configuration. C’est un gain en souplesse ; les Microservices en eux-mêmes ne sont plus impactés par les évolutions de Gouvernance.
Dans les Services Mesh basés sur Kubernetes, le sidecar est un conteneur instancié automatiquement avec le conteneur applicatif dans un pod qui leur est dédié. L’isolation du Microservice est assurée par le passage obligatoire de toute communication entrante ou sortante du pod par le sidecar. Le dialogue entre le sidecar et le Microservice s’effectue à l’intérieur du pod.
Au sein du Service Mesh, l’identification et l’authentification sont laissés au soin d’un serveur compatible OAuth2 et/ou OpenID Connect, ce qui permet de réutiliser les systèmes de sécurité déjà en place au sein d’un SI.
De par leur position centrale dans la communication inter-Microservices, les Services Mesh offrent tout un panel d’outils et de fonctionnalités particulièrement précieux. On peut citer :
- 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.
Services Mesh et Microservices : un couple gagnant
Aujourd’hui l’utilisation des Services Mesh se généralise. En atteste l’usage fait par les solutions d’API Management dans l’implémentation du concept de microgateway (sécurisation au plus près des APIs exploitées par les applications Microservices).
Simples à intégrer dans un SI, respectueux des pratiques, des tendances et technologies actuelles, les Services Mesh font figure de solutions particulièrement crédibles aux problématiques soulevées par la mise en place d’une Architecture Microservice.