Qu'est-ce qu'un maillage de services ? Quels sont les maillages de services open source disponibles ?
Lors du développement dans une architecture de microservices, l'équipe DevOps doit configurer de nombreux composants individuels. Pour que les microservices fonctionnent ensemble, ils nécessitent des canaux de communication établis pour le partage d'informations et le transfert de données.
Une façon de gérer et de surveiller la communication entre les services consiste à utiliser un maillage de services.
Qu'est-ce qu'un maillage de services ?
Un maillage de services est une couche d'infrastructure dédiée ajoutée à l'architecture du microservice. Son rôle principal est d'assurer une communication rapide et sécurisée de service à service. Cet outil à faible latence gère et surveille la communication interservices et le partage de données.
Il se compose d'un plan de contrôle à partir duquel les développeurs implémentent des règles et des politiques spécifiques à la couche réseau. Le plan de contrôle fonctionne directement avec le plan de données, une collection de proxys sidecar fonctionnant parallèlement aux services. Ces mandataires sont responsables de toutes les communications entre le service. De plus, ils surveillent et fournissent des informations précieuses sur les performances globales de l'application et aident à détecter les problèmes potentiels et à éviter les temps d'arrêt.
Les proxys offrent des fonctionnalités précieuses, notamment :
- Découverte dynamique des services
- Équilibrage de charge
- Vérifications de l'état
- Chiffrement
- Observabilité
- Disjoncteurs
- Déploiements par étapes avec répartition du trafic basée sur un pourcentage
- Authentification
- Statistiques riches
- Autorisation
L'essor de l'architecture de maillage de services
Pour bien comprendre le fonctionnement d'un maillage de services, nous devons examiner pourquoi un tel outil a été développé. L'essor de l'architecture de maillage de services est apparu comme une solution à un certain nombre de problèmes liés aux microservices.
De nombreuses équipes de développement sont passées du développement d'applications monolithiques à une architecture de microservices . Cela a divisé une application d'une unité monolithique en un système de services individuels travaillant ensemble. L'application se compose de plusieurs services autonomes avec leurs fonctionnalités individuelles.
La difficulté de développer une telle application est de configurer la meilleure façon pour ces services de communiquer entre eux. Les performances de l'application dépendent de la collaboration des services et du partage des données pour offrir la meilleure expérience utilisateur. Par exemple, une boutique en ligne peut consister en un service de connexion qui communique avec un service d'achat qui nécessite des informations d'une base de données d'inventaire et ainsi de suite.
Alors que les microservices communiquent via des API, trouver la meilleure solution pour résoudre la découverte et routage était important. De plus, les développeurs devaient s'assurer que la communication au sein du système était sécurisée. . Alors que des pare-feu protégeaient l'application des attaques extérieures, il existait un réseau plat et ouvert au sein de l'architecture du microservice.
Avant l'architecture de service maillé, cette tâche était gérée par des équilibreurs de charge . Cependant, ce n'était pas une solution pratique, surtout à plus grande échelle, en raison de problèmes de déploiement et de coût. Le maillage de services a été développé comme une solution ultime pour tous les problèmes mentionnés ci-dessus. Il présentait une couche réseau avec un registre centralisé (plan de contrôle) qui gérait tous les services avec ses proxys sidecar. Ils sont beaucoup plus faciles à configurer et à mettre à l'échelle que les équilibreurs de charge. Les développeurs peuvent augmenter ou réduire les proxys selon les besoins et modifier les règles de routage sans modifier les services.
Avantages du maillage de services
Les principaux avantages du maillage de services sont :
- Sécurité améliorée – L'implémentation d'un maillage de services dans une architecture de microservices améliore la sécurité globale. Cette couche réseau introduit l'autorisation automatique , authentification , chiffrement , et application des règles . Il utilise mutual Transport Layer Security (mTLS) pour s'assurer que toutes les communications de service à service sont sécurisées. Les services s'identifient avec leurs certificats TLS pour établir une connexion. Une fois qu'ils ont validé leur identité, ils établissent un canal chiffré pour le partage de données.
- Contrôle du trafic et visibilité – L'une des principales fonctions d'un maillage de services est d'assurer le contrôle du trafic. Il gère le trafic est-ouest, ainsi que le trafic entre les services. Toutes les communications se font via les proxys side-car, qui sont administrés par le plan de contrôle. Le trafic est acheminé de manière transparente, offrant aux développeurs une meilleure visibilité de tous les échanges de données. Avec des informations plus claires sur les performances de l'application, il est plus facile de repérer les problèmes potentiels au sein du système.
- Observabilité – Comme la plate-forme gère tout le trafic, elle collecte des informations précieuses sur le comportement du trafic et l'interaction des utilisateurs. Avec de telles quantités de données, les analystes commerciaux peuvent planifier une stratégie pour améliorer l'application.
- Les développeurs se concentrent sur le développement d'applications plutôt que sur la mise en réseau – Au lieu que l'équipe de développement configure et gère l'ensemble de la couche réseau, elle peut implémenter un maillage de services dans l'architecture. Bien que la plate-forme nécessite une configuration initiale, elle automatise les tâches chronophages liées à la gestion du réseau. Cela permet aux développeurs de se concentrer sur les microservices. Laisser le maillage de services gérer les interactions entre services permet de gagner du temps et de l'argent tout en améliorant la productivité.
- Résilience – Un maillage de services fournit des fonctionnalités qui aident à créer des applications de microservices résilientes. L'une de ces fonctionnalités est le modèle de disjoncteur qui aide à détecter les pannes et les pics de latence. De plus, un maillage de services utilise l'équilibrage de charge pour la découverte de services et le routage du trafic sur le réseau de microservices. D'autres fonctionnalités qui ajoutent à sa résilience incluent les nouvelles tentatives, les délais d'expiration et les délais.
- Cycles de test et de déploiement plus rapides - L'utilisation de proxys side-car pour la communication pod à pod est beaucoup plus simple et plus rapide à configurer. Au lieu de coder des fonctions redondantes dans chaque service, ils déploient des proxys et les connectent au service. Cela accélère les cycles globaux de développement et de test.
Liste des maillages de services Open Source
Il existe un certain nombre de maillages de services open source disponibles. Istio, Linkerd et Consul sont les plus utilisés.
Vous trouverez ci-dessous plus de détails sur chaque plate-forme.
Istio
Istio est une infrastructure open source conçue par Google, IBM et Lyft. C'est l'une des premières plates-formes de maillage de services. Il utilise Istiod , un plan de contrôle composé de plusieurs composants (Pilot , Citadelle , et Mélangeur ) pour exploiter et configurer le maillage de services. Le plan de données est composé de Envoy proxys, développés en C++ . Les connexions HTTP/TCP sont gérées par la Gateway , l'équilibreur de charge d'Istio. Le service virtuel et règles de destination définir les règles et politiques de routage.
Lien
Linkerd est un maillage de services open source léger, développé par le projet Cloud Native Computing Foundation (CNCF). Il est simple à installer dans un cluster Kubernetes au-dessus de n'importe quelle plate-forme, sans configuration supplémentaire. L'absence de configuration est avantageuse lorsque vous travaillez avec des clusters plus petits. Cependant, les projets à grande échelle nécessitent la possibilité de configuration pour gérer avec succès tous les services du cluster.
Ses proxys side-car sont écrits en Rust . Linkerd utilise le Contrôleur pour le plan de contrôle et le déploiement Web pour le tableau de bord. De plus, il a utilisé Prometheus pour explorer et stocker les métriques et Grafana pour le rendu et l'affichage des tableaux de bord.
Consul Connect
Consul a d'abord été conçu comme un outil de découverte de services et a ensuite évolué vers un maillage de services. Contrairement à Linkerd, Consul Connect inclut beaucoup de configuration, vous donnant plus de contrôle sur l'environnement réseau. En conséquence, il est plus difficile à utiliser que Linkerd. Ce maillage de services open source est indépendant de la plate-forme, ce qui signifie qu'il ne nécessite ni Kubernetes ni Nomad. Pourtant, Nomade simplifie le processus de gestion de la communication des microservices via Consul.
Open Service Mesh de Microsoft
Open Service Mesh (OSM) est un projet CNCF Envoy qui implémente une interface de maillage de services pour gérer et sécuriser les applications de microservices dynamiques. Il utilise Envoy xDS comme conteneurs side-car. Ses principales fonctionnalités incluent le déplacement du trafic, la gestion des certificats, l'activation de mTLS, l'injection side-car automatique et les politiques de contrôle d'accès.
Kuma
Kuma est un plan de contrôle open source pour Kubernetes et les machines virtuelles s'exécutant dans un maillage de services. Il dispose d'une architecture de stratégie L4+L7 qui implémente des fonctionnalités telles que la découverte de services, le routage, la sécurité zéro confiance et l'observabilité. La plate-forme est hautement évolutive et facile à configurer.
Chapeau rouge de maille de service OpenShift
Red Hat a développé son OpenShift Service Mesh pour gérer les applications de microservices. Il fournit plusieurs interfaces pour la mise en réseau et une sécurité accrue avec la contrainte de contexte de sécurité . Il mesure les performances avec Jager et observe les interactions entre les services avec Kiali . En outre, OpenShift inclut l'adaptateur de mixage Istio Red Hat 3scale pour une meilleure sécurité de l'API.
Maillage d'application AWS
Amazon a développé App Mesh, un logiciel gratuit de maillage de services qui gère tous vos services au sein d'une architecture de microservices. Il offre une haute disponibilité et une visibilité de bout en bout pour votre application de microservice. AWS App Mesh s'intègre à AWS Fargate , Amazon ECS , Amazon EC2 , Amazon EKS , Kubernetes , et AWS Outposts . Grâce à ses outils de surveillance, il exporte automatiquement les données de surveillance.
Maillage de services réseau
Network Service Mesh est un projet CNCF Sandbox open source . Il s'agit d'un maillage de services IP hybride/multi-cloud qui utilise un ensemble simple d'API pour faciliter la connectivité. Il établit une connexion entre les services s'exécutant à l'intérieur des conteneurs et avec des points de terminaison externes. Une fois mis en œuvre, il nécessite des modifications minimales de Kubernetes.
En conclusion
Un maillage de services simplifie la gestion et la maintenance d'une application développée à l'aide de l'architecture de microservices. Il améliore la sécurité globale au sein de l'architecture du microservice et assure la visibilité et l'observabilité du flux de trafic. Dans l'ensemble, les fonctionnalités de maillage de services améliorent les performances et accélèrent le cycle de développement. Avec une grande variété de solutions open source disponibles, trouvez celle qui répond le mieux aux besoins de vos applications.
Cloud computing
- Quels sont les meilleurs cours de cloud computing ?
- Quels sont les avantages de la découpe au jet d'eau ?
- Quels sont les avantages du sablage ?
- Quelles sont les principales propriétés du graphite ?
- Quels sont les avantages de la découpe au jet d'eau ?
- Quels sont les 7 types de technologies ?
- Quels sont les différents types de prototypage ?
- Quels sont les 4 types de processus de fabrication ?
- Quels sont les 5 axes d'usinage ?