Meilleures pratiques de dégradation des API dans l'API Gateway

April 1, 2024

Technology

Dans les systèmes distribués modernes, la dégradation des API sert de mécanisme crucial d'assurance de tolérance aux pannes et de stabilité. Lorsqu'un système est confronté à des pressions, des défaillances ou des contraintes de ressources, la dégradation des fonctions ou services non essentiels garantit la stabilité globale du système et la continuité des opérations commerciales essentielles. Cet article explore les scénarios de dégradation des API et les meilleures pratiques pour mettre en œuvre cette dégradation au niveau de la passerelle API.

Scénarios de dégradation des API

  1. Surcharge du système : Lorsque le système subit une augmentation des demandes dépassant la capacité de traitement du serveur, il est nécessaire de dégrader les API non essentielles pour éviter les plantages du système et assurer le fonctionnement normal des fonctions essentielles.

  2. Défaillances des services : En cas de défaillance ou de dégradation des performances des services backend, il est nécessaire de dégrader les API de ces services pour éviter la propagation des défaillances.

  3. Contraintes de ressources : Lorsque les ressources du système telles que le CPU, la mémoire ou la bande passante sont limitées, il est essentiel de dégrader les API à forte consommation de ressources pour garantir la stabilité globale du système.

Meilleures pratiques pour la dégradation des API au niveau de la passerelle

Prenons l'exemple d'une plateforme de commerce électronique confrontée à une pression de trafic immense lors d'un événement de vente majeur comme le Black Friday. Pour protéger les fonctions essentielles et garantir l'expérience utilisateur, l'équipe décide de mettre en œuvre des stratégies de dégradation des API au niveau de la passerelle.

1. Identification des API clés

L'équipe identifie les API critiques telles que la connexion utilisateur, la récupération des détails des produits, l'ajout d'articles au panier, la soumission des commandes et le traitement des paiements. Ces API sont essentielles pour permettre aux utilisateurs de compléter le processus d'achat.

2. Conception des stratégies de dégradation

Pour les API clés, une gestion de la dégradation des performances est mise en place. Par exemple, lorsque le serveur en amont renvoie un code d'état 500 trois fois de suite, un disjoncteur est déclenché, avec un temps d'arrêt augmentant automatiquement, jusqu'à un maximum de 300 secondes, jusqu'à ce que le service en amont se rétablisse.

Pour les API non essentielles comme les évaluations utilisateur, les listes de recommandations et les affichages publicitaires, des stratégies de dégradation spécifiques sont conçues :

  • API d'évaluation utilisateur : Renvoyer des listes d'évaluations par défaut ou des données vides pour éviter les appels en temps réel au système d'évaluation.

  • API de liste de recommandations : Utiliser des données de recommandation en cache ou renvoyer une liste de recommandations fixe pour réduire la dépendance au moteur de recommandation.

  • API d'affichage publicitaire : Renvoyer des publicités par défaut ou des emplacements publicitaires vides pour garantir que la mise en page de la page reste inchangée.

API

3. Configuration d'Apache APISIX / API7 Enterprise

  • Pour les API clés, le plugin "api-breaker" est activé sur les routes correspondantes, avec une condition de déclenchement définie à trois occurrences consécutives d'un code d'état 500, et un temps d'arrêt maximum de 300 secondes.

  • Pour l'API d'évaluation utilisateur, activez le plugin mocking sur la route correspondante et définissez response_example sur des données vides.

  • Pour l'API de liste de recommandations, activez le plugin proxy-cache sur la route correspondante, et optez pour l'utilisation de la mise en cache des réponses en mémoire.

  • Pour l'API d'affichage publicitaire, activez le plugin mocking sur la route correspondante et définissez response_example sur des publicités par défaut, garantissant un affichage normal de la page tout en maintenant des publicités cliquables.

4. Gestion dynamique de la configuration

Pour s'adapter aux conditions de trafic changeantes, l'équipe opte pour des passerelles rechargeables dynamiquement : Apache APISIX / API7 Enterprise. Elles peuvent ajuster les seuils de disjonction, les stratégies de dégradation et activer les commutateurs de dégradation en fonction des données de surveillance en temps réel, dégradant sélectivement les API non essentielles lors des pics de trafic.

5. Surveillance et alerte

L'équipe configure des politiques d'alerte directement dans la passerelle API7 ou intègre avec leurs systèmes de surveillance et d'alerte internes en utilisant APISIX. La surveillance en temps réel des temps de réponse des API, des taux d'erreur et des volumes d'appels permet une exécution automatique de la dégradation lorsque les seuils de dégradation ou les conditions de déclenchement sont atteints. Le personnel des opérations est notifié par SMS, e-mail ou d'autres moyens pour résoudre rapidement les problèmes potentiels, assurant la stabilité du système.

6. Évaluation et ajustement

Après la mise en œuvre des stratégies de dégradation, l'équipe surveille de près les performances du système et l'expérience utilisateur. Elle évalue l'efficacité des stratégies de dégradation grâce aux retours des utilisateurs, à l'analyse des données commerciales et aux métriques de surveillance. Sur la base des résultats de l'évaluation, l'équipe ajuste en temps opportun les stratégies de dégradation pour mieux équilibrer la charge du système et la satisfaction des utilisateurs.

En conclusion

La dégradation des API, en tant que mécanisme critique de tolérance aux pannes dans les systèmes distribués modernes, améliore considérablement la stabilité du système et l'expérience utilisateur lorsqu'elle est mise en œuvre au niveau de la passerelle API. En identifiant les API clés, en concevant des stratégies de dégradation, en configurant des plugins de passerelle, en gérant dynamiquement les configurations, en surveillant et en alertant, et en évaluant l'efficacité, les équipes peuvent répondre de manière flexible à divers défis, garantissant la stabilité du système même sous pression.

Tags: