L'idempotence désigne la propriété d'une opération qui produit le même résultat quel que soit le nombre de fois où elle est exécutée. En HTTP, un PUT est idempotent (créer ou remplacer), un POST ne l'est pas (créer à chaque appel). C'est un concept fondamental pour gérer les retries de webhooks et les systèmes distribués.
Pourquoi c'est critique
Les pannes réseau provoquent des retries automatiques. Les webhooks peuvent être délivrés plusieurs fois. Les systèmes distribués n'offrent aucune garantie d'exécution unique. Sans idempotence, chaque retry risque de créer des doublons, des incohérences de données ou des effets de bord indésirables.
Implémentation
La solution classique : une clé d'idempotence unique envoyée par le client à chaque requête. Côté serveur, on vérifie si cette clé a déjà été traitée. D'autres patterns incluent les identifiants de requête uniques, les opérations upsert et la déduplication en base de données.
L'idempotence, c'est ce qui sépare les intégrations fragiles des intégrations résilientes — la différence entre « ça marche » et « ça tient en production ».