Posts
Quem Mais Mexe Neste Banco de Dados?
A pergunta bloqueante de qualquer extração. Sobre enumerar todo serviço que toca um banco compartilhado com direção e evidência, descobrir quais entidades são chaveadas por um provedor externo — e por que uma chave de provedor único silenciosamente torna seu histórico dependente de um fornecedor que você talvez substitua.
Inventariando Toda Superfície Que um Monolito Expõe
Você não pode reconstruir um serviço até saber exatamente o que ele promete ao mundo externo. Sobre derivar essa lista do código em vez da memória — rotas REST, aplicações implantadas, canais de tempo real, disparos de notificação — e tornar o inventário um artefato que testes garantem, em vez de um documento que apodrece.
Quantifique a Falha Antes de Redesenhá-la
"Assinar é instável" era a premissa para extrair um serviço do nosso monolito. Antes de projetar qualquer coisa eu medi no log group de produção — e a falha não era instabilidade alguma. Era uma máquina de estados rejeitando compras que deveria ter aceitado, 3.995 vezes em sete dias, atrás de um único código de erro opaco.
Não Existem Soluções, Apenas Trade-Offs: O Capítulo 1 do DDIA e Quatro Decisões Que Eu Realmente Tomei
O primeiro capítulo da segunda edição de Designing Data-Intensive Applications não é sobre técnicas — é sobre trade-offs. Lendo-o à luz de quatro decisões reais de backend em uma plataforma esportiva: monolito vs distribuído, banco compartilhado vs banco por serviço, system of record vs dados derivados, e cloud vs self-hosting.
Banco de Dados Compartilhado Entre Microsserviços: A Migração Que Você Não Está Pronto Para Fazer
Quando múltiplos microsserviços compartilham um único banco PostgreSQL, migrations de schema viram um problema de coordenação. Veja como lidamos com isso no R10 com Django, Go e zero downtime.
Strangler Fig na Prática: Migrando uma REST API de Python para Go Sem Downtime
Como eliminamos o intermediário Python adicionando endpoints REST diretamente a um microsserviço Go existente — reutilizando sua camada de serviços, repositórios e padrões assíncronos — enquanto o monólito continuava servindo mais de 100 endpoints.
Como os Conceitos de Stream Processing do DDIA se Aplicam a Sistemas de Notificação em Tempo Real
Conectando os conceitos de stream processing do Designing Data-Intensive Applications — event streams, fan-out, backpressure, materialized views e semântica exactly-once — às decisões arquiteturais reais em um sistema de notificações esportivas em tempo real construído com Go, gRPC e AWS SNS.
Construindo um Window Manager Tiling em Go Puro
Como eu construi o gowm, um window manager X11 tiling minimalista do zero usando Go
Construindo um Serviço de Push Notifications de Alta Performance em Go
Construir um serviço de push notifications que lida com milhões de eventos de forma confiável requer decisões arquiteturais cuidadosas. Neste post, vou mostrar como construí um backend de notificações em Go que processa eventos via gRPC e entrega push notifications através do AWS SNS.
Reescrevendo um Serviço de Notificações Python em Go: 5x Throughput, 10x Menor
Um mergulho profundo em reescrever um backend de notificações Python asyncio em Go, alcançando 5x de melhoria em throughput, deduplicação distribuída adequada e imagem Docker 10x menor.