IOSOR Guides

Incident API de la semaine : l'absence d'idempotence entraîne un gel, pas une tempête de nouvelles tentatives

Gérez votre premier incident API majeur sur un CPaaS prépayé en marque blanche sans déclencher de boucles de réessai ni corrompre le grand livre.

Une panne réseau inattendue pousse souvent les microservices clients à renvoyer en boucle les mêmes requêtes SMS. Sans clé d'idempotence, ces doublons risquent de débiter plusieurs fois les comptes prépayés de vos utilisateurs. Découvrez comment sécuriser votre passerelle CPaaS pour bloquer ces transactions répétitives avant qu'elles n'affectent les soldes.

L'alerte de minuit et le silence sur la ligne

Votre tableau de bord affiche une ligne plate sur la livraison des DLR tandis que le trafic SMS entrant s'envole. Une partition réseau en aval a abandonné des paquets TCP au milieu de la requête, et le microservice de votre client a supposé un échec. Sans protections adéquates, les clients automatisés commencent à harceler votre passerelle avec des charges utiles identiques. Vous faites face à une tempête de réessais classique contre un grand livre prépayé où chaque requête en double risque de débiter deux fois les soldes.

Pourquoi les réessais sans garde-fous épuisent les soldes prépayés

Lorsqu'un délai d'attente client se produit, une logique applicative naïve retransmet immédiatement la requête HTTP. Si votre couche de routage traite ces doublons de manière indépendante, chaque appel API déclenche une nouvelle allocation de numéro JIT ou un nouvel envoi de SMS. Cela viole la logique du plancher prépayé de 20 USD en plongeant les soldes sous zéro avant que le moteur de risque ne rattrape le coup. Vous ne pouvez pas compter sur l'espoir ou les promesses côté client.

Isoler la panne et stopper la boucle

Votre priorité opérationnelle immédiate est d'interrompre le trafic entrant avant de corriger le code. Mettez en œuvre une règle de limitation de débit d'urgence à la périphérie de la passerelle API pour rejeter les charges utiles identiques arrivant dans une fenêtre temporelle étroite. N'essayez pas de traiter les transactions pendant que l'état du grand livre est contesté. Si votre plateforme approche du seuil de révision doux proche de 1 000 USD/mois en volume de trafic contesté, les opérateurs en amont signaleront votre identifiant marchand pour volatilité suspecte.

Vérification de l'état des transactions et de la cohérence du grand livre

Une fois la tempête apaisée, vous devez auditer chaque ajustement de solde effectué pendant la fenêtre de l'incident. Comparez les journaux de votre grand livre interne avec les signaux HB de l'opérateur pour identifier les requêtes orphelines où le SMS a été envoyé mais la livraison DLR a échoué. Les développeurs commettent souvent l'erreur de croire que les contraintes de base de données monothread suffisent, comme expliqué dans API - Mois 2 : Gérer la dette d'idempotence après le premier cycle.

Sécurisation de la livraison des webhooks contre les replays d'écho

La gestion sécurisée des webhooks entrants est tout aussi critique que la gestion des appels API sortants pendant un incident. Les clients traitant des mises à jour DLR asynchrones peuvent tomber dans des boucles infinies si leur logique ne valide pas la signature webhook et fenêtre de replay. Sans validation stricte, un webhook dupliqué peut déclencher plusieurs processus de mise à jour d'état. Assurez-vous que chaque événement possède un identifiant unique traçable par le récepteur.

Commencez avec IOSOR pour un contrôle de transaction résilient

La semaine d’incident, gelez d’abord le nouvel outbound. Ajoutez une Idempotency-Key à chaque envoi en vol, exportez les lignes de débit en double et arrêtez les retries clients silencieux. N’ouvrez pas une tempête de retry pour rattraper.

À retenir — IOSOR

Faites : traitez les clés manquantes comme un gel, puis complétez et réconciliez le ledger.

Ne faites pas : clore l’incident tant que des DLR doublons frappent encore un second débit. Le statut du ticket n’est pas un statut d’argent.

Ce guide vous a-t-il aidé ?

Guides associés