resilience

4 posts

Seu loop de retry assume que a primeira requisição falhou. Provavelmente, não falhou.

Um timeout ou crash não significa que sua requisição de API foi perdida. Veja como idempotency keys tornam retries seguros, e o padrão de armazenamento que realmente previne duplicatas.

Seu serviço quebra no meio de uma requisição . O cliente vê um timeout e faz retry. Agora você tem duas cobranças. O cliente está irritado. O banco de dados…

Um circuit breaker sem goroutines, sem timers e sem overhead em background

A maioria das bibliotecas de circuit breaker cria threads em background para fazer probe de recuperação. Você não precisa delas. Aqui está um design orientado a requests que elimina todo o overhead em background sem sacrificar a corretude.

Todo circuit breaker em produção que analisei eventualmente cria uma thread em background. Pode ser uma goroutine em Go, um em Java, ou uma task do tokio em…

O Seu Serviço Web Tem um Caminho de Encerramento Graceful. Esse é o Bug.

Software crash-only trata toda falha como um crash e toda inicialização como uma recuperação. Para serviços web, isso significa deletar sua lógica de encerramento e projetar estado que sobreviva a um kill -9.

Seu serviço web tem um handler de encerramento. Ele faz flush de buffers, fecha conexões, escreve checkpoints. Você testou isso uma vez, talvez. Em produção,…