Idempotência significa que realizar uma operação múltiplas vezes tem o mesmo efeito que realizá-la uma vez. Isso importa porque as redes são não confiáveis: quando um client envia um request e a response nunca chega, ele não consegue saber se o server o processou. Se ele refizer (retry), uma operação não idempotente pode rodar duas vezes.
O problema
Client ──POST /payments {$100}──▶ Server (cobra $100 ✓)
Client ◀────────X (timeout)────── Server (response perdida)
Client ──POST /payments {$100}──▶ Server (cobra $100 DE NOVO ✗ → $200!)
, , e são naturalmente idempotentes, então refazê-los é seguro. é — é exatamente daí que vêm cobranças duplicadas e pedidos duplicados.
