Après avoir abordé lors de l’article précédent le rôle central de l’API dans la stratégie d’entreprise, nous allons aujourd’hui nous consacrer à la gestion par API Management. Différents axes vont être abordés tout au long de ce billet de blog coécrit par Wael Amri et Adnan El Akkaoui.

 

Définition de l’API Management

Qu’est-ce qu’une plateforme d’API Management ?

 

Une plateforme d’API Management est une solution sécurisée et fiable pour exposer et gérer vos APIs. Elle fournit tous les outils nécessaires pour la gestion de bout en bout des APIs.

Une telle plateforme garantit des performances optimales des APIs et permet au client :

  • D’imposer une sécurité de très haut niveau en s’authentifiant et en gérant les accès,
  • De versionner les APIs,
  • La possibilité de contrôler l’accès aux APIs via les « Policies »,
  • La surveillance de l’état des APIs avec les outils de monitoring.

 

 

Les cas d’usages de l’API Management (APIM)

 

L’API management fournit une interface unique pour approvisionner et administrer vos applications clientes (applications mobiles, applications serveurs).

Avec un API Management plusieurs possibilités sont offertes, à savoir :

  • La gestion d’un catalogue de services : les APIs exposées par l’API management sont référencées et organisées. On dispose alors d’une vitrine pour un usage interne ou externe,
  • Une consommation des APIs simplifiée via un portail développeur, ce qui favorise la collaboration et l’innovation,
  • La sécurisation des APIs : en agrégeant les APIs dans l’APIM et en veillant à ce que les micro-services ne sont pas exposés, on va limiter les potentielles cyberattaques,
  • La surveillance des APIs en consultant les métriques d’utilisation, l’identification des erreurs et la configuration de la limitation des accès aux APIs,
  • La création et l’exécution des rôles sur les APIs, on pourra définir des API Policies sur les requêtes entrantes par API ou par opération exécutée par l’API,
  • La simplification de la gestion des APIs, on offre la possibilité de gérer leurs cycles de vie en introduisant facilement les nouvelles versions, qui sont susceptibles de comprendre des breaking changes. Traduits par la suppression d’une opération d’une API ou le changement du modèle,
  • La mise à disposition d’une interface centrale pour consolider et gérer plusieurs APIs sur différentes plateformes,
  • L’implémentation native du mécanisme d’authentification.

 

Azure API Management

La plateforme API Management de Microsoft Azure présente multiples avantages :

  • Disponibilité immédiate en utilisant un abonnement Azure,
  • Capitalisation des fonctionnalités internes (C#, Azure DevOps),
  • Tirer profit du modèle SaaS pour une phase d’évaluation (facturation mensuelle, évolutivité, mise en place rapide),
  • Déploiement multi-région.

 

Le schéma ci-dessous montre l’Azure API Management en interaction au sein de l’écosystème Microsoft Azure :

 

Design de l’APIM

Mise en place de notre APIM via le portail

 

Dans ce qui va suivre, nous allons mettre en place le service API management à travers le portail Azure. Il faut bien évidemment avoir une souscription Azure et créer en amont un resource group.

 

 

Une fois le resource group créé, nous allons mettre en place le service nous permettant de gérer les performances, à savoir Application Insights qui est une fonctionnalité d’Azure Monitor. Ce service va nous faciliter la supervision de notre APIM en temps réel, détecter les anomalies, diagnostiquer les problèmes qu’on pourra rencontrer et enfin comprendre l’usage que les utilisateurs font de notre APIM.

 

 

Ensuite, nous allons entamer la phase de création de l’API Management depuis le portail Azure.

 

 

 

Le service Azure APIM prend en charge l’importation de nouvelles API, soit à travers la création de celles-ci en les associant à l’APIM ou bien l’ajout à des API existantes. Plusieurs alternatives sont offertes lors de ce processus :

  • OpenAPI Specification,
  • WADL,
  • WSDL,
  • Logic App,
  • API App,
  • Function App.

 

Style d’architecture adopté

L’ouverture du système d’information est un enjeu majeur pour développer de nouveaux business models et accélérer l’innovation. Nous pensons que ce point constitue le moteur de l’économie numérique. En effet, il existe en ce moment plusieurs démarches pour répondre aux différents enjeux qui sont présents à savoir :

  • Open API,
  • SOAP,
  • REST,
  • Azure Functions.

Dans ce qui suit, nous allons détailler les différentes démarches.

 

Open API :

Ce principe consiste à bâtir un écosystème ouvert via l’exposition de services qui vont être consommés par des tiers sans pour autant avoir une idée préconçue sur l’usage qui en sera fait. C’est donc cette stratégie d’écosystème ouvert qui va engendrer :

  • La création des revenus directs en les facturant. Le cas de Google Maps qui devient payant au-delà de 25000 transactions (appels) par jour.
  • L’émergence de nouveaux usages pour sa plateforme et donc faire évoluer son modèle de revenu. Comme le cas d’Apple en 2009, qui a constaté que les développeurs d’applications souhaitaient vendre non seulement des applications, mais aussi des contenus pour leurs applications. Le modèle de l’App Store a donc évolué pour intégrer cette possibilité.
  • L’externalisation de la branche R&D puis le rachat des startups les plus talentueuses comme l’a fait SalesForce avec Financialforce.com.

 

SOAP :

SOAP (Simple Object Access Protocol) est un protocole de communication qui repose sur le langage XML. Il permet le transfert des messages entre des programmes qui s’exécutent dans des systèmes d’exploitation distincts (Windows, Linux).

Microsoft a développé la technologie SOAP pour remplacer les anciennes technologies comme DCOM et CORBA. Ces technologies ont échoué car elles reposent sur la messagerie binaire. La messagerie XML utilisée par SOAP fonctionne mieux sur Internet.

 

REST :

REST (REpresentational State Transfer) est un style d’architecture pour les systèmes distribués basé sur l’exposition des ressources.

Actuellement, la technologie REST API est plus utilisée que SOAP car elle est plus performante et consomme moins de bande passante.

Avec l’utilisation croissante du cloud, l’architecture REST demeure le choix le plus adapté pour créer des APIs qui permettent aux utilisateurs de se connecter et d’interagir avec les services Cloud.

 

Azure Functions AS API:

Azure Functions peut être utilisé comme une plate-forme légère pour créer des APIs. Ils prennent en charge un certain nombre de fonctionnalités, notamment les custom routes et les output bindings qui vont nous permettre d’implémenter des règles métier complexes.

Ils ont également un modèle de tarification basé sur la consommation et suivent donc l’architecture Serverless. En effet, il s’agit d’un modèle de tarification à l’utilisation à faible coût quand on dispose d’un faible trafic. Ce modèle peut évoluer ou exploser pour des niveaux de demande plus élevés.

 

Architecture technique

 

Le schéma ci-dessus nous montre clairement l’interaction entre les différents intervenants à travers l’APIM. L’APIM créé une couche d’abstraction des APIs à partir de leurs implémentations respectives et permet la sécurisation des APIs (Microservices) en les agrégeant dans l’APIM et en interdisant leur exposition.

L’APIM est livré avec un portail développeur qui est un site Web généré automatiquement et entièrement personnalisable où l’on peut découvrir et paramétrer les APIs.

L’API Gateway est le point d’entrée unique pour tous les consommateurs et permet de gérer toutes les requêtes et de les transférer aux services appropriés. Il peut exposer un service diffèrent pour chaque consommateur.

Il est important de noter que le service APIM prend en charge l’importation des applications Azure Functions en tant que nouvelles APIs ou bien en les ajoutant à des APIs existantes. Dans notre cas de figure, nous allons procéder en créant notre API en tant qu’Azure Function et l’exposer par la suite en tant qu’API.

 

Nous allons commencer par créer le socle technique de notre exemple. Ce sera une Azure Function de type Http Trigger et à chaque fois que l’on aura besoin d’exposer une opération de notre API, une nouvelle Azure function devra être mise en place.

 

Les deux figures ci-dessous, montrent l’ensemble des opérations exposées par les Azure Functions.

 

 

Un test via Postman afin de vérifier que notre Azure function est opérationnelle, on récupère ci-dessous un produit en lui passant son identifiant en mode Template paramètre :

 

 

Ensuite, on va créer un compte de stockage qui va correspondre à notre Table Storage.

 

Par la suite, on va créer les function app qui va encapsuler nos Azure functions.

 

La phase de publication est primordiale pour visualiser nos Azure functions dans le portail Azure.

 

 

Après la publication des Azure functions, il faut introduire la connection string de la Table Storage dans la liste des configurations (cf capture ci-dessous)

 

 

Une fois nos Azure functions exposées et afin de les sécuriser, on va les importer dans l’APIM.

 

 

La figure ci-dessous, montre la mise en pratique de l’Azure function GetProducts et la réponse qui lui est associée.

 

 

La capture d’écran ci-après illustre un appel à l’Azure Function CreateProduct en lui passant les paramètres de création dans le body puisqu’il s’agit d’une requête de type POST.

 

 

Pour clôturer nos tests, on va effectuer un appel à notre API en passant par l’APIM et ce via Postman :

 

Pour terminer, il est à noter qu’Azure API Management offre une solution de bout en bout pour gérer le cycle de vie des APIs. Cela favorise une approche simplifiée, rationalisée de la configuration et de la gestion de l’API. Il est important à la fin de souligner que l’interaction avec d’autres API développées et hébergées sur Azure est tout à fait réalisable. Nous verrons dans le prochain article les APIs dans un écosystème d’innovation.

 

 

Recevez notre livre blanc "Comprendre et intégrer les APIs dans son entreprise"