Dans une architecture de microservices, un client peut interagir avec plusieurs services frontaux. Étant donné ce fait, comment un client sait-il quels points de terminaison appeler ? Que se passe-t-il lorsque de nouveaux services sont introduits ou que les services existants sont refactorisé ? Comment les services gèrent-ils l’arrêt SSL, tls mutuel, l’authentification et d’autres problèmes ? Une passerelle d’API peut aider à relever ces défis.
diagramme
Télécharger un fichier Visio de cette architecture.
Qu’est-ce qu’une passerelle d’API ?
Une passerelle API fournit un point d’entrée centralisé pour gérer les interactions entre les clients et les services d’application. Il agit en tant que proxy inverse et achemine les demandes des clients vers les services appropriés. Il peut également effectuer différentes tâches croisées telles que l’authentification, l’arrêt SSL, le protocole TLS mutuel et la limitation du débit.
Pourquoi utiliser une passerelle d’API ?
Une passerelle d’API simplifie la communication, améliore les interactions client et centralise la gestion des responsabilités courantes au niveau du service. Il agit comme intermédiaire et empêche l’exposition directe des services d’application aux clients. Sans passerelle d’API, les clients doivent communiquer directement avec des services d’application individuels, ce qui peut présenter les défis suivants :
code client complexe: il peut entraîner un code client complexe. Les clients doivent suivre plusieurs points de terminaison et gérer les défaillances de manière résiliente.
couplage serré: il crée un couplage entre le client et le serveur principal. Les clients doivent comprendre la décomposition des services individuels, compliquer la maintenance et la refactorisation des services.
latence accrue: une seule opération peut nécessiter des appels à plusieurs services. Le résultat peut être plusieurs allers-retours réseau entre le client et le serveur, ce qui ajoute une latence significative.
gestion redondante des problèmes: chaque service public doit gérer des problèmes tels que l’authentification, SSL et la limitation du débit client.
limitations du protocole: les services doivent exposer un protocole convivial client tel que HTTP ou WebSocket. Cette exposition limite protocoles de communication options.
surface d’attaque étendue: les points de terminaison publics augmentent la surface d’attaque potentielle et nécessitent un renforcement.
Comment utiliser une passerelle d’API
Une passerelle d’API peut être adaptée aux exigences de votre application à l’aide de modèles de conception spécifiques. Ces modèles de conception traitent des fonctionnalités clés telles que le routage, l’agrégation des requêtes et les problèmes de coupe croisée :
de routage de passerelle . Vous pouvez utiliser une passerelle d’API en tant que proxy inverse pour router les demandes clientes vers différents services d’application. La passerelle d’API utilise le routage de couche 7 et fournit un point de terminaison unique pour les clients à utiliser. Utilisez le routage de passerelle d’API lorsque vous souhaitez dissocier les clients des services d’application.
d’agrégation de passerelle . Vous pouvez utiliser la passerelle d’API pour agréger plusieurs demandes clientes en une seule requête. Utilisez ce modèle lorsqu’une seule opération nécessite des appels à plusieurs services d’application. Dans l’agrégation d’API, le client envoie une requête à la passerelle d’API. Ensuite, la passerelle d’API achemine les demandes vers les différents services requis pour les opérations. Enfin, la passerelle d’API agrège les résultats et les renvoie au client. L’agrégation permet de réduire les conversations entre le client et les services d’application.
passerelle de déchargement. Vous pouvez utiliser une passerelle d’API pour fournir des fonctionnalités croisées, de sorte que les services individuels n’ont pas besoin de le fournir. Il peut être utile de consolider les fonctionnalités croisées en un seul endroit, plutôt que de rendre chaque service responsable. Voici des exemples de fonctionnalités que vous pouvez décharger sur une passerelle d’API :
- Arrêt SSL
- TLS mutuel
- Authentification
- Liste d’adresses IP autorisées ou liste de blocs
- Limitation du débit client (limitation)
- Journalisation et surveillance
- Mise en cache des réponses
- Pare-feu d’applications web
- Compression GZIP
- Maintenance du contenu statique
Options de passerelle d’API
Voici quelques options permettant d’implémenter une passerelle API dans votre application.
serveur proxy inverse. Nginx et HAProxy sont des offres de proxy inverse open source. Ils prennent en charge des fonctionnalités telles que l’équilibrage de charge, l’arrêt SSL et le routage de couche 7. Ils disposent de versions gratuites et d’éditions payantes qui fournissent des fonctionnalités et des options de support supplémentaires. Ces produits sont matures avec des ensembles de fonctionnalités riches, des performances élevées et extensibles.
contrôleur d’entrée de maillage de service. Si vous utilisez un maillage de service, évaluez les fonctionnalités du contrôleur d’entrée spécifiques à ce maillage de service. Recherchez les modules complémentaires pris en charge par AKS comme Istio et Open Service Mesh. Recherchez des projets open source tiers comme Linkerd ou Consul Connect. Par exemple, le contrôleur d’entrée Istio prend en charge le routage de couche 7, les redirections HTTP, les nouvelles tentatives et d’autres fonctionnalités.
Azure Application Gateway . Application Gateway est un service d’équilibrage de charge managé. Il fournit un routage de couche 7, une terminaison SSL et un pare-feu d’applications web (WAF).
azure Front Door. Azure Front Door est un réseau de distribution de contenu (CDN). Il utilise des points de présence globaux et locaux pour fournir un accès rapide, fiable et sécurisé au contenu web statique et dynamique de vos applications.
gestion des API Azure. Gestion des API est une solution managée pour la publication d’API sur des clients externes et internes. Il fournit des fonctionnalités pour gérer les API publiques, notamment la limitation de débit, les restrictions IP et l’authentification à l’aide de l’ID Microsoft Entra ou d’autres fournisseurs d’identité. Gestion des API n’effectue aucun équilibrage de charge. Vous devez donc l’utiliser avec un équilibreur de charge, tel qu’Azure Application Gateway ou un proxy inverse. Pour plus d’informations, consultez Gestion des API avec Azure Application Gateway.
Choisir une technologie de passerelle d’API
Lors de la sélection d’une passerelle d’API, tenez compte des facteurs suivants :
Prendre en charge toutes les exigences. Choisissez une passerelle d’API qui prend en charge vos fonctionnalités requises. Toutes les options de passerelle d’API précédentes prennent en charge le routage de couche 7. Mais leur prise en charge d’autres fonctionnalités, telles que l’authentification, la limitation de débit et l’arrêt SSL, peuvent varier. Évaluez si une passerelle unique répond à vos besoins ou si plusieurs passerelles sont nécessaires.
Préférez les offres intégrées. Utilisez la passerelle d’API intégrée et les solutions d’entrée fournies par votre plateforme, telles qu’Azure Container Apps et AKS, chaque fois qu’elles répondent à vos exigences de sécurité et de contrôle. Utilisez uniquement une passerelle personnalisée si les options intégrées n’ont pas de flexibilité nécessaire. Les solutions personnalisées nécessitent un modèle de gouvernance, tel que GitOps, pour gérer efficacement son cycle de vie.
Choisissez le modèle de déploiement approprié. Utilisez des services managés comme Azure Application Gateway et Gestion des API Azure pour réduire la surcharge opérationnelle. Si vous utilisez des proxys inverses à usage général ou des équilibreurs de charge, déployez-les d’une manière qui s’aligne sur votre architecture. Vous pouvez déployer des passerelles d’API à usage général sur des machines virtuelles dédiées ou à l’intérieur d’un cluster AKS dans leurs offres de contrôleur d’entrée. Pour isoler la passerelle d’API de la charge de travail, vous pouvez les déployer en dehors du cluster, mais ce déploiement augmente la complexité de gestion.
Gérer les modifications. Lorsque vous mettez à jour des services ou ajoutez de nouveaux services, vous devrez peut-être mettre à jour les règles de routage de passerelle. Implémentez des processus ou des flux de travail pour gérer les règles de routage lors de l’ajout ou de la modification de services, de certificats SSL, de listes d’autorisation IP et de configurations de sécurité. Utilisez des outils d’automatisation et d’infrastructure en tant que code pour simplifier la gestion des passerelles d’API.
Étapes suivantes
Les articles précédents ont exploré les interfaces entre microservices et entre les microservices et les applications clientes. Ces interfaces traitent chaque service comme une unité autonome et opaque. Un principe critique de l’architecture des microservices est que les services ne doivent jamais exposer des détails internes sur la façon dont ils gèrent les données. Cette approche a des implications significatives pour maintenir l’intégrité et la cohérence des données, qui est l’objet de l’article suivant.
considérations relatives aux données pour les microservices