📝 Cap 15: Documentação Arquitetural e ADRs - Exemplos Práticos
Demonstrações de decisões arquiteturais registradas como código (ADRs) e templates corporativos.
🗺️ O Ciclo de Vida de uma Decisão Arquitetural
stateDiagram-v2
[*] --> Proposta: Engenheiro submete PR com nova ADR
Proposta --> Aceita: Time aprova a decisão em RFC
Proposta --> Rejeitada: Rejeitada com justificativa técnica
Aceita --> Substituida: Nova ADR supera a anterior após anos
Substituida --> [*]
📄 Exemplo 1: ADR Completa de Adoção de Kafka para Event-Driven Architecture
# ADR-0012: Adoção do Apache Kafka para Mensageria e Event Sourcing
## Status
Aceito (2026-09-01)
## Contexto
O crescimento do volume de transações financeiras exige processamento assíncrono com retenção durável e garantia de ordem de eventos por chave de partição. Avaliamos RabbitMQ, AWS SQS e Apache Kafka.
## Decisão
Adotamos o Apache Kafka (com Strimzi Operator em Kubernetes) como backbone corporativo de mensageria assíncrona.
## Consequências
- **Positivas:**
- Capacidade de replay de eventos históricos para reconstrução de estado.
- Altíssima vazão (> 100.000 msgs/s por broker).
- **Negativas:**
- Maior complexidade operacional para manutenção de Zookeeper/KRaft.
- Curva de aprendizado da equipe em relação a semânticas de entrega (*at-least-once* vs *exactly-once*).
📄 Exemplo 2: Utilizando a CLI adr-tools no Terminal
# 1. Inicializar diretório de ADRs no projeto:
adr init docs/architecture/decisions
# 2. Criar nova decisão:
adr new "Adoção de Clean Architecture com Go"
# 3. Vincular ADR que substitui uma anterior:
adr new -s 3 "Migração de Monólito para Microsserviços"
🧭 Navegação Rápida
| 📖 Teoria | 📊 Slides | 🧠 Quiz | 💻 Exemplos | 🧩 Exercícios | | :— | :— | :— | :— | :— | | Ler Tópico | Ver Slides | Fazer Quiz | Ver Código | Praticar |