Qu’est-ce qu’un mode dégradé ?
Un système fonctionne en mode dégradé lorsqu’il continue à fournir un service, mais avec des fonctionnalités réduites, une qualité diminuée ou des performances limitées. Ce mode est souvent conçu pour éviter une panne complète et offrir un niveau minimal de service.
Exemples de mode dégradé :
- Bases de données : une base secondaire prend le relais en lecture seule si la base principale est indisponible.
- Caches : si le cache est saturé ou non disponible, le système interroge directement la base de données, avec un impact sur les performances.
- Ressources réseau : si un serveur principal ne répond pas, un serveur de secours est activé.
Objectifs des tests de charge en mode dégradé
- Évaluer la résilience : Tester la capacité du système à maintenir un service minimal en cas de dégradation.
- Observer les performances : Mesurer les temps de réponse, la consommation des ressources et les capacités en mode dégradé.
- Identifier les points de rupture : Déterminer à quel niveau de charge le système passe d’un mode dégradé à une panne totale.
- Valider les mécanismes de fallback : S’assurer que les systèmes de secours (redirection, basculement) fonctionnent comme prévu.
- Améliorer l’expérience d’utilisation : Vérifier que l’application reste utilisable même en cas de dégradation.
Mise en œuvre des tests de charge en mode dégradé
Définissez les scénarios de dégradation
Il est important d’identifier les composants critiques et les situations où le mode dégradé est activé.
Configurez les outils de test
Les outils de test de charge comme K6 ou JMeter peuvent être configurés pour simuler des scénarios de dégradation. Par exemple :
- En injectant des erreurs 500 dans certaines réponses HTTP.
- En limitant les ressources disponibles (CPU, mémoire).
Simulez la charge
- Progressive : augmenter graduellement le nombre de profil en mode dégradé.
- Pointe : soumettre immédiatement une forte charge au système dégradé pour tester sa limite.
Analysez les résultats en collectant les métriques
- Temps de réponse.
- Taux d’erreurs.
- Consommation des ressources.
- Nombre de personnes simultanés supportés avant panne totale.


Exemple pratique
Cas d’une application web :
- Contexte : Une application web repose sur un cache Redis et une base de données MySQL.
- Scénario : Redis devient inaccessible, et le système passe en mode dégradé en interrogeant directement MySQL.
- Test :
- Déconnecter Redis.
- Lancer un test de charge avec 1 000 personnes simultanés.
- Observer si le système maintient une réponse correcte (même ralentie) ou s’effondre.
Cas d’une application :
- Contexte : Une application mobile est utilisée par des randonneurs dans des zones reculées avec une couverture réseau limitée (3G, latences élevées, déconnexions fréquentes). Cette application offre des fonctionnalités comme :
- Cartes téléchargeables.
- Signalement d’urgence en cas de danger.
- Statistiques de randonnée synchronisées dans le cloud.
- Test :
- Lorsque la connexion internet devient instable ou très lente, l’application doit fonctionner en mode déconnecté ou avec des fonctionnalités réduites, tout en stockant les données localement pour une synchronisation ultérieure.
Bénéfices des tests de charge en mode dégradé
- Anticiper les faiblesses en identifiant les goulots d’étranglement.
- Renforcer la stratégie de reprise en optimisant les mécanismes de basculement.
- Réduire les risques en préparant le système à des conditions imprévues.