Qu'est-ce qu'un maillage de services ?

Un maillage de services est une couche de logiciels qui gère l'ensemble des communications entre les services, composée de microservices conteneurisés. À mesure que les applications évoluent et que le nombre de microservices augmente, la surveillance des performances des services devient difficile. Un maillage de services offre de nouvelles fonctionnalités de gestion des connexions entre les services telles que la surveillance, la journalisation, le suivi et le contrôle du trafic. Il est indépendant du code de chaque service, ce qui lui permet de fonctionner au-delà des limites du réseau et avec plusieurs systèmes de gestion de services.

Pourquoi un maillage de services est-il nécessaire ?

Au sein d'une architecture d'application moderne, il est possible de créer des applications sous la forme d'un ensemble de petits microservices pouvant être déployés indépendamment. Différentes équipes peuvent créer des microservices distincts en choisissant leurs langages et outils de développement, mais les microservices doivent communiquer pour que le code de l'application fonctionne correctement.

Les performances de l'application dépendent de la vitesse et de la résilience de la communication entre les services. Les développeurs doivent surveiller et optimiser l'application sur l'ensemble des services, même si la nature distribuée du système empêche d'obtenir la visibilité nécessaire. La gestion des communications se complexifie à mesure que les applications évoluent.

L'adoption du maillage de services repose sur deux principaux facteurs, que nous allons à présent détailler.

En savoir plus sur les microservices »

Observabilité au niveau du service

À mesure que le nombre de charges de travail et de services déployés augmente, les développeurs ont des difficultés croissantes à comprendre leur fonctionnement conjoint. Les équipes de service souhaitent par exemple connaître leurs dépendances en aval et en amont, et recherchent une meilleure visibilité sur la façon dont les services et les charges de travail communiquent au niveau de la couche d'application.

Contrôle au niveau du service

Les administrateurs souhaitent contrôler quels services communiquent entre eux ainsi que les actions qu'ils effectuent. Ils recherchent un contrôle et une gouvernance précis du comportement, des stratégies et des interactions des services au sein d'une architecture de microservices. L'application de stratégies de sécurité est essentielle à la conformité réglementaire.

Les avantages d'un maillage de services

Un maillage de services fournit une couche d'infrastructure dédiée et centralisée qui gère les aspects complexes de la communication entre services au sein d'une application distribuée. Voici quelques-uns des avantages que présente le maillage de services.

Découverte de service

Les maillages de services proposent la découverte automatique de service afin de diminuer la charge opérationnelle liée à la gestion des points de terminaison de service. Ils utilisent un registre de services pour découvrir et suivre de manière dynamique tous les services du maillage. Les services peuvent se retrouver et communiquer entre eux sans contraintes, indépendamment de leur emplacement ou de l'infrastructure sous-jacente. Vous pouvez rapidement les mettre à l'échelle en déployant de nouveaux services selon vos besoins.

Répartition de charge

Les maillages de services reposent sur divers algorithmes, tels que le round-robin, le plus petit nombre de connexions ou l'équilibrage de charge pondéré, pour répartir intelligemment les demandes entre plusieurs instances de service. L'équilibrage de charge améliore l'utilisation des ressources et garantit une disponibilité et une capacité de mise à l'échelle importantes. Vous pouvez optimiser les performances et éviter les goulots d'étranglement au niveau des communications réseau.

Gestion du trafic

Les maillages de services s'accompagnent de fonctionnalités avancées de gestion du trafic pour un contrôle précis du routage des demandes et du comportement du trafic. Voici quelques exemples.

Répartition du trafic

Vous pouvez répartir le trafic entrant entre différentes versions ou configurations de service. Le maillage redirige une partie du trafic vers la version mise à jour pour déployer les modifications de manière contrôlée et progressive, garantissant ainsi une transition en douceur et atténuant les répercussions des modifications.

Mise en miroir des demandes

Vous pouvez dupliquer le trafic vers un service de test ou de surveillance à des fins d'analyse sans affecter le flux de demandes principal. La mise en miroir des demandes vous permet d'obtenir des informations sur la façon dont le service gère des demandes particulières sans affecter le trafic de production.

Déploiements Canary

Vous pouvez rediriger un sous-ensemble réduit d'utilisateurs ou de trafic vers une nouvelle version du service pendant que la majorité des utilisateurs continuent d'utiliser la version stable existante. Grâce à une exposition limitée, vous pouvez tester le comportement et les performances de la nouvelle version en situation réelle.

Sécurité

Les maillages de services fournissent des fonctionnalités de communication sécurisées comme le chiffrement, l'authentification et l'autorisation TLS mutuels (mTLS). Le protocole TLS mutuel permet de vérifier l'identité dans le cadre des communications entre services, et garantit la confidentialité ainsi que l'intégrité des données en chiffrant le trafic. Vous pouvez aussi appliquer des stratégies d'autorisation pour contrôler les services qui peuvent accéder à des points de terminaison spécifiques ou qui peuvent effectuer des actions spécifiques.

Surveillance

Les maillages de services s'accompagnent de fonctionnalités complètes de surveillance et d'observabilité vous permettant d'obtenir des informations sur l'état, les performances et le comportement de vos services. La surveillance vous aide également à résoudre les problèmes et à optimiser les performances. Voici quelques exemples de fonctionnalités de surveillance à votre disposition :

  • Collecte d'indicateurs tels que la latence, les taux d'erreur et l'utilisation des ressources pour analyser les performances générales du système
  • Suivi distribué pour consulter le chemin complet et l'heure des demandes sur plusieurs services
  • Capture des événements de service dans des journaux à des fins d'audit, de débogage et de respect de la conformité

Fonctionnement du maillage de services

Le maillage de services supprime la logique qui régit la communication entre services au niveau des services individuels et extrait la communication pour l'intégrer à sa propre couche d'infrastructure. Il utilise plusieurs proxys réseau pour acheminer et suivre les communications entre les services.

Un proxy fait office de passerelle intermédiaire entre le réseau de votre organisation et le microservice, et le serveur proxy achemine l'ensemble du trafic vers et en provenance du service. Les proxys distincts sont parfois appelés sidecars, car ils s'exécutent séparément mais sont logiquement attachés à chaque service. Tous les proxys forment la couche de maillage de services. 

 

L'architecture du maillage de services se constitue de deux grands composants : le plan de contrôle et le plan de données.

Plan de données

Dans un maillage de services, le plan de données gère les données et inclut tous les proxys sidecar ainsi que leurs fonctions. Lorsqu'un service souhaite communiquer avec un autre service, le proxy sidecar effectue les actions suivantes :

  1. Le sidecar intercepte la demande.
  2. Il encapsule la demande au sein d'une connexion réseau distincte.
  3. Il établit un canal sécurisé et crypté entre les proxys source et de destination.

Les proxys sidecar gèrent les messages de bas niveau entre les services. Ils implémentent également des fonctionnalités telles que celles de coupe-circuit et de nouvelles tentatives de demande pour améliorer la résilience et empêcher la dégradation du service. Les fonctionnalités de maillage des services, par exemple l'équilibrage de charge, la découverte de service et le routage du trafic, sont implémentées dans le plan de données.

Plan de contrôle

Le plan de contrôle fait office de couche centrale de gestion et de configuration du maillage de services.

Il permet aux administrateurs de définir et de configurer les services au sein du maillage, en spécifiant par exemple des paramètres comme les points de terminaison de service, les règles de routage, les politiques d'équilibrage de charge et les paramètres de sécurité. Une fois la configuration réalisée, le plan de contrôle transmet les informations nécessaires au plan de données du maillage de services.

Les proxys s'appuient sur les informations de configuration pour décider de la méthode de traitement des demandes entrantes. Ils peuvent aussi recevoir des modifications de configuration et adapter leur comportement de manière dynamique. Il est possible d'apporter des modifications en temps réel à la configuration du maillage de services sans redémarrage ni interruption de service.

Les implémentations de maillage de services incluent généralement les fonctionnalités suivantes au niveau du plan de contrôle :

  • Registre de services pour le suivi de tous les services compris dans le maillage
  • Découverte automatique de nouveaux services et suppression des services inactifs
  • Collecte et agrégation de données de télémétrie telles que des métriques, des journaux et des informations de traçabilité distribuées

 

Qu'est-ce qu'Istio ?

Istio est un projet de maillage de services open source conçu pour fonctionner principalement avec Kubernetes. Kubernetes est une plateforme d'orchestration de conteneurs open source qui permet de déployer et de gérer des applications conteneurisées à grande échelle.

Les composants du plan de contrôle d'Istio s'exécutent eux-mêmes en tant que charges de travail Kubernetes. Il emploie un pod Kubernetes (un ensemble de conteneurs étroitement couplés partageant une même adresse IP) en tant que base pour la conception du proxy sidecar.

Le proxy de couche 7 d'Istio s'exécute comme un conteneur classique au sein du même contexte réseau que le service principal. À partir de cette position, il peut intercepter, inspecter et manipuler tout le trafic réseau transitant par le Pod ; le conteneur principal n'a pourtant pas besoin d'être modifié ni même d'être informé de ces actions.

En savoir plus sur Kubernetes »

Les défis relatifs à l'implémentation des maillages de services open source

Voici quelques défis courants relatifs au maillage de services sur les plateformes open source telles qu'Istio, Linkerd et Consul.

Complexité

Les maillages de services s'accompagnent de composants d'infrastructure, d'exigences de configuration et de considérations de déploiement supplémentaires. Leur courbe d'apprentissage abrupte oblige les développeurs et les opérateurs à maîtriser l'implémentation spécifique du maillage de services, et la formation des équipes demande du temps et des ressources. L'organisation doit s'assurer que ses équipes possèdent les connaissances nécessaires pour comprendre la complexité de l'architecture du maillage de services et la configurer efficacement.

Frais généraux opérationnels

Les maillages de service engendrent des frais supplémentaires liés au déploiement, à la gestion et à la surveillance des proxys du plan de données et des composants du plan de contrôle. Les opérations suivantes doivent par exemple être effectuées :

  • Garantir la disponibilité et la capacité de mise à l'échelle élevées de l'infrastructure de maillage de services
  • Surveiller l'état et les performances des proxys
  • Gérer les mises à niveau et les problèmes de compatibilité

Le maillage de services doit absolument être conçu et configuré avec le plus grand soin afin d'atténuer les éventuels effets sur les performances de l'ensemble du système.

Les défis liés à l'intégration

Le maillage de services doit s'intégrer parfaitement à l'infrastructure existante pour exécuter les fonctions requises, notamment aux plateformes d'orchestration de conteneurs, aux solutions réseau et aux autres outils composant la pile technologique.

Il est parfois difficile d'assurer la compatibilité et la bonne intégration avec d'autres composants dans des environnements complexes et diversifiés. Il est indispensable d'organiser une planification et des tests en continu pour modifier les API, les formats de configuration et les dépendances, mais aussi pour passer à la nouvelle version de n'importe quel composant dans la pile.

Comment AWS peut-il prendre en charge vos exigences en matière de maillage de services ?

AWS App Mesh est un maillage de services entièrement géré et hautement disponible fourni par Amazon Web Service (AWS). AWS App Mesh facilite la surveillance, le contrôle et le débogage des communications entre les services.

App Mesh repose sur Envoy, un proxy de maillage de services open source déployé en parallèle de vos conteneurs de microservices. Vous pouvez l'utiliser avec des conteneurs de microservices gérés par Amazon Elastic Container Service (Amazon ECS), Amazon Elastic Kubernetes Service (Amazon EKS), AWS Fargate et Kubernetes sur AWS. Vous pouvez également l'utiliser avec des services sur Amazon Elastic Compute Cloud (Amazon EC2).

Commencez à utiliser le maillage de services sur AWS en créant un compte dès aujourd'hui.

Prochaines étapes sur AWS

Créer gratuitement un compte

Obtenez un accès instantané à l'offre gratuite AWS.

S'inscrire 
Commencez à créer sur la console

Démarrez la création dans la console de gestion AWS.

Se connecter