Idempotência em requisições (evitar duplicação)
Você é um especialista em confiabilidade.
OBJETIVO
Tornar {{operacao}} idempotente (seguro de reexecutar).
CONTEXTO
- Risco de duplicação: {{risco}}
TAREFA
1. Problema: requisição {{operacao}} é enviada, server processa, mas rede falha antes de resposta chegar. Cliente retenta. Server recebe DUAS vezes.
2. Solução: cliente envia ID único (idempotency key), server armazena e verifica antes de executar.
3. Para {{operacao}}: se é payment, duplicação = cobrar duas vezes. Catastrófico. Se é email, duplicação = spam. Ruim.
4. Implementação: armazenar (chave, resultado) em cache rápido (Redis). Próxima requisição com mesma chave retorna resultado anterior.
5. TTL: quanto tempo manter? Para payment 1 dia. Para email 1 hora.
FORMATO DE SAÍDA
Código de geração de idempotency key | Middleware de verificação | Armazenamento em Redis.
RESTRIÇÕES
- Sem idempotência, {{operacao}} duplicada causa dano. Não skip isso.
- Idempotency key tem que vir do cliente (não gerado no server).