Padrões de quem já queimou a mão
Anos debugando sistemas em produção geram padrões. Aqui documento os que mais aparecem: race conditions, filas que perdem mensagem, APIs que falham na hora errada. E como resolver.
Tracing distribuído com OpenTelemetry no Node.js: do zero ao span útil
Logs dizem o que aconteceu. Traces dizem onde aconteceu e quanto tempo levou em cada hop. Veja como instrumentar um serviço Node.js com OpenTelemetry e ter visibilidade real em sistemas distribuídos.
JWT, refresh tokens e revogação: o que ninguém conta antes de você ir para produção
JWT stateless é lindo na teoria. Mas logout real, revogação de sessão comprometida e rotação de refresh tokens exigem estado — e ignorar isso cria vulnerabilidades sérias.
CQRS no NestJS: separando leituras de escritas antes que seja tarde demais
CQRS não é sobre adicionar complexidade. É sobre reconhecer que leitura e escrita têm requisitos diferentes e parar de fingir que o mesmo modelo serve para os dois.
Soft delete no PostgreSQL: quando usar, como implementar e os erros que vão te assombrar
Soft delete parece simples: só um campo deleted_at. Mas índices ignorados, queries lentas e vazamentos de dados em JOINs mostram que a implementação ingênua cobra um preço alto.
Graceful shutdown no Node.js: encerrando a aplicação sem perder requests
Matar o processo de uma API sem esperar os requests em andamento é receita para 502 e dados corrompidos. Veja como implementar graceful shutdown corretamente no Node.js.
Migrations sem downtime no PostgreSQL: o expand-contract pattern
Fazer deploy de mudanças no banco sem colocar a aplicação em manutenção é possível, mas exige uma sequência específica. Veja o expand-contract pattern e os casos que mais aparecem no dia a dia.
Circuit breaker no Node.js: resiliência em chamadas externas sem complicar
Quando um serviço externo cai, sua API não precisa cair junto. O circuit breaker detecta falhas e para de chamar serviços com problema, deixando eles se recuperarem.
Webhooks com entrega garantida: retry, idempotência e o outbox pattern
Webhooks que falham silenciosamente perdem eventos críticos. Veja como implementar retry com backoff exponencial, verificação de assinatura e o outbox pattern para entrega confiável.
Cache invalidation com Redis: os problemas reais e como lidar
Cache é uma das ferramentas mais eficazes para performance, mas cache stale pode ser pior que sem cache. Veja as estratégias de invalidação que funcionam de verdade no dia a dia.