Un Service Mesh relie des microservices tout en facilitant la sécurisation et l’orchestration de composants conteneurisés et en simplifiant le travail des architectes du cloud.
Il y a d’abord eu les applications partout, pour tout, puis sont apparus les microservices (et les technologies de conteneur qui les rendent possibles). Quelle est la prochaine innovation qui portera encore plus haut l’expérience utilisateur avec les applications? Le Service Mesh.
L’approche des microservices repose sur des composants de petite taille à usage unique, utilisés pour former des applications plus grandes et plus complexes. Vous pouvez créer un microservice pour à peu près n’importe quoi, et comme chacun se concentre sur une seule capacité, ils sont relativement rapides à développer. Cependant, plus vous utilisez de capacités, plus il devient complexe de coordonner les composants de microservice.
Les applications traditionnelles (parfois appelées applications monolithiques) sont plus lentes à se développer, mais elles présentent des avantages. Comme de nombreuses fonctions distinctes sont exécutées par un seul programme, la coordination entre les composants est généralement intégrée au système. Il n’y a qu’une seule source de code, ce qui rend les applications traditionnelles plus faciles à dépanner et à déboguer.
Un Service Mesh est une couche d’infrastructure transparente qui facilite la communication entre les microservices. Cela apporte aux applications construites avec des microservices les avantages des applications traditionnelles, notamment la résilience, l’observabilité et la sécurité.
Le passage du monolithique aux microservices a été principalement motivé par la nécessité pour les équipes d’application d’être plus agiles et d’exécuter plus rapidement. La réduction d’une grande application en de nombreux petits éléments a permis aux équipes individuelles de se spécialiser, et ainsi d’itérer plus rapidement qu’elles ne le pouvaient lorsqu’elles devaient se préoccuper de chaque aspect d’un monolithe.
Cependant, cette rapidité et cette agilité ont un prix: une complexité accrue. Les microservices simplifient le développement, mais introduisent de nouveaux défis, notamment en ce qui concerne la sécurisation et l’orchestration de composants multiples et éphémères. Le Service Mesh est un moyen pour les développeurs de décharger la complexité au fur et à mesure de l’extension des applications en microservices.
Le Service Mesh est un moyen pour les développeurs de décharger la complexité au fur et à mesure de l’extension des applications en microservices.
Dans un podcast récent, Andrew Jenkins, co-fondateur et directeur technique d’Aspen Mesh, a formulé cela ainsi: «Avec un environnement de Service Mesh, le plus grand changement ne concerne pas ce que les développeurs d’applications doivent faire, mais toutes les choses qu’ils n’ont pas à faire». Par exemple, le composant de sécurité d’un maillage de services fournit une authentification et gère la confiance d’une application envers une autre. Lorsqu’une requête échoue, l’opérateur de la plateforme dispose des outils nécessaires pour définir si le microservice doit être réessayé ou retiré.
Dans ce nouvel environnement, les développeurs peuvent se concentrer sur l’acheminement des demandes vers la couche de maillage du service. L’opérateur de la plateforme, qui a accès à des outils permettant d’observer toutes les communications entre les microservices, est en mesure d’offrir au développeur d’application une toute nouvelle gamme de données et de mesures. «Dans un Service Mesh, il suffit de réparer une rupture à un endroit, et elle est réparée partout. La même problématique de cohérence réapparaît encore», déclare Jenkins.
Considérez le Service Mesh comme une nouvelle boîte à outils puissante. Il existe des outils pour la sécurité, le traitement de transactions, le cryptage, les moteurs de recommandation, le traçage distribué... la liste est longue. Mais des outils puissants ne vous aideront pas si vous ne savez pas comment les utiliser. Pour réussir l’adoption d’un Service Mesh, il faut une solide pratique de l’architecture en cloud et une équipe de plateforme expérimentée dans la définition de services d’infrastructure pour les développeurs.
De nombreuses organisations exploitent avec succès Kubernetes et d’autres technologies de conteneurs sans Service Mesh. Les implémentations standard de Kubernetes répondent très bien aux problèmes de déploiement intégré. Cependant, à grande échelle, les applications Kubernetes développent des problèmes en exécution qui ne sont pas aussi bien traités, notamment le cryptage, la coupure de circuit et le routage dynamique du trafic. Des solutions telles que NGINX et d’autres solutions d’accès aux conteneurs comblent une grande partie de cette lacune en fournissant des moyens de capturer, réguler, contrôler et visualiser le trafic réseau à l’entrée d’une application. Cependant, lorsque les développeurs commencent à atteindre les limites de ce que ces outils peuvent fournir, le Service Mesh promet un nouveau niveau de visibilité sur ce que les capacités des microservices conteneurisés.
Pour l’instant, le Service Mesh est une technique d’avant-garde. Pour les organisations qui sont déjà pleinement engagées dans Kubernetes ou qui prévoient de le développer avec Kubernetes, il sera plus facile de mettre en place un maillage de services au plus tôt que de l’insérer en cours de route. Si vous faites évoluer Kubernetes et que vous voulez réduire au minimum la surcharge de gestion, vous avez besoin d’un Service Mesh.
Pour les organisations ayant des besoins de sécurité complexes ou qui dépendent fortement d’applications dérivées de microservices, un Service Mesh peut accélérer le déploiement et la maintenance, renforcer la sécurité et contribuer à optimiser la consommation des ressources. Les environnements de Service Mesh augmentent la visibilité en fournissant des données de niveau micro et macro qui peuvent être utilisées pour optimiser les applications.
Le Service Mesh est le prochain niveau d’avancement des microservices et des technologies de conteneurs. Avec la bonne stratégie, il peut constituer un outil puissant.