Files
wiki/concepts/idempotence.md
T
2026-06-09 18:40:21 +02:00

45 lines
1.4 KiB
Markdown

---
title: Idempotence
created: 2026-06-06
updated: 2026-06-06
type: concept
tags: [tech, automation, devops]
confidence: high
contested: false
sources: [synthesized]
---
# 🔁 Idempotence
## Définition Courte
Propriété d'une opération qui produit le **même résultat** qu'on l'exécute une ou plusieurs fois. Une requête réseau ou un script est idempotent si elle/il peut être réessayé sans danger.
## Explication Détaillée
**Exemples** :
- `PUT /user/42 {"name": "Velli"}` est idempotent : l'état final est le même que vous l'appeliez 1 ou 10 fois.
- `POST /users {"name": "Velli"}` n'est PAS idempotent : 10 appels créent 10 utilisateurs.
- Un script Ansible est idempotent : l'appliquer deux fois ne change rien si l'état cible est déjà atteint.
Les méthodes HTTP idempotentes par spec : `GET`, `HEAD`, `PUT`, `DELETE`, `OPTIONS`, `TRACE`.
## Cas d'Usage
- Retries réseau (crucial en microservices).
- Infrastructure as Code (Terraform, Ansible).
- Webhooks : le fournisseur peut renvoyer le même hook plusieurs fois.
## Outils Liés
- **Ansible** (idempotence native).
- **Terraform** (plan/apply déterministe).
- **Idempotency-Key** dans Stripe API.
## Pages Liées
- [[patterns-architecture]]
- [[automatisation-dotfiles]]
- [[concepts-web]]
## Questions Ouvertes
- Comment garantir l'idempotence sur des opérations bancaires ?
- Quand faut-il sacrifier l'idempotence pour la performance ?
## Liens
- [[message-queue]]