Português | English | Español (Latinoamérica)
Arquiteto de Software · Sistemas Distribuídos · .NET · Cloud
Software architect working hands-on with .NET, distributed systems, cloud, architecture governance, and open-source developer tooling.
Há mais de 20 anos, trabalho no desenvolvimento e na evolução de sistemas corporativos, com foco em arquitetura de software, integrações e modernização de aplicações. Procuro equilibrar necessidades de negócio, decisões técnicas e a realidade operacional dos sistemas.
Aqui compartilho ferramentas, bibliotecas e laboratórios open source que ajudam a transformar decisões de arquitetura e governança em código, testes e automação.
Links profissionais
Ferramentas, bibliotecas e laboratórios que conectam decisões de arquitetura à implementação e à operação.
Ferramenta de governança arquitetural
Ajuda equipes a manter registros de decisão consistentes e rastreáveis. A CLI em .NET cria, valida e indexa ADRs; análises opcionais de impacto e desvios arquiteturais trabalham com evidências delimitadas, sem substituir o julgamento humano. O estudo de caso detalha decisões e trade-offs.
Biblioteca .NET
Resolve mapeamentos entre objetos .NET e colunas quando as convenções do Dapper não bastam, sem adicionar atributos aos modelos. A evolução da biblioteca combina API fluente, extensibilidade e compatibilidade com aplicações existentes, evidenciando manutenção de APIs públicas e modernização incremental. O estudo de caso discute os limites dessa abstração.
Ferramenta de documentação arquitetural
Reduz a divergência entre código e diagramas ao transformar evidências delimitadas de repositórios .NET em documentação C4/LikeC4 revisável. O fluxo separa observações de hipóteses e exige aplicação explícita, demonstrando análise estática, geração determinística e integração com agentes via MCP.
Laboratório de sistemas distribuídos
Torna decisões sobre consistência eventual, falhas e rastreabilidade reproduzíveis em uma base de serviços distribuídos em .NET. Implementa DDD, integração assíncrona com Kafka e Outbox, testes e runbooks, deixando propostas sem evidência marcadas explicitamente como pendentes.
Biblioteca .NET para integração
Trata falhas, concorrência e duplicidade na entrega de webhooks de saída. IDs estáveis tornam o enfileiramento idempotente, enquanto concessões temporárias e novas tentativas sustentam entrega at-least-once com armazenamento durável fornecido pela aplicação; o destinatário ainda precisa tolerar duplicatas. O estudo de caso examina essas garantias e seus limites.
Ferramenta de análise estática
Identifica padrões de custo e regressões de complexidade antes que cheguem à execução. O analisador Roslyn estima Big-O quando há evidência suficiente, aplica métricas configuráveis no build e na IDE e retorna resultado indeterminado em vez de inferir além do que o código permite.
Outros trabalhos: Repo Control Center, painel de CI, releases, segurança e saúde dos repositórios, e a lista completa de repositórios.
Algumas contribuições integradas que representam correção, manutenção e segurança em bases existentes:
- Ocelot — PR #2420: corrigiu o mapeamento de timeouts do serviço de destino para HTTP 504 conforme a RFC 9110, preservando cancelamento do cliente e comportamento de QoS, com testes unitários e de aceitação.
- MySqlConnector — PR #1675: removeu a detecção obsoleta do Azure MySQL Single Server, preservando o caminho do AWS RDS Proxy e simplificando a lógica de conexão.
- OpenCNPJ — PR #75: centralizou downloads externos em um fluxo com timeouts, limites de tamanho, arquivos temporários e limpeza em falhas, acompanhado por testes e validação em CI.
O catálogo completo de contribuições open source mantém os demais Pull Requests e seus estados atualizados automaticamente.
No repositório .github, reúno políticas e automações compartilháveis: padrões de contribuição e segurança, inventário de projetos .NET, verificação de segredos e distribuição controlada de skills para agentes. As mudanças passam por Pull Request e cada repositório mantém autonomia para adotar suas regras.
Minha visão de arquitetura foi construída ao longo de mais de duas décadas trabalhando com desenvolvimento de software. Essa experiência me ensinou que uma solução não precisa apenas ser tecnicamente adequada. Ela também precisa fazer sentido para o negócio, para a organização e para as pessoas que vão construí-la e mantê-la.
Não vejo a arquitetura como algo definido isoladamente por um arquiteto e depois imposto às equipes. Acredito em compreender o contexto da empresa, a maturidade dos times, as limitações existentes e os objetivos que se pretende alcançar. A partir disso, construir decisões em conjunto, equilibrando necessidades atuais e possibilidades de evolução.
Para mim, o papel do arquiteto não é apenas desenhar soluções, mas ajudar as equipes a tomar boas decisões técnicas, compartilhar conhecimento e criar condições para que os sistemas possam evoluir de maneira sustentável.
Escrevo sobre arquitetura de software, DDD e desenvolvimento .NET, principalmente sobre decisões e problemas encontrados na prática.
- Café com código — newsletter sobre arquitetura e engenharia de software.








