O instrumento pedagógico central

Guia de ADR

O que é um ADR, como aplicar o Método de Decisão em seis passos, o template copiável e um checklist de autoavaliação antes de entregar.

Um ADRArchitecture Decision Record — registra uma decisão de arquitetura: o contexto em que ela foi tomada, as alternativas consideradas, a escolha feita e as consequências que ela cria. É um documento curto, de uma a duas páginas, versionado junto com o código que ele explica.

Vale 15% da nota. Mas o motivo de ele ocupar tanto espaço na disciplina não é o peso: é que a decisão de banco de dados é o objeto de estudo. Escolher entre PostgreSQL e MongoDB, entre Iceberg e Delta, entre Airflow e Dagster, é o trabalho de quem projeta a camada de dados de um sistema. O ADR é onde esse trabalho fica visível — e, portanto, avaliável.

O Método de Decisão em seis passos

Todo ADR da disciplina aplica os mesmos seis passos. Não é burocracia: cada passo elimina um jeito específico de errar.

1. Caracterizar a carga

Volume, taxa de escrita e de leitura, cardinalidade, padrão de acesso, latência tolerada, sazonalidade. Com números do seu domínio.

O erro que este passo evita: escolher tecnologia para um problema imaginado. “Precisamos escalar” não é caracterização; “180 mil linhas/dia, 95% de leitura, consultas de agregação sobre janelas de 30 dias” é.

2. Explicitar as restrições não funcionais

Consistência exigida, disponibilidade, custo, requisitos legais, competência da equipe, licenciamento.

O erro que este passo evita: descobrir a restrição depois de construir. Competência da equipe é restrição legítima e costuma ser omitida por parecer confissão de fraqueza — não é. Uma equipe que não sabe operar Kafka tem uma razão real para não escolher Kafka, e essa razão merece estar escrita.

3. Levantar candidatos

No mínimo três, incluindo obrigatoriamente a opção nula — “continuar no PostgreSQL que já temos”.

O erro que este passo evita: justificar a decisão que já foi tomada. A opção nula é obrigatória porque é a mais frequentemente certa e a menos frequentemente considerada. Um ADR em que a opção nula não aparece, ou aparece como espantalho, não passa da faixa 5–6.

4. Prototipar e medir

Benchmark mínimo, com dados do próprio domínio — nunca sintético genérico. Reproduzível: script no repositório, dado de entrada disponível, comando documentado.

O erro que este passo evita: decidir por reputação. O que o fornecedor mede é o caso em que ele ganha. O que importa é o que acontece com a sua carga.

5. Registrar o compromisso

O que se ganha, o que se perde, o que se torna irreversível.

O erro que este passo evita: a decisão parecer gratuita. Toda escolha arquitetural custa algo; se você não consegue nomear o custo, provavelmente não entendeu a escolha. É neste passo que a maioria dos ADRs perde nota.

6. Definir o gatilho de revisão

Sob qual métrica esta decisão deixa de valer.

O erro que este passo evita: a decisão virar dogma. “Revisar se a latência do p95 passar de 400 ms” transforma uma escolha em hipótese com prazo. Sem gatilho, ninguém revisita — e o sistema carrega decisões cujo contexto já morreu.

Template

Formato Nygard. Copie, salve em docs/adr/NNNN-titulo-em-kebab-case.md no repositório da Squad, e substitua o que está entre colchetes.

# NNNN — [Título: a decisão, em uma frase afirmativa]

- **Status:** proposto | aceito | substituído por [ADR-NNNN] | revogado
- **Data:** AAAA-MM-DD
- **Decisores:** [quem participou]

## Contexto

[Que problema motivou esta decisão? Qual é a carga de trabalho, com números?
Quais restrições não funcionais valem aqui — consistência, custo, legislação,
competência da equipe?]

## Alternativas consideradas

### A. [Opção nula: continuar como está]
[Por que ela é viável. Por que ela não foi escolhida — se não foi.]

### B. [Alternativa]
[O que ela oferece. O que ela cobra.]

### C. [Alternativa]
[Idem.]

## Medição

[O que foi medido, com que dado, em que condição. Como reproduzir: comando,
script, versão. Resultado em tabela.]

| Alternativa | Métrica 1 | Métrica 2 |
|---|---|---|
| A | | |
| B | | |
| C | | |

## Decisão

[Escolhemos X.]

## Consequências

**O que ganhamos:** [...]

**O que perdemos:** [seja específico — esta seção é a que separa 7–8 de 9–10]

**O que se torna irreversível:** [migração de volta custa o quê?]

## Gatilho de revisão

[Sob qual métrica esta decisão deixa de valer.]

Checklist de autoavaliação

Passe por esta lista antes de entregar. Cada item corresponde a um ponto que a correção verifica.

  • A carga está caracterizada com números do meu domínio, não com adjetivos
  • Há pelo menos três alternativas, e a opção nula é uma delas
  • A opção nula foi tratada com seriedade, não como espantalho
  • A medição usa dado do próprio domínio e é reproduzível por terceiro — script e comando estão no repositório
  • A seção "o que perdemos" nomeia perdas concretas, não "aumento de complexidade"
  • Está dito o que se torna irreversível, e quanto custaria voltar atrás
  • Há gatilho de revisão com métrica e limiar
  • O título é uma frase afirmativa que diz a decisão, não o tema
  • O ADR cabe em duas páginas

A avaliação completa está na página de avaliação.

Exemplos anotados: os ADRs deste site

Os exemplos da disciplina são os ADRs do próprio site que você está lendo. Estão em docs/adr/, versionados junto com o código, e registram decisões reais tomadas na construção deste site.

A colisão de nomes é deliberada. “ADR” aqui tem dois autores possíveis: a Squad, que produz o artefato avaliado, e a docência, que registra decisões sobre o site. Você desambigua por quem escreve, não por um termo diferente.

ADRs do site e a decisão que cada um registra
ADRA decisão
0001 Uma única Oferta viva no site; a encerrada vira tag do git
0002 Material ancorado em Semana, não em data; a data é declarada, não calculada
0003 O Encontro é a unidade de conteúdo, não a Semana
0004 O site é o texto publicado do Plano de Ensino; o PDF aprovado é o registro formal
0005 A vitrine identifica a Squad, não a pessoa
0006 Slides e apostila vivem no repositório, com regra de 5 MB por arquivo

Por que eles ficariam na faixa 5–6

Vale dizer abertamente: aplicada a avaliação da disciplina, esses ADRs não passariam da faixa 5–6. Eles têm contexto, alternativas com a opção nula, consequências específicas e o que se torna irreversível. O que não têm é medição reproduzível.

Isso não é descuido — é o ponto pedagógico. Medição é exigível quando existe algo a medir.

Uma decisão de esquema de banco tem: você popula as duas modelagens, roda a consulta que importa, lê o plano de execução e compara. Quem não mede está adivinhando, e a avaliação cobra isso com razão.

Uma decisão sobre a unidade de conteúdo de um site não tem. O ADR-0003 escolhe entre “um arquivo por Encontro” e “um arquivo por Semana”. O critério real é conflito de edição entre duas autoras e clareza de titularidade — não há benchmark que produza esse número, e inventar uma métrica para parecer rigoroso seria pior do que assumir a ausência.

O que a avaliação pede, então, não é medição sempre. É evidência apropriada à natureza da decisão, e honestidade quando ela não existe. Um ADR que diz “não medimos, porque o critério aqui é organizacional, e eis o raciocínio” é melhor do que um que fabrica um benchmark irrelevante — este último cai na faixa 0–4, por benchmark irreprodutível.

No Projeto Integrado, praticamente toda decisão que vocês vão registrar tem o que medir. Se você concluir que a sua não tem, essa conclusão precisa estar argumentada no ADR — e ela mesma será avaliada.

As cinco decisões do semestre

Os 5 ADRs obrigatórios não são livres: cada Entrega carrega ao menos um, sobre a decisão estrutural daquela etapa.

Entrega Decisão típica
E1 Modelagem do sistema de origem: CRUD × insert-only, normalização, carimbo de tempo
E2 Mecanismo de ingestão: CDC × batch, formato de tabela aberta
E3 Modelagem analítica ou ferramenta de transformação
E4 Como o dado é disponibilizado: camada semântica, federação, ETL reverso
Livre A decisão que mais custou à Squad, em qualquer ponto do ciclo