Qu'est-ce que l'API throttling ?

L'API throttling est le processus qui consiste à limiter le nombre de demandes d'API qu'un utilisateur peut effectuer au cours d'une période donnée. Une application programming interface (API) fonctionne comme une passerelle entre l'utilisateur et l'application logicielle. Par exemple, lorsqu'un utilisateur clique sur le bouton « publier » sur un réseau social, ce clic déclenche un appel d'API. Cette API interagit avec le serveur Web de l'application du réseau social et exécute l'action de publication. Cet utilisateur peut être un humain ou une autre application logicielle.

Diagramme de l'API throttling

Les entreprises utilisent l'API throttling avec divers objectifs, tels que la sécurité, l'évolutivité, la performance, la monétisation, l'authentification et la disponibilité.

Un exemple concret d'API throttling dans les entreprises

Supposons qu'une personne recherche un vol sur un site OTA (agence de voyage en ligne). Le site OTA recueille des informations auprès de l'utilisateur, notamment l'origine, la destination et la date du voyage. Il utilise ensuite des API pour récupérer les informations sur les vols auprès du GDS (Global Distribution system) comme Sabre ou Amadeus.

Pourquoi les entreprises ont-elles besoin de l'API Throttling ?

Les API sont l'un des principaux atouts des entreprises. Les API aident les utilisateurs des sites Web ou applications mobiles à accomplir leurs tâches. Lorsque le nombre d'utilisateurs augmente, les sites Web ou les applications mobiles commencent à montrer des signes de dégradation des performances. Par conséquent, les utilisateurs disposant de meilleures connexions ou d'interfaces plus rapides peuvent bénéficier d'une meilleure expérience que les autres. L'API throttling est une solution élégante qui aide les entreprises à garantir une utilisation équitable de leurs API.

L'API throttling permet également de lutter contre les attaques par déni de service (DoS), lorsqu'un utilisateur malveillant envoie d'énormes volumes de requêtes pour surcharger un site Web ou une application mobile. À mesure que le nombre d'utilisateurs en ligne augmente, les entreprises doivent mettre en œuvre des mécanismes d'API throttling pour garantir une utilisation équitable, la sécurité des données et la prévention d'attaques malveillantes.

Comment fonctionne l'API throttling ?

Bien qu'il existe plusieurs types d'algorithmes, voici les étapes de base de tout algorithme d'API throttling :

  1. Un client/utilisateur appelle une API qui s'interface avec un service ou une application Web.
  2. La logique de l'API throttling vérifie si la demande actuelle dépasse le nombre autorisé d'appels d'API.
  3. Si la demande est comprise dans les limites, l'API fonctionne comme d'habitude et complète la tâche de l'utilisateur.
  4. Si la demande dépasse la limite, l'API renvoie une réponse d'erreur à l'utilisateur.
  5. L'utilisateur devra attendre un délai convenu à l'avance ou payer pour effectuer d'autres appels d'API.
Guide de réussite pour l'API throttling
Le guide définitif du succès pour le chef de produit API
Exploitez la puissance des API grâce à un guide de réussite en sept parties expliquant comment les entreprises peuvent créer des programmes d'API pour développer leurs activités numériques !

Quels sont les principaux algorithmes d'API throttling ?

Algorithme d'API throttling du seau percé

Cet algorithme utilise une file d'attente FIFO (first-in, first-out) pour contenir les demandes entrantes. La file d'attente a une taille spécifique. Lorsqu'un nouvel appel/une nouvelle demande d'API est reçue, elle est ajoutée à la fin de la file d'attente. À intervalles réguliers, cet algorithme retire une demande du début de la file d'attente et la traite. Si une nouvelle demande arrive alors que la file d'attente est déjà pleine, elle est rejetée. Cet algorithme est étroitement lié à l'algorithme du seau à jetons.

Avantages du seau percé

  • Facile à mettre en œuvre
  • Traite les demandes à un rythme constant. Même en cas d'explosion des demandes, le système n'est pas surchargé. D'une certaine manière, l'algorithme du seau percé égalise le flux de sortie lorsqu'il y a un flux d'entrée irrégulier.

Inconvénients du seau percé

  • Comme l'algorithme du seau percé utilise une file d'attente FIFO, il existe un risque de privations. Cela signifie que lorsqu'une file d'attente est pleine et qu'une demande prend plus de temps à traiter, les demandes les plus récentes peuvent être écartées. Ce problème est dû à l'ordre dans lequel les demandes sont traitées.

Algorithme d'API throttling à fenêtre fixe

La fenêtre fixe autorise un nombre N d'appels d'API de la part d'un utilisateur au cours d'une période donnée. Disons par exemple qu'un algorithme de fenêtre fixe autorise deux demandes par minute. La période est divisée en périodes fixes, chacune d'une durée d'une minute. Au début d'une minute, un compteur est mis à zéro. À chaque demande de l'utilisateur, le compteur augmente. Si le compteur atteint la limite supérieure avant la fin de la fenêtre temporelle, les nouvelles demandes sont rejetées. Au début de chaque minute, le compteur est remis à zéro.

Dans une implémentation typique d'un algorithme à fenêtre fixe, chaque utilisateur aura une clé unique et un compteur associé à la clé. Au début de la fenêtre de temps fixe, le compteur est remis à zéro.

Avantage de la fenêtre fixe

  • Contrairement à l'algorithme du seau percé, l'algorithme de la fenêtre fixe n'entraînera pas de privation pour les nouvelles demandes, car le compteur est remis à zéro au début de chaque fenêtre de temps.

Inconvénient de la fenêtre fixe

  • Au début de la fenêtre de temps, il peut y avoir une explosion des demandes des utilisateurs. Par exemple, s'il y a une limite de 1000 demandes par heure, toutes les 1000 demandes peuvent être faites pendant la première minute de la fenêtre. Cela pourrait surcharger le système.

Algorithme d'API throttling à fenêtre glissante

Cet algorithme résout les problèmes d'explosion des demandes avec l'algorithme à fenêtre fixe en faisant démarrer la fenêtre de temps lorsqu'une demande est faite. Par exemple, il suppose que le système n'autorise que deux demandes par minute pour l'utilisateur. Contrairement à la fenêtre fixe, la fenêtre temporelle ne commence que lorsqu'un utilisateur fait effectivement sa première demande. L'horodatage de la première demande est enregistré dans un compteur et l'utilisateur est autorisé à faire une demande supplémentaire au cours de cette minute.

Avantages de l'algorithme de la fenêtre glissante

L'algorithme de la fenêtre glissante combine les avantages de l'algorithme du seau percé et de la fenêtre fixe. Il élimine les problèmes des deux autres algorithmes. Dans la fenêtre glissante, les demandes les plus récentes ne sont pas défavorisées. Contrairement à la fenêtre fixe, l'explosion des demandes ne surcharge pas le système.

Quels sont les avantages de l'API throttling ?

La limitation des API est une technique essentielle pour toutes les entreprises qui exposent leurs services par le biais d'API.

Performance

L'API throttling empêche la dégradation des performances du système en limitant l'utilisation excessive d'une API. Si une application compte des millions d'utilisateurs, un système peut recevoir un nombre considérable de demandes d'API par seconde. Le traitement de toutes ces demandes d'API ralentira le système et affectera ses performances. L'API throttling permet de s'assurer que chaque utilisateur bénéficie des performances garanties par l'accord de niveau de service (SLA).

Sécurité

Un système d'API throttling agit comme une passerelle vers une API. Il permet d'éviter les attaques par déni de service (DoS). Dans le cas d'une attaque par déni de service, un attaquant émet un nombre massif de demandes de service de sorte que le service devient indisponible pour les utilisateurs légitimes. En limitant le nombre total de demandes de service, l'API throttling permet d'éviter les attaques par déni de service.

Réduire les utilisations involontaires ou malveillantes

Si une API divulgue des informations sensibles en raison d'un problème technique, l'API throttling limitera l'accès non autorisé des utilisateurs aux données via l'API compromise.

Comptage et monétisation

Les API sont l'un des principaux atouts des entreprises. La monétisation de l'utilisation des API représente une part importante de leurs bénéfices. L'API throttling aide les entreprises à mesurer l'utilisation de leurs API. Par exemple, un service Web peut offrir 1000 appels d'API gratuits par heure, mais si les utilisateurs ont besoin de plus de requêtes par heure, ils doivent payer pour y avoir accès.

Authentification

L'API throttling ne se limite pas nécessairement à limiter le nombre d'appels. En fonction du privilège d'accès d'un utilisateur, la logique de l'API throttling lui permettra d'accéder aux parties sélectionnées de l'API. Par exemple, en fonction de l'autorité du demandeur, certains utilisateurs peuvent rechercher d'autres utilisateurs et d'autres peuvent modifier les détails des utilisateurs via l'API.

Essai gratuit d'API throttling
Essayez TIBCO Cloud Integration - Essai gratuit
Laissez TIBCO Cloud Integration donner à votre entreprise les moyens de faire une intégration plus simple et plus rapide basée sur des API. C'est l'intégration, simplifiée.

Quels sont les défis de l'API throttling ?

La mise en œuvre de l'API throttling dans un système distribué est une tâche difficile. Lorsque l'application ou le service dispose de plusieurs serveurs dans le monde entier, l'étranglement doit être appliqué au système distribué. Les demandes consécutives d'un même utilisateur peuvent être transmises à différents serveurs. La logique de l'API throttling réside sur chaque nœud et doit se synchroniser en temps réel. Cela peut entraîner des incohérences et des situations de concurrence.

Dans l'exemple ci-dessous, l'utilisateur a déjà utilisé quatre demandes sur sa limite de cinq demandes par seconde. Supposons que l'utilisateur émette deux autres demandes à la même seconde. Elles sont adressées à deux serveurs différents. Le limiteur de débit récupère le compteur actuel dans la base de données et voit que le compteur est égal à 4 ; il autorise l'appel. Au même moment, le second limiteur de débit extrait également les données de la base de données et voit le compteur égale à 4. Cela se produit parce que le second limiteur de débit extrait les données d'une base de données commune avant que le premier limiteur de débit ne mette à jour le compteur. Par conséquent, les deux demandes sont satisfaites et l'utilisateur reçoit 6 demandes par seconde.

Solutions : les systèmes d'API throttling utilisent plusieurs solutions pour résoudre les problèmes d'incohérence et de concurrence. Une façon de mettre en œuvre l'API throttling dans les systèmes distribués est d'utiliser des sessions collantes. Dans cette méthode, toutes les demandes d'un utilisateur sont toujours traitées par un serveur particulier. Toutefois, cette solution n'est pas bien équilibrée ni tolérante à l'égard des pannes.

La deuxième solution à l'API throttling dans les systèmes distribués sont les verrous. Dans l'exemple ci-dessus, lorsque le premier limiteur de taux accède à la base de données, il verrouille le compte. Tant qu'il n'a pas déverrouillé le compte, le second limiteur de taux ne peut pas accéder au compte. Le premier limiteur de débit débloque le compte lorsque le compteur est mis à jour à cinq. Une autre solution populaire consiste à assouplir la limite de débit. Cette solution autorise un certain pourcentage de demandes supplémentaires par seconde.