Gravitee : une solution d’API Management

Logo Gravitee

Gravitee est une solution d’API Management, aussi appelée API Plateform, ou API Gateway (mais c’est réducteur).

Cet outil open-source développé par une société lilloise, est un concurrent d’outils du même type comme : Kong, Apigee, WSO2, Tyk.

Il est composé de plusieurs briques indépendantes qui couvrent la plupart des besoins de ce type d’architecture.

Le principal intérêt est l’utilisation de l’API Gateway qui devient le point unique d’accès aux API et va donc centraliser tous les appels. Il peut être coupler à un Access Management qui sera responsable de la gestion de l’authentification et des autorisations.

API Management

Ce composant est divisé en 3 parties :

Gateway

C’est la partie la plus importante, celle qui est responsable des requêtes HTTP entrantes et sortantes.
La gateway encaisse donc tous les appels aux API et elle peut y apporter des transformations (rate limiting, authorization via JWT, cache, SOAP to REST, logging etc.).
C’est elle qui passe ensuite la requête aux API Backend (API de stock, produits, etc.), et qui renvoie la donnée au client.

Plutôt que de laisser la gateway gérer l’authentification, il est possible de mettre en place le composant d’Access Management, la gateway se chargera lors d’un appel de valider le token auprès de ce composant.

Management

C’est via l’API management et son interface que l’on va pouvoir ajouter, paramétrer et publier nos API.
Une API pourra donc disposer d’une documentation (au format swagger ou autre), d’une URL de health-check pour vérifier la bonne santé de celle-ci, et de « plans » destinés à accorder l’accès ou non.

Portail API

Les API publiées sont disponibles via un « portail des API », qui sera le catalogue des API disponibles (et de leur documentation).
Ce catalogue est customisable pour coller au mieux à l’identité graphique souhaitée.

Access Management

Ce composant peut-être utilisé indépendamment de l’API Gateway, et dans un cadre complètement différent.
Son but est de gérer les authentifications et autorisations utilisateurs.
Il se base sur les protocoles OAuth2 et OpenID Connect.

Coupler l’API Gateway à ce composant permet de proposer une authentification OAuth2.
Si on se réfère au schéma précédent, le client va récupérer son token en s’identifiant auprès de l’AM, qui lui renverra un token.
Il pourra ensuite interroger l’API Gateway en passant ce token, qui vérifiera la validité du token à l’aide de l’AM : le token est-il à jour ? Cet utilisateur a-t-il souscrit au plan de l’API demandé ? A-t-il dépassé sa limite de requête ? etc.

Architecture

Pour fonctionner, Gravitee nécessite Elasticsearch et une BDD (MongoDB, PostgreSQL, MariaDB etc).
Exemple d’architecture pour la mise en place la solution Gravitee avec l’API Management et l’Access Management, pour un volume de 100 requêtes / seconde :

  • NGINX en reverse proxy HTTP
  • 2 Gateway APIM (pour un minimum de redondance, mais une seule suffirait à gérer la charge)
  • 2 Gateway AM
  • 3 noeuds Elasticsearch (logs, metrics, health-check, payload)
  • 3 noeuds PostgreSQL (paramétrage des API, comptes utilisateurs)

Gravitee tourne avec Java, il faut donc prévoir de monitorer les JVM (Centreon, Zabbix ou autre).
Il est également gourmand en index Elasticsearch et nécessite de paramétrer l’ILM, via l’interface Kibana par exemple, pour ne pas saturer l’espace disque.

La version entreprise propose un module d’alert engine packagé avec la solution.

Mais aussi…

Au sein de l’API Management, il est également possible d’appliquer des règles d’IP filtering (selon des routes spécifiques par exemple), de coder des morceaux de Groovy pour des besoins spécifiques, voire de coder ses propres plugins en Java.
On peut renseigner plusieurs endpoint d’API Backend, avec une gestion de failover.
Les statistiques et contenu d’appels HTTP sont consultables dans des dashboards.

Pour les plus curieux vous pouvez installer la stack Docker via le docker-compose disponible sur la documentation officielle et parcourir l’ensemble des fonctionnalités :)

Share Button

Laisser un commentaire.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.