Les microservices sont devenus incontournables dans le développement d’applications cloud. Considérés comme la nouvelle norme en termes d’architecture, les microservices s’ils permettent par le découpage d’une application en autant de services fonctionnels d’optimiser l’application, son découpage et la maitrise des sous-composants peut être ardue. C’est là qu’entre en jeu le Service Mesh, une couche de l’infrastructure qui permet d’y voir plus clair. Service Mesh et microservices, de quoi parle-t-on plus exactement ? Zoom sur ces deux notions.
Microservices et Service Mesh ?
En développement logiciel, les microservices sont les composants des applications. Les microservices sont indépendants même s’ils œuvrent de la même manière et de manière synchrone. Par extension, on utilise également ce terme pour désigner le type d’architecture ou l’approche utilisée pour le développement de l’application. Cette approche s’oppose aux méthodes classiques suggérant que les composants forment une seule entité que l’on ne peut dissocier.
Dans une telle architecture, les microservices peuvent être développés par des petites équipes qui les façonnent de manière totalement autonome et libre. Ils n’ont pas à tenir compte du langage utilisé ou des outils sollicités par les autres équipes qui se penchent sur les autres microservices de la même application. Seules les fonctionnalités des services et la possibilité de créer une synergie entre elles importent.
Une architecture microservices permet d’optimiser le développement pour obtenir encore plus rapidement des logiciels cloud-natives fiables et performants. La possibilité d’orchestrer les microservices en tant que composants indépendants mais qui se complètent facilite la tâche des développeurs. Les erreurs ou défaillances n’affectent que le service concerné. Faire évoluer une application devient alors plus simple puisque cela ne requiert en aucun cas son redéploiement intégral. Les équipes peuvent se focaliser sur la partie qu’il faut revoir ou mettre à jour uniquement. Encore faut-il savoir s’y prendre. D’où la nécessité d’un Service Mesh.
Un Service Mesh ou « maillage de services » est pour ainsi dire, l’élément de contrôle des microservices, gérant leurs communications et suivant la manière dont ils agissent entre eux. Les microservices forment un réseau et s’échangent des informations en fonction de la requête de l’utilisateur. Le Service Mesh intervient dans cette interaction en véhiculant la requête auprès des microservices concernés.
Certes, ont peut développer une application en se basant sur une architecture microservices grâce au codage au niveau des services, néanmoins, on ne peut éviter de complexifier les communications lorsque le produit évolue. En outre, face aux exigences du marché et l’accroissement des besoins des utilisateurs, les applications doivent répondre à des standards élevés de performance et de vitesse d’éxecution.
Service Mesh et microservices : comment ça marche ?
Le Service Mesh se présente sous la forme d’une couche d’infrastructure qui gère cette communication. Elle est réalisée à partir d’un ensemble de proxys réseau installés à côté de chaque service. Ces proxys, dénommés sidecars sont rattachés aux microservices et forment un réseau, une maille, d’où le nom Service Mesh. Sans ce réseau maillé, détecter la source d’un problème dans une architecture basée sur des microservices revient à chercher une aiguille dans une botte de foin.
Il existe deux types de flux de circulation de trafic. L’un, appelé trafic Nord-Sud désigne ceux qui entrent et sortent du cluster tandis que l’autre, dénommé trafic Est-Ouest regroupe ceux qui circulent entre les nœuds. Le Service Mesh gère ces deux types de trafics.
Outre la simplification de la gestion de la communication, le Service Mesh permet également d’évaluer le fonctionnement de toute l’architecture avec des données détaillées. Par exemple, si un microservice affiche certaines faiblesses ou une instabilité récurrente, les équipes DevOps peuvent s’en informer et réagir en améliorant le temps de réponse du service.



