Site icon marclabs.com

Comprendre les microservices et le Mesh avec Istio

Les builds d’applications lorsqu’elles sont décomposées en plusieurs composants de service plus petits sont appelées microservices. Par rapport à la méthode monolithique traditionnelle, une architecture de microservice traite chaque microservice comme une entité/un module autonome, aidant essentiellement à faciliter la maintenance de son code et de l’infrastructure associée. Chaque microservice d’une application peut être écrit dans une pile technologique différente, puis être déployé, optimisé et géré indépendamment.

Bien qu’en théorie, une architecture de microservices profite spécifiquement à la construction d’applications complexes à grande échelle, elle est également largement utilisée pour les constructions d’applications à petite échelle (par exemple, un simple panier d’achat) – dans le but d’évoluer davantage.

Avantages d’une architecture de microservices

Composants d’une architecture de microservices

Une application cloud native moderne s’exécutant sur une architecture de microservices repose sur les composants critiques suivants :

Complexités d’une architecture de microservices

Lorsqu’une grande application est décomposée en plusieurs microservices, chacun utilisant une pile technologique différente (langage, base de données, etc.), nécessitant plusieurs environnements forment une architecture complexe à gérer. Bien que la conteneurisation Docker aide à gérer et à déployer des microservices individuels en divisant chacun en plusieurs processus s’exécutant dans des conteneurs Docker distincts, la communication inter-services reste extrêmement compliquée car vous devez gérer la santé globale du système, la tolérance aux pannes et plusieurs points de défaillance.

Pourquoi avons-nous besoin d’un Service Mesh ?

Maintenant que vous connaissez l’importance d’une communication de service à service dans une architecture de microservices, il semble évident que le canal de communication reste sans faille, sécurisé, hautement disponible et robuste. C’est là qu’intervient un Service Mesh en tant que composant d’infrastructure, qui assure une communication contrôlée de service à service en implémentant plusieurs proxys de service. Un Service Mesh est chargé d’affiner la communication entre les différents services plutôt que d’ajouter de nouvelles fonctionnalités.

Dans un service Mesh, les proxys déployés aux côtés de services individuels permettant la communication inter-services sont largement connus sous le nom de Sidecar Pattern. Les side-cars (proxy) peuvent être conçus pour gérer toutes les fonctionnalités essentielles à la communication inter-services telles que l’équilibrage de charge, la coupure de circuit, la découverte de services, etc.

Diagramme du modèle Sidecar

Grâce à un Service Mesh, vous pouvez

Composants d’une architecture Service Mesh

Untitled-Document--11-

Logique métier

Celui-ci contient la logique d’application principale et le code sous-jacent d’un microservice. Une logique métier conserve également le calcul de l’application ainsi que la logique d’intégration service à service. La logique métier peut être écrite sur n’importe quelle plate-forme et reste complètement indépendante d’un service différent.

Fonctions réseau primitives

Cela inclut les fonctions réseau de base utilisées par un microservice pour lancer un appel réseau et se connecter au proxy sidecar de service mesh. Bien que les principales fonctions réseau parmi les microservices soient gérées via le Service Mesh, un service donné doit contenir les fonctions réseau de base pour se connecter au proxy side-car.

Fonctions du réseau d’applications

Contrairement aux fonctions réseau primitives, ce composant via un proxy de service maintient et gère les fonctions réseau critiques, notamment la coupure de circuits, l’équilibrage de charge, la découverte de services, etc.

Plan de contrôle du maillage de services

Tous les proxys de service mesh sont gérés et contrôlés de manière centralisée par un plan de contrôle. Grâce à un plan de contrôle, vous pouvez spécifier des politiques d’authentification, la génération de métriques et configurer des proxys de service sur le maillage.

Implémentation de Service Mesh avec Istio

Bien qu’il existe plusieurs autres, étant les plus populaires, nous explorerons comment Istio peut être utilisé pour implémenter une architecture Service Mesh pour une application cloud native.

Comme expliqué dans les sections ci-dessus, dans une architecture de microservices, Istio forme une couche d’infrastructure pour connecter, sécuriser et contrôler la communication entre les services distribués. Istio déploie un proxy Istio (appelé side-car Istio) à côté de chaque service avec peu ou pas de modifications de code sur le service en lui-même. Tout le trafic interservices est dirigé vers le proxy Istio, qui utilise des politiques pour contrôler la communication interservices tout en mettant en œuvre des politiques essentielles de déploiements, d’injections de pannes.

Capacités de base d’Istio


Istio étant indépendant de la plate-forme, il peut être exécuté dans divers environnements, notamment Cloud, On-Premise, Kubernetes, etc. Istio prend actuellement en charge :

Composants principaux d’Istio

Istio explained and service mesh routing set-up tutorial

Le service mesh Istio se compose d’un dataplane et d’un controlplane.

Quitter la version mobile