Aller au contenu
Module
Tech

Idempotence

Une opération est idempotente quand l'exécuter plusieurs fois produit le même effet que l'exécuter une seule fois. Lire un enregistrement ou passer un statut à « payé » est idempotent par nature ; créer une commande ou envoyer un e-mail, en revanche, produit un nouvel effet à chaque fois, à moins que le système ne reconnaisse la répétition. Les API gèrent souvent ce point avec une clé d'idempotence : un identifiant unique joint à la requête, qui permet au serveur de repérer et d'ignorer les doublons.

Pourquoi c’est important pour un PM

Les réseaux tombent, les utilisateurs double-cliquent, les webhooks sont relancés et les agents IA rappellent un outil après une erreur. Sans idempotence, chacun de ces cas devient un double débit, un ticket en double ou deux e-mails au même client. Pour chaque action à effet de bord, le PM devrait se demander quel serait l'effet d'une double exécution, et inscrire la réponse dans la spec.

Exemple

Un utilisateur appuie sur « Payer » avec une connexion lente, rien ne semble se passer, alors il appuie de nouveau. Comme l'application envoie la même clé d'idempotence avec les deux requêtes, le prestataire de paiement reconnaît la seconde comme une répétition et renvoie le résultat de la première. Le client n'est débité qu'une fois.

Points clés

  • En HTTP, GET, PUT et DELETE sont définies comme idempotentes ; POST ne l'est pas par défaut.
  • Une clé d'idempotence permet de réessayer sans risque après un délai dépassé, sans savoir si la première tentative a abouti.
  • Le code qui reçoit des webhooks garde la trace des événements reçus pour écarter ceux qui reviennent.
  • Les outils d'un agent qui ont des effets de bord ont besoin de la même protection, car les modèles réessaient.

Erreurs fréquentes

  • Supposer que les nouvelles tentatives sont trop rares pour compter.
  • Générer une nouvelle clé d'idempotence à chaque tentative, ce qui annule son intérêt.
  • Désactiver le bouton comme seule protection contre la double soumission.

Pour aller plus loin dans Module

Les formations et les leçons qui traitent cette notion :