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.
Procuro entender o contexto, as dependências e os limites operacionais antes de propor uma solução. Discuto alternativas e trade-offs com os times, registro decisões relevantes em ADRs e acompanho a implementação por meio de testes, observabilidade e automação.
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.







