Skip to main content

AD, ADR e ADL | Documentação em engenharia de Software | Arquitetura

  • AD, ADR e ADL | Documentação em engenharia de Software | Arquitetura

1. AD – Architecture Decision

A decisão arquitetural em si, simples e direta. Pode estar anotada ou só discutida verbalmente.

📄 Exemplo:

"Decidimos utilizar RabbitMQ como broker de mensagens entre os microsserviços devido à sua robustez, suporte a filas duráveis e compatibilidade com .NET."


📘 2. ADR – Architecture Decision Record

Um documento estruturado que registra essa decisão com todos os detalhes, incluindo contexto, justificativa, alternativas, etc.

info

Manteremos uma coleção de registros "arquitetonicamente significativos" decisões: aquelas que afetam a estrutura, não funcionais características, dependências, interfaces ou técnicas de construção.

📄 Exemplo – adr-002-rabbitmq.md

# ADR 002: Adoção do RabbitMQ como Broker de Mensagens

**Data:** 2025-04-04
**Status:** Aceito
**Responsável:** João Silva

## Contexto
Estamos desenvolvendo uma arquitetura baseada em microsserviços que precisa de comunicação assíncrona entre os serviços.

## Decisão
Adotamos o RabbitMQ como solução de mensageria.

## Justificativa
- É maduro e amplamente utilizado.
- Suporta filas duráveis e mensagens persistentes.
- Tem ótima integração com a stack .NET.
- Equipe já tem experiência com a ferramenta.

## Alternativas Consideradas
- **Apache Kafka**: Poderoso para eventos de alto volume, mas mais complexo de configurar e operar.
- **Azure Service Bus**: Boa opção, mas preferimos evitar lock-in com serviços específicos da nuvem.

## Consequências
- Precisaremos de um ambiente dedicado para o RabbitMQ (Docker ou serviço gerenciado).
- Monitoramento e retry das filas serão necessários.
- A equipe deve manter boas práticas de consumo e publicação.

## Referências
- https://www.rabbitmq.com/
- https://docs.microsoft.com/en-us/dotnet/architecture/microservices/messaging-communication/

🧾 3. ADL – Architecture Decision Log

Um log/tabela com todos os ADRs existentes no projeto. Geralmente é o README.md da pasta de ADRs ou um documento geral.

📄 Exemplo – architecture-decision-log.md

# Architecture Decision Log (ADL)

|| Título | Data | Responsável | Status |
|-----|----------------------------------------|------------|------------------|---------|
| 001 | Banco de dados: PostgreSQL | 2025-03-01 | Douglas Silva | Aceito |
| 002 | Broker de mensagens: RabbitMQ | 2025-04-04 | João Silva | Aceito |
| 003 | Autenticação via IdentityServer | 2025-04-10 | Carla Almeida | Em análise |

🔁 Relação entre eles

  • AD → A ideia/decisão: “Vamos usar PostgreSQL.”
  • ADR → O documento que explica essa decisão: adr-001-postgresql.md
  • ADL → O índice que organiza todos os ADRs para rastreabilidade.