Ideias & Insights

Explorando desenvolvimento AI-first, guardrails de código e a arquitetura da descartabilidade.

Sua camada de domínio importa Postgres. Seu CI não liga.

Diagramas de clean architecture ficam ótimos em um quadro branco. Veja como fazer seu pipeline de build impor a direção das dependências para que o código de domínio não possa alcançar a infraestrutura.

Alguém do seu time acabou de importar em . O PR compila. Os testes passam. O code review tem trezentas linhas, e ninguém percebe. Três meses depois, você quer…

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,…

Seus Testes Passam. Seu Mutation Score É 40%. Eis O Que Mutantes Sobreviventes Estão Realmente Lhe Dizendo.

O code coverage diz que você está seguro. O mutation testing diz que seus testes são, em sua maioria, decoração. Veja como mutantes sobreviventes expõem a lacuna e como fechá-la.

Seus testes passam. Seu relatório de coverage diz 87%. Mas seu mutation score é 40%, e metade dos seus mutantes ainda está vivo. Esse 40% não significa que seu…

Mutation Testing em Rust Funciona, mas Seus Tempos de Compilação Vão Odiar Você

cargo-mutants encontra os testes que apenas fingem verificar seu código. Veja como mutation testing funciona para Rust, o que ele captura e se o custo de tempo de compilação vale a pena.

Você tem 100% de cobertura de linhas. Cada branch é executada. Cada função é chamada. Aí alguém muda um para na sua lógica de precificação, executa os testes e…