Arquitetura de software na prática
Sou arquiteto de software com MBA em Arquitetura de Software (IGTI, 2021) e mais de 15 anos construindo plataformas em bancos, fintechs e saúde. Esta página resume como eu desenho sistemas: os princípios que sigo, os padrões que aplico e o que entrego em uma avaliação de arquitetura.
Princípios
Domínio antes de tecnologia
Modelo o negócio primeiro (DDD tático e estratégico), delimito contextos e só então escolho runtime, banco e mensageria. Fronteira errada custa mais caro que stack errada.
Decisões documentadas (ADRs)
Cada decisão relevante vira um registro curto com contexto, alternativas e consequências. Isso mantém o time alinhado e torna a evolução auditável.
Acoplamento consciente
Comunicação síncrona onde há necessidade de consistência imediata; eventos (Kafka, RabbitMQ, Pub/Sub) onde a integração pode ser assíncrona e resiliente.
Operável desde o dia zero
Observabilidade, health checks, limites de recurso, degradação graciosa e estratégias de retry fazem parte do desenho, não de uma fase posterior.
Padrões que aplico
Microsserviços e modularização
Migração de monolitos legados para serviços com fronteiras claras, strangler fig e coexistência controlada durante a transição.
Arquitetura orientada a eventos
Processamento concorrente e tempo real com WebSockets, filas e tópicos, incluindo idempotência, ordenação e reprocessamento.
BFF e Server-Driven UI
Camadas de composição que reduzem chattiness com o cliente e permitem evoluir a experiência sem novo deploy do app.
API Gateway e segurança
Gateway seguro em OpenResty com autenticação, rate limiting e roteamento centralizado para múltiplos backends bancários.
Avaliação de arquitetura
Quando um time precisa de uma leitura externa do sistema, trabalho com um diagnóstico objetivo do que existe hoje e um caminho de evolução realista:
- Mapa de contextos e fluxos críticos do sistema atual
- Riscos de acoplamento, pontos únicos de falha e gargalos de escala
- Diagnóstico de dívida técnica priorizado por impacto de negócio
- Plano de evolução incremental com marcos entregáveis