Pourquoi les microservices ont-ils besoin d'une API Gateway ?

Xiaolan Cheng

February 17, 2023

Ecosystem

Que sont les microservices

L'architecture microservices, souvent appelée microservices, est un type d'architecture utilisé pour développer des applications. Avec les microservices, les grandes applications peuvent être décomposées en plusieurs composants indépendants, chacun ayant ses propres responsabilités. Lors du traitement d'une requête utilisateur, une application basée sur des microservices peut appeler de nombreux microservices internes pour générer conjointement sa réponse. Les microservices sont le résultat du développement d'Internet, et la croissance rapide d'Internet a entraîné une évolution constante de l'architecture des systèmes.

Globalement, l'architecture des systèmes a évolué approximativement de l'architecture monolithique à l'architecture SOA, puis à l'architecture microservices. La progression spécifique et les avantages/inconvénients de chaque architecture sont résumés dans le tableau ci-dessous.

Type d'architectureDescriptionAvantagesInconvénients
Architecture d'application monolithiqueIntègre tout le code fonctionnel dans un seul service.1. Architecture simple avec des coûts de développement et de maintenance du projet faibles.Le couplage de tous les modules ensemble est bénéfique pour le développement et la maintenance de petits projets, mais peut poser des problèmes pour les grands projets, notamment :
1. Les modules du projet sont trop étroitement couplés, et un problème de performance dans un module peut rendre l'ensemble du projet indisponible ;
2. Le projet a besoin d'une meilleure extensibilité.
Architecture SOALe terme signifie "architecture orientée services", qui implique généralement plusieurs services.
Un service existe généralement de manière indépendante dans un processus du système d'exploitation, et la communication entre services est réalisée via des dépendances ou des mécanismes de communication,
En fin de compte, il fournit une série de fonctions.
1. Intégration système : D'un point de vue systémique, elle résout les problèmes de communication entre les systèmes d'entreprise en transformant leurs connexions réseau précédemment désordonnées et non structurées en une configuration en étoile gérée et structurée.
2. Système orienté services : D'un point de vue fonctionnel, elle abstrait la logique métier en services réutilisables et combinables et utilise l'orchestration de services pour réaliser la reconstruction rapide des processus métier.
3. Métier orienté services : Du point de vue de l'entreprise, elle abstrait les fonctions de l'entreprise en services réutilisables et combinables.
1. La centralisation des services crée des dépendances entre services, et un dysfonctionnement dans un service peut déclencher une défaillance en cascade sur d'autres services.
2. Les dépendances et les relations d'invocation entre services sont complexes, rendant les tests et le déploiement difficiles.
Architecture microservicesLes microservices sont la sublimation de l'architecture SOA. L'un des points clés de l'architecture microservices est "la nécessité de componentiser et de serviciser complètement le métier",
Le système métier unique d'origine sera divisé en plusieurs parties pouvant être développées, conçues et déployées indépendamment.
Ces parties fonctionneront comme de petites applications indépendantes. Chaque application collaborera et communiquera avec les autres pour réaliser l'intégration et l'interactivité, ce qui est l'essence d'une architecture microservices.
1. Décentralisation ;
2. Componentisation réalisée via des services ;
3. Division des services et des équipes de développement en fonction des capacités métier ;
4. Infrastructure automatisée (DevOps, déploiement automatisé).
1. Le coût de développement est relativement élevé ;
2. Provoque des problèmes de tolérance aux fautes pour les services ;
3. Provoque des problèmes de cohérence des données ;
4. Implique des transactions distribuées

Par conséquent, les microservices sont un résultat inévitable du développement d'Internet, et l'architecture système de nombreuses entreprises traditionnelles devient progressivement orientée microservices.

Cependant, avec le développement des activités Internet, le nombre d'API augmente également de manière spectaculaire, et les passerelles pour la gestion unifiée des API seront également confrontées à des défis. Choisir une passerelle API plus robuste peut efficacement améliorer les capacités du système en matière de surveillance, de reprise après sinistre, d'authentification et de limitation de débit.

Qu'est-ce qu'une passerelle API ?

La passerelle API fournit une interface unifiée pour les interactions entre les clients et les systèmes de services et sert de point central pour la gestion des requêtes et des réponses. Choisir une passerelle API appropriée peut simplifier le développement et améliorer l'efficacité de l'exploitation et de la gestion du système.

Dans une architecture microservices, une passerelle API sert de solution pour la conception du système en intégrant divers microservices de différents modules et en coordonnant les services de manière unifiée.

En tant qu'aspect d'accès au système, la passerelle API fournit un point d'entrée unifié pour les clients, masque les détails d'implémentation de l'architecture du système et rend les microservices plus conviviaux. Elle intègre également certaines fonctionnalités communes telles que l'authentification, la limitation de débit, et le circuit breaker pour éviter le développement individuel de chaque microservice, améliorer l'efficacité et standardiser le système, comme l'authentification d'identité, la surveillance, l'équilibrage de charge, la limitation de débit, la dégradation et la détection d'applications.

Pourquoi les microservices ont-ils besoin d'une passerelle API ?

Passerelle API dans les microservices

Comme le montre le diagramme ci-dessus, la passerelle API sert de couche intermédiaire entre le client et les microservices. Elle peut fournir des microservices à l'extérieur à une adresse unifiée et acheminer le trafic vers les nœuds de service corrects au sein du cluster interne en fonction des règles appropriées.

Sans passerelle API, les entrées et sorties du trafic ne sont pas unifiées, et le client doit connaître les informations d'accès de tous les services. La signification des microservices n'existera pas. Par conséquent, une passerelle microservices est nécessaire pour une architecture microservices. De plus, la passerelle API joue un rôle vital dans l'observabilité du système, l'authentification d'identité, la stabilité et la découverte de services.

Défis rencontrés par les microservices

La passerelle microservices doit d'abord avoir des capacités de routage d'API. À mesure que le nombre de microservices augmente, le nombre d'API augmente également. La passerelle peut également être utilisée comme un filtre de trafic dans des scénarios spécifiques pour fournir certaines fonctionnalités optionnelles. Par conséquent, des exigences plus élevées sont imposées à la passerelle API microservices, telles que :

  • Observabilité : Par le passé, le dépannage dans les applications monolithiques se faisait souvent en vérifiant les journaux pour les messages d'erreur et les piles d'exceptions. Cependant, dans une architecture microservices avec de nombreux services, le diagnostic des problèmes devient très difficile. Par conséquent, comment surveiller le fonctionnement des microservices et fournir des alertes rapides en cas d'anomalies pose un grand défi aux développeurs.
  • Authentification et autorisation : Dans une architecture microservices, une application est divisée en plusieurs micro-applications, qui doivent authentifier l'accès et être conscientes de l'utilisateur actuel et de ses permissions. La méthode d'authentification dans l'architecture d'application monolithique est inadaptée, surtout lorsque l'accès ne provient pas seulement d'un navigateur mais aussi d'autres appels de services. Dans une architecture microservices, divers scénarios d'authentification doivent être pris en compte, y compris l'accès des applications externes, l'authentification utilisateur-service et l'authentification service-service.
  • Stabilité du système : Si le nombre de requêtes dépasse la capacité de traitement d'un microservice, il peut submerger le service, provoquant même un effet en cascade qui affecte la stabilité globale du système.
  • Découverte de services : La gestion décentralisée des microservices présente également des défis pour la mise en œuvre de l'équilibrage de charge.

Solutions

La passerelle API, en tant que pont intermédiaire entre le client et le serveur, fournit un mécanisme de gestion unifié pour le système de microservices. En plus des fonctions de base telles que la distribution des requêtes, la gestion des API et le routage conditionnel, elle inclut également l'authentification d'identité, la surveillance et l'alerte, l'analyse de traçage, l'équilibrage de charge, la limitation de débit, l'isolation et le circuit breaker.

Authentification d'identité : Le diagramme suivant illustre comment les microservices sont unis avec une passerelle API pour l'authentification d'identité, où toutes les requêtes passent par la passerelle, masquant efficacement les microservices.

Authentification de la passerelle API dans les microservices

Surveillance et alerte/Analyse de traçage :

En tant qu'intermédiaire entre le client et le serveur, la passerelle API est un excellent support pour la surveillance des microservices.

La responsabilité principale de la fonction de surveillance de la passerelle API est de détecter en temps opportun les anomalies de connexion entre la passerelle et les serveurs backend. Les utilisateurs peuvent consulter les informations de journal, les informations de surveillance, le traçage, etc. sur la plateforme de surveillance pour l'API. De plus, toute anomalie survenant sur l'hôte sera automatiquement signalée au panneau de contrôle. Des passerelles spécifiques peuvent émettre des alertes doubles à la fois au client et au serveur.

Diagramme de surveillance et d'analyse de traçage

Limitation de débit, isolation et circuit breaker :

À mesure que l'échelle des activités Internet continue d'augmenter, la concurrence des systèmes augmente également. Plusieurs services sont souvent appelés les uns par les autres, et un lien central peut appeler jusqu'à dix services. Si le RT (temps de réponse) d'un certain service augmente fortement et que les services en amont continuent de demander, un cercle vicieux se produira. Plus les services en amont attendent des résultats, plus les services en amont seront bloqués, et l'ensemble du processus finira par devenir inutilisable, conduisant à une avalanche de services.

Par conséquent, il est nécessaire de réguler et de gérer le trafic entrant. Le diagramme suivant montre comment les systèmes microservices combinent les passerelles API pour effectuer la limitation de débit, l'isolation et le circuit breaker.

Limitation de débit, isolation et circuit breaker

Sélection des passerelles principales

De nombreuses implémentations de passerelles open source sont disponibles dans les microservices, notamment NGINX, Kong, Apache APISIX et Envoy. Pour la pile technologique Java, il existe des options telles que Netflix Zuul, Spring Cloud Gateway, Soul, etc. Mais vous vous demandez peut-être, "Pourquoi choisir Apache APISIX plutôt que NGINX et Kong ?"

Voici une brève comparaison.

PasserellePoints douloureuxAvantages
NGINX1. Un rechargement est nécessaire pour que les modifications prennent effet dans la configuration, ce qui ne peut pas suivre le rythme des progrès des technologies cloud-native.1. Applications classiques ;
2. Stable, fiable et éprouvé ;
3. Haute performance
Apache APISIX1. La documentation n'est pas assez riche ou claire et doit être améliorée.1. Projet de niveau supérieur de la Fondation Apache ;
2. L'architecture technique est plus conforme aux principes cloud-native ;
3. Excellente performance ;
4. Écosystème riche ;
5. En plus de prendre en charge les plugins de développement Lua, il prend également en charge les plugins de langage pour Java, Go, Python, Node, et d'autres.
Kong1. L'utilisation par défaut des bases de données PostgreSQL ou Cassandra rend l'ensemble de l'architecture très volumineuse et peut entraîner des problèmes de haute disponibilité ;
2. Le routage utilise un algorithme de recherche par parcours, ce qui peut entraîner une baisse significative des performances lorsqu'il y a plus de milliers de routes dans la passerelle ;
3. Certaines fonctionnalités importantes nécessitent un paiement ;
1. Le pionnier des passerelles API open source avec une large base d'utilisateurs ;
2. La performance répond aux besoins de la plupart des utilisateurs ;
3. Écosystème riche ;
4. Il prend en charge le développement de plugins Lua et Go ;
Envoy1. Il est développé en C++, ce qui rend le développement secondaire difficile ;
2. En plus de développer des filtres avec C++, il prend également en charge WASM et Lua.
1. Le projet CNCF est plus adapté aux scénarios de maillage de services et prend en charge le déploiement d'architectures multilingues ;
Spring Cloud Gateway1. Bien que la communauté Spring soit mature, il manque des ressources pour Gateway.1. La passerelle fournit une richesse de fonctionnalités prêtes à l'emploi, qui peuvent être utilisées via la configuration SpringBoot ou des appels codés à la main ;
2. Le framework Spring est hautement extensible avec une forte scalabilité, une configuration facile et une bonne maintenabilité ;
3. La communauté Spring est mature ;
4. Facile à utiliser ;
5. Pratique pour la pile technologique Java.

Résumé

Alors que le monde d'Internet continue de se développer, les entreprises évoluent rapidement, entraînant des changements constants dans l'architecture des systèmes. L'architecture microservices a été largement adoptée par de nombreuses entreprises.

À mesure que la quantité de données et d'API des microservices augmente, il est crucial de choisir une excellente passerelle API pour la gouvernance du trafic élevé.

Cet article compare les passerelles API courantes, mettant en évidence leurs avantages et inconvénients respectifs. Supposons que vous soyez en train de sélectionner une technologie de passerelle API, que vous rencontriez des problèmes de performance dans votre système microservices ou que vous cherchiez à construire un système microservices efficace et stable. Dans ce cas, cet article vise à vous fournir des informations utiles.

Tags: