Les maillages de services et les passerelles d'API traditionnelles ont des rôles distincts dans la gestion du trafic réseau au sein d'un système distribué. Les maillages de services se concentrent sur la communication interne entre les microservices, offrant un contrôle granulaire de la gestion du trafic, de l'équilibrage de la charge et de l'observabilité sans nécessiter de modification du code d'application. En revanche, les passerelles d'API servent de points d'entrée centralisés pour les clients externes, en gérant des tâches telles que l'authentification, l'autorisation et le routage des demandes pour les API orientées client.
Un maillage de services est une couche d'infrastructure dédiée qui fournit la connectivité réseau, la sécurité et l'observabilité pour les microservices au sein d'un système distribué. Il élimine les complexités de communication de service à service, telles que l'équilibrage de charge, la coupure de circuit, le changement de trafic et les mécanismes de nouvelle tentative.
La définition d'un maillage de services nécessite d'abord la définition des microservices. Si vous ne savez pas comment fonctionnent les microservices, l'explication d'un maillage de services est comparable à la comparaison entre vol de première classe et autocar, sans avoir jamais entendu parler d'avion. Un maillage de services est une technologie qui a été créée pour améliorer le fonctionnement des applications basées sur les microservices, même si certains prétendent qu'il complique souvent les choses.
Comprendre les microservices
Les microservices sont une approche moderne de l'architecture d'applications logicielles où une application est divisée en composants plus petits, à couplage lâche, appelés « services ». Ensemble, ces microservices fournissent la fonctionnalité globale de l'application. Cette approche contraste avec l'architecture d'application « monolithique » traditionnelle qui combine toutes les fonctionnalités en un seul logiciel.
Netflix est un exemple bien connu de microservices. Il y a dix ans, Netflix était une application logicielle unifiée et gigantesque. Chaque fonctionnalité de Netflix résidait dans une seule base de code massive. Le problème était que la modification d'une partie de l'application nécessitait le redéploiement de l'ensemble du logiciel, ce qui n'était pas une situation idéale pour un logiciel commercialement significatif et très utilisé.
Après la migration vers une architecture de microservices, chaque domaine de Netflix, de la gestion de contenu à la gestion de compte, en passant par les joueurs, existe comme un microservice à part entière. En fait, si nous voulons être vraiment granulaires ici, chacun de ces domaines se compose de plusieurs microservices. Les développeurs peuvent travailler sur chaque microservice de manière isolée. Ils peuvent les modifier, les faire évoluer ou les reconfigurer sans se soucier de leur impact sur d'autres microservices. En théorie, si un microservice tombe en panne, il ne met pas le reste de l'application en panne (bien qu'il existe des scénarios aberrants).
Qu'est-ce qu'un maillage de services ?
En gardant à l'esprit le sens de l'architecture des microservices, réfléchissez à certains des défis qui pourraient survenir lorsque vous essayez de faire fonctionner une application basée sur les microservices de manière fiable. Bien que révolutionnaire dans sa capacité à séparer les applications en services indépendants, cette architecture rencontre un certain nombre de difficultés.
La communication entre les microservices, en particulier, peut être problématique sans la mise en place de certains mécanismes destinés à s'assurer que les microservices savent où se trouvent les autres microservices ou à savoir comment communiquer et comment donner aux administrateurs une idée de ce qui se passe dans l'application. Par exemple, comment le microservice de streaming de Netflix sait-il où rechercher des informations sur le compte d'un abonné ? C'est là qu'un maillage de services entre en jeu. Cependant, pour apaiser les personnes qui ne sont pas fans d'un maillage de services, il est essentiel de souligner que vous n'avez pas strictement besoin d'un maillage de services pour cela.
Un maillage de services est une couche d'infrastructure qui gère les communications entre les microservices sur un réseau. Il contrôle les demandes de services au sein de l'application. Un maillage de services fournit également généralement la découverte de services, le basculement sur incident et l'équilibrage de la charge, ainsi que des fonctions de sécurité telles que le chiffrement.
Comment fonctionne un maillage de services ?
Le rôle d'un maillage de services est d'ajouter la sécurité, l'observabilité et la fiabilité à un système basé sur des microservices. Pour ce faire, il utilise des proxys appelés « side-cars », qui se fixent à chaque microservice (il existe également des maillages de service « non side-car » basés sur eBPF). Les side-cars fonctionnent sur la couche 7 de la pile OSI. Si l'application est basée sur un conteneur, le side-car se connecte à chaque conteneur ou machine virtuelle (VM). Les proxys fonctionnent alors dans un « plan de données » et un « plan de contrôle ».
Le plan de données comprend des services qui s'exécutent à côté de leurs proxys side-car. Pour chaque paire service/side-car, le service traite de la logique métier de l'application, tandis que le proxy se trouve entre le service et les autres services du système. Le proxy side-car gère tout le trafic entrant et sortant du service. Il fournit également des fonctionnalités de connexion telles que MTLS (Mutual transport Layer Security), qui permettent à chaque service du flux de messages de demande/réponse de valider le certificat de l'autre.
Le plan de contrôle est l'endroit où les administrateurs interagissent avec le maillage de services. Il traite de la configuration et du contrôle des proxys, de la gestion de l'administration du maillage de services et de la mise en place et de la coordination des proxys. Les administrateurs travaillent à travers le plan de contrôle pour appliquer des stratégies de contrôle d'accès et définir des règles de routage pour les messages se déplaçant entre les microservices. Le plan de contrôle peut également permettre l'exportation de journaux et d'autres données liées à l'observabilité des microservices.
En travaillant ensemble, le plan de données et le plan de contrôle du maillage de services présentent les avantages suivants :
Sécurité : distribution des stratégies de sécurité, telles que l'authentification et l'autorisation, aux microservices et chiffrement automatique des communications entre les microservices. Un maillage de services peut gérer, surveiller et appliquer des stratégies de sécurité via son plan de contrôle.
Fiabilité : gestion des communications entre les microservices via des proxys side-car dans le plan de contrôle et amélioration de la fiabilité des demandes de service dans le processus. Le maillage de services peut également gérer la gestion de l'équilibrage de charge des pannes, dans le but de renforcer la fiabilité et de fournir une haute disponibilité (HA).
Observabilité : montre aux propriétaires de systèmes les performances des microservices. Un maillage de services peut révéler des microservices qui fonctionnent « à chaud » ou qui présentent un risque de panne. Le plan de contrôle du maillage de services collecte les données de télémétrie concernant les interactions entre les microservices et d'autres composants d'application.
Intégration Kubernetes et maillage de services
Kubernetes, en tant que plateforme d'orchestration de conteneurs largement adoptée, joue un rôle essentiel dans la gestion des microservices. L'intégration d'un maillage de services avec Kubernetes améliore le contrôle, la sécurité et l'observabilité des microservices s'exécutant dans l'écosystème Kubernetes. Kubernetes, associé à des maillages de services tels qu'Istio et Linkerd, permet la découverte automatique des services, l'équilibrage de la charge et la récupération en cas de panne. La nature open source de Kubernetes et des maillages de services permet aux entreprises de bénéficier d'une vaste communauté et d'un ensemble riche d'outils qui évoluent en permanence pour prendre en charge les applications cloud natives. En utilisant Kubernetes comme base pour la gestion des conteneurs et en l'associant à un maillage de services, les entreprises bénéficient d'une meilleure visibilité sur la communication de service à service, réduisent la latence dans les interactions de service et améliorent la résilience globale du système.
Maillage de services et microservices
Il est facile de confondre les microservices avec un maillage de services. Les microservices sont les composants d'un système basé sur les microservices. Le maillage de services peut les connecter. Comme son nom l'indique, le maillage de services repose sur les microservices, comme un tissu conjonctif. Autrement dit, un maillage de services est un « modèle » qui peut être mis en œuvre pour gérer les interconnexions et la logique pertinente qui pilote une application basée sur les microservices.
Pourquoi avez-vous besoin d'un maillage de services ?
Les applications monolithiques ne fonctionnent pas bien, car elles se développent de plus en plus et sont de plus en plus complexes. Il commence à être logique de diviser l'application en microservices. Cette approche s'aligne bien avec les méthodologies de développement d'applications modernes telles que Agile, DevOps et l'intégration continue/la distribution continue (CI/CD). Les équipes de développement logiciel et leurs partenaires dans les tests et les opérations peuvent se concentrer sur le nouveau code pour les microservices individuels et indépendants. Il s'agit généralement de la meilleure solution pour le logiciel et l'ensemble de l'entreprise.
Cependant, à mesure que le nombre de services dans l'application basée sur les microservices augmente, il peut s'avérer difficile de suivre toutes les connexions. Les parties prenantes peuvent avoir du mal à suivre la façon dont chaque service doit se connecter et interagir avec les autres. La surveillance de l'intégrité du service devient difficile. Avec des dizaines, voire des centaines, de microservices à connecter et à superviser, la fiabilité peut également devenir un problème.
Le maillage de services résout ces problèmes en permettant aux développeurs de gérer les communications de service à service dans une couche dédiée de l'infrastructure. Au lieu de gérer des centaines de connexions, une par une, les développeurs peuvent gérer l'ensemble de l'application via des proxys dans le plan de contrôle. Le maillage de services fournit des fonctionnalités de gestion et de surveillance efficaces.
En résumé, les principaux avantages d'un maillage de services sont les suivants :
Simplification de la communication entre les microservices
Facilitation de la détection et de la compréhension des erreurs de communication
Renforcement de la sécurité des applications grâce au chiffrement, à l'authentification et à l'autorisation
Accélération du développement d'applications grâce à des développements, des tests et un déploiement plus rapides de nouveaux microservices
Les défis du maillage de services
Cependant, un maillage de services peut présenter ses propres difficultés. Par exemple, les couches du maillage de services deviennent un autre élément d'un système qui nécessite une infrastructure, une maintenance, un support, etc. Elles peuvent être une source d'épuisement des ressources, ce qui affecte les performances globales du réseau et du matériel. L'ajout de proxys side-car peut potentiellement accroître la complexité dans un environnement déjà complexe. L'exécution d'appels de service via le side-car ajoute une étape, ce qui peut potentiellement ralentir l'application. Il peut y avoir des problèmes liés à l'intégration entre plusieurs architectures de microservices. Le réseau a toujours besoin d'une gestion, de la gestion du maillage de services et des messages entre les services.
Réduction de la latence dans les maillages de service grâce à l'automatisation
L'une des principales préoccupations des maillages de service est le potentiel d'augmentation de la latence en raison de l'ajout de la couche de proxys qui gère la communication de service. Cependant, les maillages de services tels qu'Istio et Linkerd sont équipés de fonctionnalités d'automatisation qui atténuent ces problèmes de latence. Grâce à la gestion intelligente du trafic et aux nouvelles tentatives automatisées, le maillage de services peut rationaliser les voies de communication, garantissant ainsi des délais minimaux. En outre, Istio utilise Envoy pour optimiser les décisions de routage, ce qui permet d'obtenir des réponses plus rapides entre les services en tirant parti de l'automatisation pour contourner les goulots d'étranglement potentiels du réseau. Cela garantit que les applications conservent des performances élevées, même dans les grands environnements cloud natifs où la latence pourrait autrement représenter un problème important. Grâce aux mises à jour et aux optimisations continues de la communauté open source, les maillages de services modernes sont de plus en plus capables d'équilibrer les fonctionnalités avancées de gestion du trafic avec un minimum de frais.
Conclusion
Un maillage de services peut vous aider à réussir avec les microservices. Cette technologie fournit une couche d'infrastructure nécessaire pour gérer les communications entre les services et les fonctions administratives associées. Mis en œuvre de la bonne manière, un maillage de services fournit sécurité, fiabilité et observabilité pour les applications et systèmes basés sur les microservices.
Foire aux questions
L'architecture de maillage de services améliore la sécurité au sein des microservices en fournissant une gamme de fonctionnalités qui garantissent une communication sécurisée et la protection des données. L'une des principales fonctionnalités de sécurité est le protocole mTLS (mutual TLS), qui permet une communication chiffrée entre les services. En outre, les maillages de services permettent de mettre en place des stratégies de contrôle d'accès granulaires, ce qui permet aux administrateurs de définir et d'appliquer des autorisations d'accès au niveau du service.
La mise en œuvre d'un maillage de services peut sembler complexe au départ, mais les avantages à long terme l'emportent sur la complexité initiale.
Choisissez une solution de maillage de services qui s'adapte à vos besoins et à votre infrastructure. Chaque maillage de services possède ses propres fonctionnalités et intégrations, alors évaluez-les en fonction de vos besoins spécifiques. Commencez par une configuration de base en déployant le maillage de services dans un environnement hors production ou sur un sous-ensemble limité de microservices. Définissez des stratégies de contrôle d'accès, des règles de routage du trafic et des configurations de sécurité des applications en fonction des besoins de votre entreprise.
Déployez progressivement le maillage de services dans des microservices et des environnements supplémentaires à mesure que vous gagnez en confiance dans sa stabilité et ses performances. Itérer et améliorer en permanence votre configuration de maillage de services en fonction des commentaires, des indicateurs de performances et de l'évolution des exigences.
Voici quelques facteurs à prendre en compte lors du choix du meilleur maillage de services pour vos besoins :
Soutien de la communauté : Recherchez des maillages de services avec un support actif de la communauté qui peut fournir des ressources précieuses, de la documentation et des contributions communautaires.
Simplicité d'utilisation : Choisissez une solution qui offre des outils intuitifs, une documentation claire et des interfaces conviviales pour simplifier l'adoption et la maintenance continue.
Ensemble de fonctionnalités : Évaluez les fonctionnalités de chaque maillage de services et déterminez si elles correspondent à vos exigences. Recherchez des fonctionnalités de gestion du trafic, des outils d'observation et des fonctions de sécurité.
Compatibilité : Assurez-vous que le maillage de services est compatible avec votre infrastructure existante, y compris les plateformes d'orchestration de conteneurs et les environnements cloud.
Performances et évolutivité : Choisissez une solution capable de gérer votre charge de travail prévue et de l'adapter à la croissance de votre infrastructure.
Pourquoi les clients choisissent-ils Akamai ?
Akamai est l'entreprise de cybersécurité et de Cloud Computing qui soutient et protège l'activité en ligne. Nos solutions de sécurité leaders du marché, nos informations avancées sur les menaces et notre équipe opérationnelle internationale assurent une défense en profondeur pour protéger les données et les applications des entreprises du monde entier. Les solutions de Cloud Computing complètes d'Akamai offrent des performances de pointe à un coût abordable sur la plateforme la plus distribuée au monde. Les grandes entreprises du monde entier font confiance à Akamai pour bénéficier de la fiabilité, de l'évolutivité et de l'expertise de pointe nécessaires pour développer leur activité en toute sécurité.