Utilisez cette passerelle API open source pour faire évoluer votre API
Adoptez une architecture basée sur API avec Apache APISIX.
Une passerelle API est un point d'entrée unique pour les appels entrants vers une interface de programmation d'application (API). La passerelle regroupe les services demandés puis renvoie la réponse appropriée. Pour rendre votre passerelle API efficace, il est essentiel que vous conceviez une API fiable, efficace et simple. Il s’agit d’un casse-tête architectural, mais vous pouvez le résoudre à condition d’en comprendre les composants les plus importants.
Approche basée sur l'API
Une approche basée sur les API place une API au cœur de la communication entre les applications et les capacités métier auxquelles elles doivent accéder afin de fournir de manière cohérente des fonctionnalités transparentes sur tous les canaux numériques. La connectivité basée sur l'API fait référence à la technique consistant à utiliser une API réutilisable et bien conçue pour relier les données et les applications.
Architecture basée sur l'API
L'architecture basée sur l'API est une approche architecturale qui examine les meilleures façons de réutiliser une API. L'architecture basée sur l'API aborde des éléments tels que :
- Protéger une API contre tout accès non autorisé.
- Garantir que les applications consommatrices peuvent toujours trouver le bon point de terminaison d’API.
- Limitation ou limitation du nombre d'appels effectués vers une API pour garantir une disponibilité continue.
- Prise en charge de l'intégration continue, des tests, de la gestion du cycle de vie, de la surveillance, des opérations, etc.
- Empêcher la propagation des erreurs à travers la pile.
- Surveillance en temps réel d'une API avec des analyses et des informations riches.
- Mettre en œuvre des fonctionnalités commerciales évolutives et flexibles (par exemple, prendre en charge une architecture de microservices.)
Routage des ressources API
La mise en œuvre d'une passerelle API comme point d'entrée unique à tous les services signifie que les consommateurs d'API ne doivent connaître qu'une seule URL. Il incombe à la passerelle API d'acheminer le trafic vers les points de terminaison de service correspondants et d'appliquer les politiques.
(Bobur Umurzokov, CC BY-SA 4.0)
Cela réduit la complexité du côté du consommateur d'API, car les applications clientes n'ont pas besoin de consommer les fonctionnalités de plusieurs points de terminaison HTTP. Il n'est pas non plus nécessaire d'implémenter une couche distincte pour l'authentification, l'autorisation, la limitation et la limitation du débit pour chaque service. La plupart des passerelles API, comme le projet open source Apache APISIX, intègrent déjà ces fonctionnalités de base.
Routage basé sur le contenu de l'API
Un mécanisme de routage basé sur le contenu utilise également une passerelle API pour acheminer les appels en fonction du contenu d'une requête. Par exemple, une requête peut être acheminée en fonction de l'en-tête HTTP ou du corps du message au lieu de simplement son URI cible.
Considérez un scénario dans lequel le partitionnement de base de données est appliqué afin de répartir la charge sur plusieurs instances de base de données. Cette technique est généralement appliquée lorsque le nombre total d’enregistrements stockés est énorme et qu’une seule instance a du mal à gérer la charge.
Une meilleure solution consiste à répartir les enregistrements sur plusieurs instances de base de données. Ensuite, vous implémentez plusieurs services, un pour chaque banque de données unique, et adoptez une passerelle API comme seul point d'entrée à tous les services. Vous pouvez ensuite configurer votre passerelle API pour acheminer les appels vers le service correspondant en fonction d'une clé obtenue soit à partir de l'en-tête HTTP, soit de la charge utile.
(Bobur Umurzokov, CC BY-SA 4.0)
Dans le diagramme ci-dessus, une passerelle API expose une seule ressource /customers
pour plusieurs services client, chacun avec un magasin de données différent.
Géoroutage API
Une solution de géoroutage API achemine un appel API vers la passerelle API la plus proche en fonction de son origine. Afin d'éviter les problèmes de latence dus à la distance (par exemple, une application consommatrice d'Asie appelant une API située en Amérique du Nord), vous pouvez déployer une passerelle API dans plusieurs régions du monde. Vous pouvez utiliser un sous-domaine différent pour chaque passerelle API dans chaque région, permettant à l'application consommatrice de déterminer la passerelle la plus proche en fonction de la logique de l'application. Ensuite, une passerelle API fournit un équilibrage de charge interne pour garantir que les demandes entrantes sont réparties entre les instances disponibles.
(Bobur Umurzokov, CC BY-SA 4.0)
Il est courant d'utiliser un service de gestion du trafic DNS et une passerelle API pour résoudre chaque sous-domaine par rapport à l'équilibreur de charge de la région afin de cibler la passerelle la plus proche.
Agrégateur d'API
Cette technique effectue des opérations (par exemple, des requêtes) sur plusieurs services et renvoie le résultat au service client avec une seule réponse HTTP. Au lieu de demander à une application client d'effectuer plusieurs appels vers plusieurs API, un agrégateur d'API utilise une passerelle API pour le faire au nom du consommateur côté serveur.
Supposons que vous disposiez d’une application mobile qui effectue plusieurs appels vers différentes API. Cela augmente la complexité du code côté client, entraîne une surutilisation des ressources réseau et produit une mauvaise expérience utilisateur en raison d'une latence accrue. Une passerelle API peut accepter toutes les informations requises en entrée, demander une authentification et une validation, et comprendre les structures de données de chaque API avec laquelle elle interagit. Il est également capable de transformer les charges utiles de réponse afin qu'elles puissent être renvoyées à l'application mobile en tant que charge utile uniforme nécessaire au consommateur.
(Bobur Umurzokov, CC BY-SA 4.0)
Authentification centralisée API
Dans cette conception, une passerelle API agit comme une passerelle d'authentification centralisée. En tant qu'authentificateur, une passerelle API recherche les informations d'identification d'accès dans l'en-tête HTTP (telles qu'un jeton de porteur). Elle implémente ensuite une logique métier qui valide ces informations d'identification auprès d'un fournisseur d'identité.
(Bobur Umurzokov, CC BY-SA 4.0)
L'authentification centralisée avec une passerelle API peut résoudre de nombreux problèmes. Il décharge complètement la gestion des utilisateurs d'une application, améliorant ainsi les performances en répondant rapidement aux demandes d'authentification reçues des applications clientes. Apache APISIX propose une variété de plugins pour activer différentes méthodes d'authentification de passerelle API.
(Bobur Umurzokov, CC BY-SA 4.0)
Conversion du format API
La conversion de format API est la possibilité de convertir des charges utiles d'un format à un autre sur le même transport. Par exemple, vous pouvez transférer de XML/SOAP via HTTPS vers JSON via HTTPS, et inversement. Une passerelle API offre des fonctionnalités de prise en charge d'une API REST et peut effectuer des conversions de charge utile et des conversions de transport. Par exemple, une passerelle peut convertir un transport de télémétrie de file d'attente de messages (MQTT) sur TCP (un transport très populaire dans l'IoT) en JSON sur HTTPS.
(Bobur Umurzokov, CC BY-SA 4.0)
Apache APISIX est capable de recevoir une requête HTTP, de la transcoder, puis de la transmettre à un service gRPC. Il récupère la réponse et la renvoie au client au format HTTP via son plug-in gRPC Transcode.
Observabilité des API
Vous savez désormais qu’une passerelle API offre un point de contrôle central pour le trafic entrant vers diverses destinations. Mais il peut également constituer un point central d'observation, car il est particulièrement qualifié pour surveiller tout le trafic circulant entre le client et les réseaux de service. Vous pouvez ajuster une passerelle API afin que les données (journaux structurés, métriques et traces) puissent être collectées pour être utilisées avec des outils de surveillance spécialisés.
Apache APISIX fournit des connecteurs prédéfinis afin que vous puissiez intégrer des outils de surveillance externes. Vous pouvez exploiter ces connecteurs pour collecter des données de journal à partir de votre passerelle API afin d'obtenir des métriques utiles et d'obtenir une visibilité complète sur la façon dont vos services sont utilisés. Vous pouvez également gérer les performances et la sécurité de votre API dans votre environnement.
Mise en cache des API
La mise en cache API est généralement implémentée au sein de la passerelle API. Cela peut réduire le nombre d'appels effectués vers votre point de terminaison et également améliorer la latence des requêtes adressées à votre API en mettant en cache une réponse en amont. Si le cache de la passerelle API dispose d'une nouvelle copie de la ressource demandée, il utilise cette copie pour satisfaire la demande directement au lieu d'envoyer une demande au point de terminaison. Si les données mises en cache ne sont pas trouvées, la requête est transmise aux services en amont prévus.
(Bobur Umurzokov, CC BY-SA 4.0)
Gestion des erreurs API
Les services API peuvent échouer pour plusieurs raisons. Dans de tels scénarios, votre service API doit être suffisamment résilient pour faire face aux pannes prévisibles. Vous voulez également vous assurer que tous les mécanismes de résilience que vous avez mis en place fonctionnent correctement. Cela inclut le code de gestion des erreurs, les disjoncteurs, les contrôles de santé, les solutions de secours, la redondance, etc. Les passerelles API modernes prennent en charge toutes les fonctionnalités de gestion des erreurs les plus courantes, y compris les tentatives automatiques et les délais d'attente.
(Bobur Umurzokov, CC BY-SA 4.0)
Une passerelle API agit comme un orchestrateur qui peut utiliser un rapport d'état pour décider comment gérer le trafic, envoyer des équilibres de charge à un nœud sain et peut échouer rapidement. Il peut également vous alerter en cas de problème. Une passerelle API garantit également que le routage et les autres composants au niveau du réseau fonctionnent ensemble avec succès pour transmettre une demande au processus API. Il vous aide à détecter un problème à un stade précoce et à le résoudre. Un mécanisme d'injection de fautes (comme celui utilisé par Apache APISIX) au niveau de la passerelle API peut être utilisé pour tester la résilience d'une application ou d'une API de microservices contre diverses formes de pannes.
Gestion des versions de l'API
Cela fait référence à la possibilité de définir et d'exécuter plusieurs versions simultanées d'une API. Ceci est particulièrement important, car une API évolue avec le temps. La possibilité de gérer les versions simultanées d'une API permet aux consommateurs d'API de passer progressivement aux versions plus récentes d'une API. Cela signifie que les anciennes versions peuvent être obsolètes et finalement retirées. Ceci est important car une API, comme toute autre application logicielle, doit pouvoir évoluer soit pour prendre en charge de nouvelles fonctionnalités, soit en réponse à des corrections de bugs.
(Bobur Umurzokov, CC BY-SA 4.0)
Vous pouvez utiliser une passerelle API pour implémenter la gestion des versions API. La gestion des versions peut être un en-tête, un paramètre de requête ou un chemin.
Passerelle vers APISIX
Si vous souhaitez faire évoluer vos services API, vous avez besoin d'une passerelle API. Le projet Apache APISIX fournit des fonctionnalités essentielles pour un point d'entrée robuste, et ses avantages sont clairs. Il s'aligne sur une architecture basée sur des API et est susceptible de transformer la façon dont vos clients interagissent avec vos services hébergés.
Cet article a été adapté et republié à partir du blog Apache APISIX avec l'autorisation de l'auteur.