Les passerelles API sont une réponse à un résultat découlant des architectures microservices, à savoir la prolifération des services et de leurs interfaces. L'objectif principal d'une passerelle API est de simplifier et de stabiliser les interfaces exposées aux clients (mobiles, navigateurs...). De plus, en raison de la position unique d'une passerelle API dans l'architecture SI, divers avantages complémentaires sont activés, tels que la surveillance, la journalisation, la sécurité, l'équilibrage de charge et la manipulation du trafic. Une passerelle API est similaire au design pattern Facade, mais appliquée au niveau du réseau. L'objectif dans les deux cas est de fournir un profil d'interface simplifié cachant la complexité du système. Une façon de s'en rendre compte est schématisée ci-dessous.

Passerelle API simple

Schématisation du principe de passerelle API basique. (crédit :IDG)

Des interfaces simplifiées

Une passerelle API permet de dissocier les clients des services et, ce faisant, fournit un point de contact unique pour le trafic entrant et sortant. Un back-end de microservice peut impliquer de nombreux services interagissant ensemble et pouvant être hétérogènes au niveau de leurs URL et protocoles. Une passerelle API fournit ainsi une interface simplifiée avec laquelle les clients peuvent interagir. Dans un sens, cela fonctionne comme un « proxy de simplification ». De plus, une passerelle API peut être plus sophistiquée, capable de prendre une seule demande, récupérer les ressources nécessaires et les combiner en une seule réponse. Par exemple, une demande de profil utilisateur peut récupérer les détails s'y rapportant, les messages récents et centres d'intérêt. La passerelle pourrait prendre en charge une demande unique, y rattacher les données nécessaires à chaque service, puis les unifier en une seule réponse.

Ce type de capacité nécessite une orchestration au niveau de l'architecture et a des implications pour d'autres composants de microservices tels que des services mesh. Étant donné qu'une passerelle API est capable de transformer les protocoles et l'URL utilisés sur le back-end, elle est bien placée pour accompagner la migration des services. C'est-à-dire qu'une passerelle API peut dans une certaine mesure masquer les modifications qui se produisant sur le back-end.

Un stabilisateur d'API

Une passerelle API peut également améliorer la stabilité de l'API avec laquelle les clients interagissent au fur et à mesure du développement des services. La passerelle peut atténuer les modifications subtiles qui pourraient autrement interrompre les clients ou les obliger à changer. Et il est possible pour les développeurs d'utiliser la passerelle pour diriger une partie du trafic vers les nouvelles versions des services afin de les tester. En général, une API gateway fournit un point de contact unique pour les clients, ce qui minimise les effets des modifications sur les services principaux. Plus les services sont complexes, et plus ils changent fréquemment, plus les capacités de la passerelle deviennent précieuses. Notez qu'une passerelle API peut également servir à la simplifier, même pour les clients internes. Autrement dit, une passerelle peut être utilisée pour rendre la topologie au sein d'une architecture de microservices elle-même plus facile à gérer.

Le rôle d’une passerelle API dans l’architecture la rend également idéalement positionnée pour certains types de surveillance, d’alerte et de traçage. De même, la collecte de statistiques au niveau de la passerelle est utile pour une analyse large du trafic et de l'utilisation. Le schéma ci-dessous montre ce rôle pour la passerelle. Il existe plusieurs façons de gérer l'analyse de la journalisation de l'API gateway, par exemple en utilisant Amazon Elasticsearch Service.

Passerelle API avec journalisation

Passerelle API avec journalisation. (crédit : IDG)

Pas d'impasse sur la sécurité

Étant donné que la passerelle est le point d'entrée unique dans le système, elle peut s'adapter au durcissement des règles système. Ce fonctionnement est similaire au rôle d'un jump host que l'on retrouve dans les meilleures pratiques d'administration de systèmes. Les services sont alors en mesure de se concentrer principalement sur la sécurisation de la communication avec la passerelle API unique, plus simple que d'avoir à gérer plusieurs API publiques. Ces pratiques s'adaptent à la sécurité au niveau de l'infrastructure. Cependant, une passerelle peut également supporter des workloads d'authentification et d'autorisation au niveau de l'entreprise. Cela nécessite de l'orchestration de services mais peut simplifier la situation en concentrant la logique de sécurité en un seul endroit. Un principe qui s'adosse naturellement lié à un usage de paiement à la demande car la passerelle sera liée aux comptes clients utilisés pour la facturation.

Des solutions de passerelles API variées

Les solutions de passerelle API se divisent en deux grandes catégories : gérées et personnalisées. Dans le premier cas, chaque fournisseur de cloud propose un produit. Ceux-ci se prénomment - sans grande imagination - « Amazon API Gateway »,« Azure Application Gateway » ou encore « Google Cloud API Gateway ». Si on souhaite se lancer seul dans l'aventure, pas de souci, dans l'écosystème Java par exemple, Spring Cloud fournit la passerelle API éponyme sachant que Nginx constitue une autre bonne option.

De nombreux aspects et bénéfices qu'une passerelle API peut proposer ont été abordés. Cependant, il est important de toujours garder à l’esprit ce compromis : une passerelle est un autre élément d’infrastructure nécessitant une maintenance. Elle doit en particulier être synchronisée avec les modifications apportées au back-end et aux clients. Cela dit, si votre complexité d'architecture ou analyse de rentabilité le justifie, une passerelle API peut s'avérer être une solution parfaite.