Blog

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.

Node.jsObservabilidade

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.

30 de junho de 202611 min de leitura
BackendSegurança

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.

26 de junho de 202612 min de leitura
NestJSArquitetura

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.

23 de junho de 202611 min de leitura
PostgreSQLDatabase

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.

19 de junho de 202610 min de leitura
Node.jsBackend

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.

16 de junho de 20269 min de leitura
PostgreSQLDatabase

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.

13 de junho de 20269 min de leitura
Node.jsArquitetura

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.

11 de junho de 20268 min de leitura
WebhooksBackend

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.

9 de junho de 202610 min de leitura
RedisCache

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.

6 de junho de 20269 min de leitura