Bonjour à nouveau!.. à l'approche du lancement du cours nous avons préparé une autre traduction utile.

Le Service Mesh est un niveau d'infrastructure configurable à faible latence, nécessaire pour gérer un grand volume de communications inter-processus réseau entre les interfaces de programmation d'application (API). Le Service Mesh assure une communication rapide, fiable et sécurisée entre les services conteneurisés et souvent éphémÚres de l'infrastructure des applications. Le Service Mesh fournit des fonctionnalités telles que la découverte de services, l'équilibrage de charge, le cryptage, la transparence, le traçage, l'authentification et l'autorisation, ainsi que le support d'un modÚle de coupure automatique (disjoncteur).
Le Service Mesh est gĂ©nĂ©ralement implĂ©mentĂ© en fournissant Ă chaque instance de service une instance de proxy, appelĂ©e Sidecar. Le Sidecar gĂšre les communications entre les services, effectue la surveillance et rĂ©sout les problĂšmes de sĂ©curitĂ©, c'est-Ă -dire tout ce qui peut ĂȘtre abstrait des services individuels. Ainsi, les dĂ©veloppeurs peuvent Ă©crire, maintenir et gĂ©rer le code de l'application dans les services, tandis que les administrateurs systĂšme peuvent travailler avec le Service Mesh et exĂ©cuter l'application.
Istio de Google, IBM et Lyft est actuellement l'architecture de Service Mesh la plus connue. Kubernetes, qui a été développé à l'origine par Google, est maintenant le seul framework d'orchestration de conteneurs soutenu par Istio. Les fournisseurs tentent de créer des versions commerciales supportées d'Istio. Il est intéressant de voir ce qu'ils pourront apporter de nouveau au projet open source.
Cependant, Istio n'est pas la seule option, d'autres implĂ©mentations de Service Mesh Ă©tant en cours de dĂ©veloppement. Le modĂšle sidecar proxy est la rĂ©alisation la plus populaire, comme en tĂ©moignent les projets Buoyant, HashiCorp, Solo.io et d'autres. Il existe Ă©galement des architectures alternatives : l'outillage de Netflix est l'une des approches oĂč la fonctionnalitĂ© du Service Mesh est rĂ©alisĂ©e grĂące aux bibliothĂšques Ribbon, Hysterix, Eureka, Archaius, ainsi qu'Ă des plateformes telles qu'Azure Service Fabric.
Le Service Mesh a également sa propre terminologie pour les composants de services et les fonctions :
- Framework d'orchestration de conteneurs. Au fur et Ă mesure que de plus en plus de conteneurs sont ajoutĂ©s Ă l'infrastructure de l'application, il devient nĂ©cessaire de disposer d'un outil sĂ©parĂ© pour surveiller et gĂ©rer les conteneurs â un cadre d'orchestration de conteneurs. Kubernetes a fortement occupĂ© cette niche, au point que mĂȘme ses principaux concurrents Docker Swarm et Mesosphere DC\/OS proposent une intĂ©gration avec Kubernetes comme alternative.
- Services et instances (pods Kubernetes). Une instance est une seule copie d'un microservice en cours d'exécution. Parfois, une instance correspond à un conteneur. Dans Kubernetes, une instance se compose d'un petit groupe de conteneurs indépendants, appelé pod. Les clients ne s'adressent que rarement directement à une instance ou un pod, ils s'adressent plutÎt à un service, qui représente un ensemble d'instances ou de pods (répliques) identiques, évolutifs et tolérants aux pannes.
- Proxy Sidecar. Le Proxy Sidecar fonctionne avec une seule instance ou un pod. L'idée du Proxy Sidecar est de diriger ou de proxy le trafic entrant d'un conteneur avec lequel il travaille, ainsi que le trafic sortant. Le Sidecar interagit avec d'autres Proxies Sidecar et est géré par le cadre d'orchestration. De nombreuses implémentations de Service Mesh utilisent le Proxy Sidecar pour intercepter et gérer tout le trafic entrant et sortant d'une instance ou d'un pod.
- DĂ©couverte de services. Lorsque qu'une instance doit interagir avec un autre service, elle doit trouver (dĂ©couvrir) une instance fonctionnelle et accessible de ce service. En gĂ©nĂ©ral, l'instance effectue une recherche DNS. Le cadre d'orchestration de conteneurs maintient une liste d'instances prĂȘtes Ă recevoir des requĂȘtes et fournit une interface pour les requĂȘtes DNS.
- Ăquilibrage de charge. La plupart des cadres d'orchestration de conteneurs assurent une rĂ©partition de la charge au niveau 4 (transport). Le Service Mesh met en Ćuvre une rĂ©partition de la charge plus complexe au niveau 7 (application), riche en algorithmes et plus efficace en ce qui concerne la gestion du trafic. Les paramĂštres de rĂ©partition de la charge peuvent ĂȘtre modifiĂ©s via l'API, permettant ainsi d'orchestrer des dĂ©ploiements bleu-vert ou canari.
- Chiffrement. Le Service Mesh peut chiffrer et dĂ©chiffrer les requĂȘtes et les rĂ©ponses, allĂ©geant ce fardeau pour les services. Le Service Mesh peut Ă©galement amĂ©liorer les performances en priorisant ou en rĂ©utilisant des connexions persistantes existantes, ce qui rĂ©duit la nĂ©cessitĂ© de calculs coĂ»teux pour crĂ©er de nouvelles connexions. La mise en Ćuvre la plus courante du chiffrement du trafic est mutual TLS (mTLS), oĂč l'infrastructure Ă clĂ© publique (PKI) gĂ©nĂšre et distribue des certificats et des clĂ©s pour les utiliser dans le Sidecar Proxy.
- L'authentification et l'autorisation. Le Service Mesh peut autoriser et authentifier les requĂȘtes faites depuis l'extĂ©rieur ou Ă l'intĂ©rieur de l'application, en n'envoyant aux instances que des requĂȘtes validĂ©es.
- Support du modÚle de coupure automatique. Le Service Mesh prend en charge , qui isole les instances non saines avant de les ramener progressivement dans le groupe des instances saines si nécessaire.
La partie de l'application Service Mesh qui gÚre le trafic réseau entre les instances s'appelle le Data Plane. La création et le déploiement de la configuration qui gÚre le comportement le Data Plane, se fait grùce à un Control Plane. Control Plane qui inclut généralement ou est conçu pour se connecter à l'API, à la CLI ou à la GUI pour gérer l'application.

Le Control Plane dans le Service Mesh distribue la configuration entre le Sidecar Proxy et le Data Plane.
Souvent, l'architecture Service Mesh est utilisée pour résoudre des tùches opérationnelles complexes à l'aide de conteneurs et de microservices. Les pionniers dans ce domaine sont des entreprises telles que Lyft, Netflix et Twitter, qui fournissent des services fiables à des millions d'utilisateurs dans le monde entier. (). Pour des tùches applicatives moins exigeantes, il sera probablement suffisant d'utiliser des architectures plus simples.
L'architecture Service Mesh ne sera probablement jamais la réponse à toutes les questions liées à l'opération des applications et à leur livraison. Les architectes et les développeurs disposent d'un énorme arsenal d'outils, et un seul d'entre eux est un marteau, qui parmi de nombreuses tùches, doit en résoudre une seule - enfoncer des clous. , par exemple, comprend plusieurs modÚles différents qui offrent un éventail continu d'approches pour résoudre des problÚmes à l'aide de microservices.
Les Ă©lĂ©ments qui se combinent dans l'architecture Service Mesh, tels que NGINX, les conteneurs, Kubernetes et les microservices en tant qu'approche architecturale, peuvent ĂȘtre tout aussi efficacement utilisĂ©s dans des implĂ©mentations sans Service Mesh. Par exemple, Istio a Ă©tĂ© conçu comme une architecture Service Mesh complĂšte, mais sa modularitĂ© signifie que les dĂ©veloppeurs peuvent choisir et appliquer uniquement les composants technologiques dont ils ont besoin. En gardant cela Ă l'esprit, il est essentiel de former une comprĂ©hension claire du concept de Service Mesh, mĂȘme si vous n'ĂȘtes pas sĂ»r de pouvoir un jour le rĂ©aliser pleinement dans une application.
Source : habr.com
