WindevExpert

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

Poste Maître
Erreur Serveur ! Attente 1s...
Serveur Cloud
> 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