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 |