Passerelle API : Un backend pour un frontend
Voyons ce qu’est une passerelle API, pourquoi il est essentiel d’en avoir une et comment elle peut mieux gérer les API. Nous examinerons quelques-unes des meilleures passerelles d’API open-source et gérées pour améliorer les performances et la sécurité.
Kong Gateway
Kong Gateway est la passerelle API cloud-native open-source la plus populaire, construite au-dessus d’un proxy léger. Il est écrit en Lua et fonctionne avec l’aide de Nginx. Il s’agit d’un moteur de modèle qui permet d’accélérer le temps de l’événement. Kong garantit des performances de latence et une évolutivité inégalées pour toutes nos applications microservices, quel que soit leur lieu d’exécution.
Des entreprises telles que Nasdaq, Honeywell, Cisco, FAB, Expedia, Samsung, Siemens et Yahoo Japan utilisent largement la passerelle API Kong.
Voici quelques-unes des fonctionnalités offertes par Kong :
- Authentification
- Contrôle du trafic
- Analyse
- Transformations
- Journalisation
- Sans serveur
- Extensible à l’aide d’une architecture de plugins
Kong dispose d’une excellente documentation et d’une bonne intégration.
Apache APISIX
ApacheAPISIX est initialement né de la technologie chinoise ZhiLiu et, à un stade ultérieur, il est entré dans l’incubateur Apache et est devenu open-source. Le vice-président du projet, Ming Wen, déclare que cette passerelle API résout les différents défis posés par les services cloud-native et microservices.
Apache ApiSix est utilisé par des entreprises telles que 360, HelloTalk, NetEase, TravelSky et bien d’autres.
Apache APISIX est basé sur Nginx et etcd, et il dispose d’un routage dynamique et d’un chargement à chaud des plug-ins, ce qui est particulièrement adapté à la gestion des API dans le cadre du système de microservices.
Tyk
Tyk est une passerelle API open-source prête pour l’entreprise. Vous avez le choix entre l’auto-hébergement et la gestion.
Voici quelques-unes des fonctionnalités prêtes à l’emploi offertes par TYK.
- Authentification
- Quotas et limitation de taux
- Contrôle de version
- Notifications et événements
- Mock out APIs
- Surveillance et analyse détaillées
- Compatibilité ascendante
- GraphQL prêt à l’emploi
TYK est également disponible sur la place de marché AWS. Un bon choix si votre pile d’applications est sur AWS.
Ocelot
Ocelot est une passerelle API .NET.
Ce projet vise à utiliser .NET, à exécuter des microservices ou une architecture orientée service qui a besoin d’un point d’entrée unifié dans son système. Cependant, il fonctionnera avec tout ce qui parle HTTP et fonctionnera sur n’importe quelle plateforme supportée par ASP.NET Core.
Ocelot agit comme un middleware dans un ordre spécifique. Il manipule l’objet HttpRequest dans un état spécifié par sa configuration jusqu’à ce qu’il atteigne un middleware constructeur de requêtes. Celui-ci crée un objet HttpRequestMessage, qui est utilisé pour demander un service en aval. L’intergiciel qui effectue la demande est le dernier élément du pipeline Ocelot. Il n’appelle pas l’intergiciel suivant. Un intergiciel met en correspondance le message HttpResponseMessage avec l’objet HttpResponse et le renvoie au client.
Ocelot offre des fonctionnalités standard telles que le routage, l’authentification, la limitation de débit, la mise en cache, l’équilibrage de charge, etc. Il ne prend pas en charge l’encodage Chunked, la transmission d’un en-tête d’hôte et Swagger.
Goku
Goku API Gateway est un projet parapluie d’EOLINK Inc. Il s’agit d’une passerelle de microservices basée sur Golang qui permet un routage dynamique de haute performance, l’orchestration de services, la gestion de la multi-location, le contrôle d’accès à l’API, etc.
Goku fournit une interface graphique et un système de plug-in pour faciliter la configuration et l’expansion. Outre les fonctionnalités standard, Goku offre des fonctions de clustering, de mise à jour à chaud, d’alerte, de journalisation, etc.
ExpressGateway
ExpressGateway est construit sur Express.js. Express Gateway est un ensemble de composants qui s’articulent de manière déclarative autour d’Express pour répondre au cas d’utilisation de la passerelle API. La puissance d’Express Gateway est exploitée par le riche écosystème autour du middleware Express.
Des entreprises comme Joyent, la Fondation Linux, VIRICITI, Switch Media, Coozy et Musement utilisent largement Express Gateway.
Elle est simple, rapide et offre toutes les fonctionnalités de base.
Gloo
Gloo est une passerelle API et un contrôleur d’entrée de nouvelle génération pour les environnements cloud-native. Il est construit sur Envoy Proxy pour connecter, sécuriser et contrôler le trafic à travers vos services d’application.
Gloo prend en charge la connexion à un large éventail de charges de travail pour sécuriser et gérer cela, et il est exceptionnel dans son routage de niveau fonctionnel. Il est disponible en version open-source et en version entreprise. La version entreprise offre les avantages suivants
- Portail pour les développeurs
- WAF
- Prévention de la perte de données
- Plus de moyens d’authentification
- Limitation avancée du débit et gestion multi-cluster
KrakenD
KrakenD est une passerelle API open-source ultra performante. Sa fonctionnalité principale est de créer une API qui agit comme un agrégateur de plusieurs microservices en un seul point de terminaison, faisant automatiquement le gros du travail pour vous : agréger, transformer, filtrer, décoder, étrangler, authentifier, et plus encore.
Il offre un moyen déclaratif de créer les points d’extrémité. Il est bien structuré et stratifié, et ouvert à l’extension de ses fonctionnalités à l’aide d’un middleware plug-and-play développé par la communauté ou en interne.
KrakenD prétend être plus rapide que Kong et Tyk. Consultez les résultats de l’analyse comparative.
Fusio
Fusio est un système de gestion d’API car il aide à développer des points d’extrémité d’API réels (c’est-à-dire demander et transformer des données à partir d’une base de données). Il ne se limite pas à des requêtes proxy vers une autre API. Il fournit un backend simple et intuitif pour contrôler et gérer votre API.
Voici quelques-unes des fonctionnalités offertes par Fusio :
- Monétisation
- Prise en charge des abonnements
- Génération de spécifications de schémas OAI, RAML
- Documentation
et d’autres fonctionnalités standard de passerelle API.
WSO2
WSO2 est une solution de gestion du cycle de vie complet des API qui peut être exécutée n’importe où. Elle peut être déployée sur site, dans le nuage ou de manière hybride où ses composants peuvent être distribués et déployés sur plusieurs infrastructures dans le nuage et sur site.
Il comprend une passerelle API cloud-native et fournit un opérateur Kubernetes pour convertir facilement des microservices bruts en API gérées. API Manager s’intègre aux réseaux de services et fournit un plan de gestion et un plan de contrôle complets pour la gestion, la surveillance et la monétisation des API et des produits API.
Il prend en charge la publication d’API, la gestion du cycle de vie, le développement d’applications, le contrôle d’accès, la limitation des taux et l’analyse dans un système intégré propre.
Apigee
Apigee est une plateforme de gestion d’API cross-cloud de Google Cloud.
Elle se présente sous les formes suivantes :
- Apigee : une solution SaaS hébergée où vous payez pour ce que vous utilisez. Vous vous concentrez sur le développement de votre activité et vous vous déchargez de la gestion de l’environnement Apigee sur GCP.
- Apigeehybride : vous permet de gérer les API sur site, sur Google Cloud Platform (GCP), ou un mélange des deux.
Apigee propose une gestion des API de bout en bout, qui s’accompagne d’une monétisation et d’une surveillance intégrée.
Cloud Endpoints
Un autre produit de Google Cloud.
Endpoints est une version allégée d’Apigee par Google Cloud. Elle est la mieux adaptée aux développeurs pour développer, déployer et gérer des API sur n’importe quel back-end de Google Cloud. Il fournit des outils et des bibliothèques à ses clients à partir de l’application App Engine.
Google Cloud Endpoints s’intègre étroitement avec d’autres produits tels que Trace and Logging pour la surveillance, Auth0 et Firebase pour l’authentification, GKE et App Engine pour le déploiement automatisé, etc.
Passerelle API d’Amazon
AWS peut offrir tout ce dont vous avez besoin pour exécuter vos applications.
Il en va de même pour API.
Amazon API Gateway est un service entièrement géré qui permet aux développeurs de créer – > publier -> maintenir et sécuriser facilement des API à n’importe quelle échelle. Il prend en charge les API RESTful et WebSocket et nous permet d’établir une communication bidirectionnelle en temps réel.
Vous trouverez ci-dessous la représentation imagée d’Amazon, qui illustre le fonctionnement de la passerelle API d’Amazon.
Si vos microservices ou votre API sont déjà hébergés sur AWS, il est logique d’intégrer Amazon API Gateway. Ils offrent 1 million d’appels API dans le cadre du niveau GRATUIT, ce qui vous permet de voir comment cela fonctionne.
Azure
Pourquoi laisser Azure de côté ?
Microsoft Azure offre une gestion des API de bout en bout dans le nuage, sur site ou hybride. Vous pouvez gérer l’API de manière programmatique via l’API REST et le SDK.
Bonne nouvelle si vous utilisez SOAP. Vous pouvez importer le langage de description des services web (WSDL) de leur service SOAP, et Azure créera un front-end SOAP. Azure propose toutes les fonctionnalités standard, y compris la monétisation. N’hésitez pas à l’essayer pour découvrir la plateforme.
MuleSoft
Gérez les API et améliorez l’efficacité de votre entreprise avec MuleSoft. Il vous permet de créer, de sécuriser, de gérer et de gouverner des API universelles depuis n’importe quel endroit.
Vous pouvez découvrir les API à l’aide de pipelines CI/CD et d’une nouvelle interface utilisateur pour accélérer la livraison de vos applications. MuleSoft vous permet de concevoir des API à l’aide de différents protocoles tout en respectant les normes de gouvernance et en maintenant une qualité élevée.
Collectez des données à partir des API pour explorer, servir et unifier toutes vos données dans une requête GraphQL. Cela peut être fait avec l’aide de DataGraph. Avec la passerelle flexible de MuleSoft, vous pouvez gérer votre service sans vous soucier de la taille, du nuage ou de la langue.
MuleSoft offre un panneau de contrôle où vous pouvez analyser, gérer et sécuriser vos API, microservices et utilisateurs. Faites évoluer les derniers modèles commerciaux et flux de revenus pour maximiser la valeur de vos API en vous concentrant sur l’adoption, les communautés d’API et le parcours de consommation.
De plus, MuleSoft fournit Anypoint Exchange pour intégrer vos API à une source unique de vérité afin d’alimenter votre entreprise. Vous pouvez mettre en place la gouvernance des API à l’aide d’Anypoint API Governance sans frais de développement.
Créez un compte dans MuleSoft et faites un essai gratuit pour explorer ses fonctionnalités.
Boomi
Ne pensez plus à la complexité lorsque vous disposez du service de gestion d’API Boomi qui peut aider votre entreprise à déployer, gérer et sécuriser vos API de manière efficace.
Le service de gestion des API de Boomi peut gérer le cycle de vie complet des API sur n’importe quelle plateforme. Il vous permet de configurer vos API et d’implémenter les intégrations facilement. Il dispose d’une interface intelligente et facile à utiliser qui rend les données disponibles pour votre entreprise à chaque fois en utilisant son API Proxy.
Publiez, contrôlez et régissez les API, que ce soit dans le nuage, à la périphérie ou sur site, et gérez et contrôlez efficacement l’accès aux données. Boomi vous permet de créer des expériences omnicanales sur les réseaux sociaux, IoT et mobiles. Vous pouvez utiliser son portail de développeurs API pour accéder facilement aux données à partir de vos applications existantes.
Boomi offre des fonctionnalités sans fin, telles que la médiation, le versionnage, l’engagement, l’authentification, la gestion des politiques, la surveillance et la gestion des applications. Vous pouvez gérer différentes versions d’API en fonction de vos besoins et garantir les actions appropriées. Il vous permet également de déployer des API avec un système d’authentification tiers.
En intégrant un simple assistant, Boomi AtmoSphere, vous pouvez facilement concevoir et gérer des API.
Profitez d’une période d’essai de 30 jours pour comprendre Boomi en profondeur et explorer ses fonctionnalités de gestion des API.
Qu’est-ce que la passerelle API ?
Une passerelle API est un concept important dans l’architecture d’un microservice. Elle constitue un point d’entrée pour les clients externes (tout ce qui ne fait pas partie du système de microservices). Il s’agit d’un composant qui sert de point d’entrée pour une application.
En d’autres termes, une passerelle API est un serveur de gestion d’API qui dispose d’informations sur les points d’extrémité. Elle est également capable d’effectuer des opérations d’authentification, de limitation de débit, d’équilibrage de charge, etc.
Pour mieux comprendre ce qu’est une passerelle API, nous devons savoir pourquoi il est essentiel d’avoir une passerelle API.
Pourquoi avons-nous besoin d’une passerelle API ?
Pour comprendre la nécessité d’une passerelle API, examinons un cas d’utilisation d’une application decommerce électronique.
Étude de cas
Prenons l’exemple d’une page complexe (disons une page produit) d’une application de commerce électronique. Si nous regardons la page ci-dessous d’une liste de produits Amazon, nous pouvons voir qu’un grand nombre d’informations doivent être rendues par cette page spécifique.
À titre d’illustration, dressons la liste de tous les microservices dont nous pourrions avoir besoin pour rendre la page susmentionnée.
Considérons que Search Product, Inventory, Shipping, Rating and Reviews, Recommendation Engine, Merchants, and Finance and Insurance sont les sept (7) microservices utilisés pour le rendu de la page ci-dessus.
P.S. : Les sept (7) microservices ci-dessus ne sont qu’une hypothèse pour expliquer le concept de passerelle API. En réalité, Amazon pourrait avoir un nombre différent de microservices.
Le problème
Étant donné que ces microservices ont été déployés séparément sur un serveur différent, si un client souhaite accéder à ces services, au moins sept (7) appels doivent être demandés pour une seule page.
Mais est-ce vraiment une bonne approche ?
Je ne pense pas que ce soit une approche recommandée parce que nous devons faire sept appels différents, ce qui aurait un impact certain sur les performances, la consommation de ressources, le temps de chargement, etc. Le client est également étroitement lié à tous les services, et supposons que nous devions séparer les microservices Reviews et Rating dans deux services différents, nous devrons mettre à jour le code du client. Le client doit faire un appel pour obtenir les avis et un appel pour obtenir les évaluations, ce qui n’est vraiment pas la meilleure façon de procéder.
La solution
Quelle est donc l’approche recommandée ?
Il s’agit d’une passerelle API.
Dans cette approche, nous disposons d’une couche entre le client et les microservices, appelée passerelle API. Il s’agit d’un service frontal pour tous les microservices. Tout client qui souhaite accéder aux microservices doit appeler la passerelle API. La passerelle API, à son tour, appelle tous les microservices et obtient la réponse dont elle a besoin. Ce processus est appelé composition d’API.
En résumé, une passerelle API se situe entre le client et les microservices et agit comme une passerelle pour tous les microservices.
En outre, l’utilisation d’une passerelle API présente de nombreux avantages.
Avantages d’une passerelle API
Les passerelles d’API nous permettent de mettre en œuvre des tests A/B, la mise en cache, la gestion des quotas d’accès, la surveillance de la santé de l’API, le versionnement de l’API, les tests Chaos monkey, la monétisation et bien d’autres choses encore. Examinons quelques-uns des avantages suivants.
Sécurité 🛡️
Chaque fois qu’un appel d’API est effectué, il doit accéder aux services en utilisant des adresses IP publiques. Cela présente des risques.
En optant pour des passerelles API, vous pouvez accéder à ces microservices en utilisant uniquement des adresses IP privées. Les transactions de données sont ainsi plus sûres. En outre, l’utilisation d’une passerelle API protège également les données contre les attaques malveillantes et les attaques DDoS.
Pour garantir la sécurité, un certificat TLS est nécessaire, API Gateway gère tout cela en gardant toutes nos API derrière une seule IP statique ou un seul domaine et en les protégeant avec des clés, des jetons et un filtrage IP.
Authentification, autorisation et tolérance aux fautes 🔐
Il est important de garantir l’authentification et l’autorisation de l’utilisateur qui se connecte aux applications. La passerelle API facilite les choses en étant un point d’entrée unique et en satisfaisant facilement à toutes les exigences. Ainsi, elle ne permet qu’aux utilisateurs autorisés de se connecter, et aux utilisateurs authentifiés d’apporter des modifications, ce qui permet de gagner en tolérance aux pannes.
Équilibrage des charges et routage 🚏
Dans le cas où de nombreuses demandes arrivent et augmentent le trafic, API Gateway aide à s’en occuper. Cela se fait en créant des multiplications de services et en les appelant comme Round-Robin. Elle peut gérer et acheminer les demandes des clients en fonction de la segmentation des utilisateurs. Ainsi, une qualité ou une vitesse de contenu différente est fournie aux différents utilisateurs.
Prenons un cas d’utilisation où deux microservices sont définis pour renvoyer des images/vidéos de faible qualité et des images/vidéos de haute qualité pour un ordinateur de bureau et un téléphone portable, respectivement.
Dans ce cas, nous pouvons configurer une passerelle API de manière à ce qu’elle agisse comme un routeur et que, si la demande provient d’un téléphone portable, elle achemine cette demande vers le service d’images/vidéos de faible qualité, et si la demande provient d’un ordinateur de bureau, elle peut l’acheminer vers le service d’images/vidéos de haute qualité. Ce routage peut être effectué sur la base d’en-têtes, de chemins, de paramètres, etc.
Isolation
Si un ou plusieurs microservices ont été ajoutés à l’application ou supprimés, nous ne mettrons pas à jour le code client. Dans ce cas, nous devons apporter quelques modifications à la passerelle API elle-même pour effectuer un appel en fonction des microservices mis à jour.
Proxy inverse et mise en cache
Servir un fichier statique (HTML, JS, CSS, polices) par un microservice n’est pas la meilleure utilisation, dans ce cas, nous pouvons déplacer ces fichiers vers la passerelle API.
Dans ce cas, nous pouvons déplacer ces fichiers vers la passerelle API. Une passerelle API peut conserver tous les contenus statiques et servir directement le client. De même, considérez un service qui évalue les produits en tendance, et ces tendances sont calculées toutes les heures ou tous les jours. Une fois que la tendance est calculée pour le reste du temps, le service renvoie la même réponse à plusieurs reprises. Dans ce cas, une passerelle API dispose d’une fonction appelée cache de réponse, dans laquelle nous pouvons mentionner une URL et un seuil de temps pour lequel les réponses doivent être mises en cache.
Adaptateur de protocole
Si nous voulons tirer parti d’un protocole tel que le socket web ou une version plus récente de HTTP, c’est-à-dire HTTP/2, et même si nos services dorsaux ne sont pas prêts ou compatibles avec HTTP/2 ou le socket web, une passerelle API peut se charger de convertir un protocole plus récent en un protocole plus ancien. Elle peut agir comme un adaptateur de protocole.
Conclusion
Une fois que votre API est prête, n’oubliez pas de la surveiller et de la sécuriser.
Ce qui précède devrait vous donner une idée des passerelles API et des solutions de gestion disponibles. Si votre budget est serré, vous pouvez essayer les logiciels libres. Le mieux est d’en installer quelques-unes pour voir ce qui vous convient.