45 lines
1.4 KiB
Markdown
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]]
|