Definition

Maillage de services (service mesh)

Un maillage de services (Service Mesh) est une couche dédiée de l'infrastructure qui contrôle la communication entre les services sur un réseau. C'est un moyen pour les différentes parties d'une application de communiquer entre elles. Les maillages de services accompagnent communément les applications cloud, les conteneurs et les microservices.

Un maillage de services est chargé de délivrer les demandes de services dans une application. Il fournit généralement un service de découverte, l'équilibrage de charge, le chiffrement et la reprise sur incident, entre autres fonctions. De plus, une haute disponibilité est souvent assurée via des API logicielles plutôt que par voie matérielle. Les maillages de services peuvent accélérer, fiabiliser et sécuriser la communication entre les services.

Par exemple, une application sous forme d'architecture de microservices peut se composer de centaines de services, tous avec leurs propres instances s'exécutant dans un environnement de production. Pour les développeurs, il est alors délicat de savoir quels composants doivent interagir et comment modifier leur application en cas de problème.

Inclure les protocoles de communication dans un service plutôt que dans une couche distincte dédiée compliquerait largement le processus de suivi des modifications d'une application. Avec un service mesh, les développeurs peuvent placer la communication de service à service dans une couche dédiée.

Une organisation peut choisir d'utiliser une passerelle API, qui traite les transactions des protocoles, sur un maillage de services. Toutefois, les développeurs doivent mettre à jour la passerelle API chaque fois qu'ils ajoutent ou retirent un microservice.

Fonctionnement d'un maillage de services

L'architecture d'un service mesh utilise une instance de proxy dite « sidecar » quel que soit le paradigme de développement utilisé. Il s'agit le plus souvent de conteneurs et/ou de microservices. Dans une application de microservices, un sidecar est joint à chaque service. Dans un conteneur, le sidecar est joint à chaque conteneur applicatif, machine virtuelle ou unité d'orchestration de conteneur, comme un pod Kubernetes.

Les sidecars peuvent traiter les tâches indépendantes du service à proprement parler, comme la surveillance ou la sécurité.

Les instances de services, les sidecars et leurs interactions forment ce qu'on nomme le plan de données dans un maillage de services. La couche appelée plan de contrôle gère les tâches comme la création d'instances, la surveillance, et la mise en œuvre de politiques (par exemple, les politiques de gestion ou de sécurité du réseau). Les plans de contrôle peuvent se connecter à une interface graphique ou de ligne de commande pour la gestion des applications.

Avantages et inconvénients du service mesh

Un maillage de services ne résout qu'une partie des principaux problèmes liés à la gestion de la communication entre services. Parmi les avantages d'un maillage de services, citons :

  • La communication simplifiée entre les services, à la fois pour les microservices et pour les conteneurs.
  • Un diagnostic facilité des erreurs de communication, puisqu'elles ne surviennent que sur leur propre couche d'infrastructure.
  • Les fonctions de sécurité (chiffrement, authentification, autorisation).
  • Les délais raccourcis en termes de développement, de test et de déploiement d'une application.
  • Un sidecar placé à côté d'un cluster de conteneurs est un moyen efficace de gérer les services réseau.

Parmi les inconvénients :

  • Le nombre d'instances en exécution augmente en cas d'utilisation d'un service mesh.
  • L'ajout d'une étape supplémentaire par laquelle chaque appel de service doit d'abord passer par l'intermédiaire d'un sidecar.
  • Les maillages de services ne résolvent pas les problématiques telles que l'intégration avec d'autres services ou systèmes, et le type de routage ou le mappage des transformations.

Marché du maillage de services

Un maillage de services est une technologie souvent proposée en open source par différents créateurs. On trouve aussi ce service en abonnement auprès des grands prestataires cloud.

Istio est un service mesh open source fourni par Google, IBM et Lyft. Il est conçu comme un plan de contrôle universel qui, s'il cible d'abord les déploiements Kubernetes, peut s'utiliser sur diverses plateformes. Son plan de données s'appuie sur des sidecars nommés Envoy. Ce maillage de services propose des fonctions de sécurité, telles que la gestion des clés et des identités. Il prend aussi en charge l'injection d'erreurs et le déploiement hybride.

 Service mesh Istio
L'architecture du maillage de services Istio est l'une des plus courantes.

Linkerd est un autre service mesh multiplateformes et open source. Conçu par Buoyant sur la base de la bibliothèque Finagle de Twitter, il prend en charge des plateformes comme Kubernetes, Docker et Amazon ECS (Elastic Container Service). Ses fonctions comprennent la découverte de services intégrés et le plan de contrôle, Namerd.

Cette définition a été mise à jour en janvier 2020

Pour approfondir sur Réseaux et Télécoms