Connecter Drupal et APIGee pour distribuer et monétiser vos API's - Le cas du portail de développeurs

Vendredi 15 Octobre 2021

En collaboration avec les équipes techniques de Michelin, nous nous sommes frottés aux différents connecteurs à la solution APIgee, proposée par Google. Cette solution permet d'administrer la distribution de l'accès et la monétisation des API's privées de ses utilisateurs. Nous avons préféré les modules à la distribution, voici pourquoi...

Photo illustrant un développeur Drupal dans la console

APIGee, c'est quoi ?

Apigee Corporation est une société de développement informatique dans les domaines de l'API management et de l'analyse prédictive qui a été achetée par Google en 2016. 

Apigee est une plate-forme de développement et de gestion d'API. Elle fournit une abstraction ou une interface pour gérer, en toute sécurité, la diffusion des API's d'un éditeur. Elle semble s'imposer comme la référence, actuellement, sur ce segment.

Principales fonctionnalités

Déploiement avec Apigee hybrid
Avec Apigee hybrid, l'éditeur peut choisir l'emplacement d'hébergement de ses API's : sur site, dans Google Cloud ou hybride. Il gère l'environnement de production, peut disposer de ses infrastructures de sécurité tout en monitorant le portail des développeurs.

Intégration orientée API avec Apigee Integration
L'éditeur connecte les données et les applications et les exposent sous forme d'API's. Il dispose d'une plate-forme unifiée sur le cloud. 

Monétisation des ressources numériques avec des API
APIgee permet de monétiser les ressources numériques pour en faire une nouvelle source de revenus, en connectant des solutions de paiement et leur intégration aux portails de développeurs.  

Gestion de microservices en tant qu'API
La plate-forme de gestion d'API Apigee vient compléter Istio et Envoy en étendant la gestion des API en natif à une pile de microservices.

Test envisagé - Distribution Apigee Developer Portal Kickstart

Cette distribution Drupal permet de créer rapidement un nouveau portail pour développeurs Apigee en utilisant Drupal 8.X. Pour rappels, une distribution est un ensemble de modules (extensions, modules) Drupal, pré-configurés et intégrés pour répondre à un besoin bien précis. Une distribution se veut prête à l'emploi avec un thème (template / charte graphique) lui-même également pré-configuré.

La distribution comprend :

Après analyse du fichier composer.json (listant les modules et dépendances utilisées), il en ressort que :

  • La distribution utilise peu de modules en dehors des 3 modules Apigee principaux listés ci-dessus (Edge, Catalog, Monetization) ;
  • Les autres modules sont usuels (ex : Paragraphs, PathAuto, Better Exposed Filters) ;
  • Le Theme est basé sur le framework CSS Bootstrap via le moteur de theme Radix mais limité à la version 4 (actuellement en version 5) ;
  • Il s'agit d'une distribution Drupal 8.x (bien que les modules principaux soient annoncés comme compatibles Drupal 9.x).

En l'état nous pensons que cette distribution est avant tout un moyen rapide de tester la solution mais qu'elle n'apporte que peu de valeur ajoutée par rapport à une installation / configuration des 3 principaux modules qui la composent.

De plus le moteur de template actuellement employé n'est pas à jour et peut être s'avérer être un frein dans le futur ou une limitation si l'on souhaite s'éloigner de l'écosystème Bootstrap.

Nous n'avons pas retenu cette solution, dans le cadre du déploiement des API's concernées, pour conserver la maitrise de l'ensemble de l'instance et en faciliter la maintenance et l'évolutivité.

Test retenu - Notre proposition - Développement custom à partir des modules Apigee

Nous préconisons plutôt de partir sur un développement spécifique (custom), mais qui se baserait sur la suite de module contribués Apigee qui composent le kickstart.

Certes, il y aurait initialement une perte de temps par rapport à l'utilisation de la distribution, cependant cette solution garantit :

  • Un développement initial en Drupal 9.x (fin de vie Drupal 8.x fin 2021) ;
  • Une flexibilité accrue sur l'ajout d'autres modules et la personnalisation du site au-delà du simple portail sans risque de casser la distribution ou d'attendre une mise à jour ;
  • L'Indépendance de la solution theming retenue (et des habitudes d'intégration frontend).

Points de vigilance - Compatibilité Drupal 9.X des modules Apigee - Les modules principaux sont à ce jour compatibles avec Drupal 9 :

  • Apigee Edge
    8.x-1.24, libérée le 2 août 2021
    Compatible Drupal: ^8.7.7 || ^9
  • Apigee API Catalog
    8.x-2.6, libérée le 3 août 2021
    Compatible Drupal: ^8.8.0 || ^9
    Bien qu'annoncé compatible Drupal 9, ce module ne fonctionne pas quand nous l'avons installé.
  • Apigee Monetization
    Seul le module de monétisation bien qu'annoncé comme Drupal 9 ready n'a pas la mention Drupal 9 compatible.
    8.x-1.11, Libérée le 1er juin 2021

Ce dernier module n'est pas obligatoire pour le lancement du site et pourra être intégré dans un second temps lorsqu'il sera pleinement compatible et si l'intégration d'une solution de paiement est à l'ordre du jour.

Fonctionnalités spécifiques proposées pour l'instance Drupal 9

Nous proposons de développer lla partie Portail API en nous basant sur la suite de modules contribués (présents également dans la distribution) Apigee :

  • Apigee Edge ;
  • Apigee API Catalog.

Apigee Edge

Le module Apigee Edge permet de connecter un site Drupal 8/9 à Apigee Edge afin de créer un portail pour développeurs : Les utilisateurs qui s'inscrivent sont ajoutés au site Drupal et seront ajoutés comme développeurs dans Apigee Edge. Ce module comprend les sous-modules suivants :

  • API product RBAC : permet aux administrateurs de configurer les autorisations d'accès aux produits API ;
  • Teams : permet aux développeurs d'être organisés en équipes ;
  • Debug : permet aux administrateurs de configurer et de gérer les journaux de débogage d'Apigee.

Apigee API Catalog

Ce module crée un nouveau type de contenu nommé “API Doc”. Il est possible d'ajouter de nouveaux docs d'API sous Contenu > Catalogue d'API dans le menu d'administration. Une fois ajoutés, le nom et la description de l'API pour chaque Doc API seront affichés dans l'élément de menu “APIs” sur le site en utilisant une vue Drupal. D'autres modules de contrôle d'accès aux nœuds peuvent être utilisés pour restreindre l'accès aux documents d'API. Il est possible de personnaliser la liste du catalogue des API, les pages de documentation des API et le rendu utilisé pour les spécifications OpenAPI.

Type de contenu API

Création d'un type de contenu spécifique avec 3 onglets :

  • API Doc (récupéré à partir du module API Catalog) ;
  • Champs supplémentaires définis avec l'éditeur ;
  • Documentation : en utilisant le module API Catalog et Swagger UI Field Formatter.
  • Référence à un ou plusieurs termes de taxonomie pour filtrage ;

Taxonomies - Classification des APIs (à spécifier avec l'équipe projet).

Gestion des droits et rôles utilisateurs

  • Formulaires d'inscription / connexion ;
  • Lien avec Apigee via le module Apigee Edge ;
  • Configuration des droits des développeurs API ;
  • Page personnelle + formulaire de modification.

Gabarits

  • Vue liste des APIs avec filtres par taxonomie ;
  • Bloc de mise en avant (ex : dernières APIs publiées) ;
  • Page détail d'une API.

En comparant les 2 solutions, il nous apparait que la mise à l'écart de la distribution, au profit des modules contribués, permet une plus grande liberté de conception et de développement. En attendant l'évolution du projet vous pouvez consulter le site concerné : 
https://developer.michelin.com/

Ressources

Site officiel APIgee : https://cloud.google.com/apigee
Quelques cours / tutoriels : https://fr.coursera.org/courses?query=apigee
APIgee et Drupal : https://docs.apigee.com/api-platform/publish/drupal/open-source-drupal-8