• R&D - Pesquisa e Desenvolvimento

Um guia sobre ADR - Architecture Decision Record


O que é Architecture Decision Records (ADR)?

Architecture Decision Record (ADR) é uma técnica de documentação utilizada pela maioria das empresas para documentar decisões importantes tomadas pelos membros da equipe e deixar registrado principalmente suas consequências.


Como surgiu o ADR?

Architecture Decision Record foi criado por Michael Nygard, com o intuito de deixar as decisões com grandes impactos na empresa salvas, tendo um fácil entendimento e as tornando uma documentação pratica, pois para ele as reuniões não encareciam de documentos altamente formais.


Benefícios de implementar ADR
  • Onboarding

  • Rapidamente novos membros entendem as motivações e consequências das decisões no stack e em todas as tecnologias da Arquitetura.

  • Passagem de Ownership

  • Uma ADR pode ser passada para ser melhorada, ou versionada de uma Squad para outra, desde que todo o histórico de mudanças sejam rastreável

  • Alinhamento:

  • ADRs fazem com que haja alinhamento entre os times e remove esforços duplicados, criado códigos e APIs reusáveis ao longo dos projetos reduzindo a variância de soluções que times centrais devem suportar


Quando implementar uma ADR?

Então chegamos ao ponto de saber: Quando e como escrever um ADR?

No momento em que houver uma decisão de impacto significativo tomada pelo time, deve ser escrito sempre um ADR. E de forma bastante simples, Michael Nygard propõem que time registre basicamente o contexto do problema, possíveis soluções, a decisão tomada e consequências usando um template markdown com algumas seções.

Template de um ADR

Um ADR leve, consiste em título, status, contexto, decisão e consequência (de acordo com @mtnygard). Modelo de template à seguir:

  • Título: Deve ser curto e descritivo.

  • Data: dd/mm/yyyy

  • Status

  • Proposta: A decisão ainda não foi aprovada.

  • Aceita: Se foi aceita.

  • Depreciada: Se não faz mais sentido.

  • Substituída: A decisão foi substituída por outra em algum momento

  • Rejeitada: A decisão inicialmente proposta foi rejeitada

  • Contexto

Traz as considerações e forças que levaram a tomar a decisão, incluindo tecnológicas, políticas, econômicas, sociais e relativas ao projeto.

  • Decisão

Descrição das decisões tomadas frente às forças e considerações, em voz ativa, sentenças completas e organizadas em parágrafos.

  • Consequências

Descrição das consequências após a tomada da decisão, incluindo as positivas e as negativas, quando houver. Tudo que puder afetar o time e o projeto deve ser registrado.


Exemplos de um ADR
Exemplo 1:

No contexto do serviço de venda Web,

Enfrentando a necessidade armazenar os dados de sessão de usuário e de forma consistente e atual através das instâncias das lojas

Nós decidimos por usar o Database Session State Pattern

E contra o Client Session State or Server Session State

Para obter consistência e elasticidade de cloud

Aceitando que a sessão de banco de dados precisa ser desenhada e implementada.


Exemplo 2:


Empresas que utilizam ADR

O Spotify, é umas das maiores empresas do ramo da musica e é um belo exemplo de onde é implementado um ADR, a empresa utiliza o documento em vários departamentos da empresa para que os criadores de conteúdo consigam acessar seus avanços e ver as decisões tomadas pelos outros membros dos projetos, outra empresa do meio da Tecnologia que utiliza a técnica ADR, é a Conta Azul que é uma empresa de Software que vende e desenvolve uma plataforma de gestão de negócios.


Conclusão

Contudo conclui-se que um ADR(Architecture Decision Record) é um documento primordial para todas as empresas independente de se considerarem uma empresa de alto ou baixo porte, pois o mesmo oferece mais praticidade na organização e na visualização de ideias relativas em suas reuniões e assim conseguindo chegar em uma posição final dos projetos.


Referências: https://engineering.atspotify.com/2020/04/when-should-i-write-an-architecture-decision-record/


Autores

Crystian Printes

Trainee na Skalena, estudante de Sistemas de Informação na Universidade Federal do Oeste do Pará.



Luciana Lopes

Trainee na Skalena, estudante de Sistemas de Informação na Universidade Federal do Oeste do Pará.

76 visualizações0 comentário