Por que retry exige idempotência (e timeout exige retry)
Pergunta
Numa arquitetura distribuída, por que 'só colocar um retry' quando uma chamada falha pode piorar as coisas?
Resposta esperada
Uma chamada que dá timeout NÃO significa que não aconteceu — a requisição pode ter chegado e sido processada, e só a resposta se perdeu. Se você faz retry cego de uma operação não-idempotente (`criar cobrança`, `enviar e-mail`, `incrementar contador`), você duplica o efeito. Além disso, retry sem cuidado amplifica um incidente: o serviço já está sobrecarregado, todo mundo faz retry ao mesmo tempo (retry storm), e a carga extra impede a recuperação. O jeito certo: operações idempotentes (chave de idempotência, ou 'set' em vez de 'incrementa'); retry com backoff exponencial E jitter (pra não sincronizar as tentativas); um teto de tentativas; e um circuit breaker pra parar de tentar quando claramente não adianta. Retry é uma ferramenta de resiliência só quando essas condições estão no lugar.
Por que perguntam isso
Pergunta sênior. Amarra idempotência, retry storm, backoff+jitter e circuit breaker — o candidato forte cita os quatro.