Vidéo 19 • Tolérance aux Pannes
La Résilience :
Ne jamais abandonner
"Une erreur réseau n'est pas une fin, c'est juste un rendez-vous décalé."
L'Application "Fragile" vs "Résiliente"
Logiciel Classique
Le serveur est en maintenance ? L'application affiche "Erreur 503" et s'arrête.
Le ticket de vente reste bloqué à jamais.
RÉSULTAT : Perte de données, client mécontent.
Architecture SaaS Expert
Le réseau flanche ? L'application se met en veille, attend le bon moment et retente intelligemment.
RÉSULTAT : 100% des ventes finissent par arriver.
Simulation : Stratégie de Réessai
Erreur Serveur !
Attente 1s...
> Système prêt...
Le Concept : Exponential Backoff
Pourquoi attendre plus longtemps ?
Si le serveur est tombé, le bombarder toutes les secondes va l'empêcher de redémarrer.
La règle d'or : On double le temps d'attente à chaque échec.
Essai 1 : Attente 1s
Essai 2 : Attente 2s
Essai 3 : Attente 4s
Essai 4 : Attente 8s...
Algorithme d'Apaisement
Délai = 2 ^ n (secondes)
Implémentation de la Boucle
// On prépare la boucle de réessai nAttente est un entier = 100 // 1 seconde (en centièmes) bSuccès est un booléen = Faux TANTQUE bSuccès = Faux ET nNbTentatives < 5 clRep est une httpRéponse = HTTPEvoie(clMaReq) SI clRep.CodeEtat = 200 ALORS bSuccès = Vrai SINON // Le serveur est KO, on dort avant de recommencer Multitâche(nAttente) // ON DOUBLE LE TEMPS (Backoff Exponentiel) nAttente = nAttente * 2 nNbTentatives++ FIN FIN