아키텍처 결정 레코드를 사용하여 소프트웨어 개발 프로젝트에 대한 기술적 의사결정 간소화 - AWS 규범적 지침

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

아키텍처 결정 레코드를 사용하여 소프트웨어 개발 프로젝트에 대한 기술적 의사결정 간소화

Darius Kunce 및 Dominik Goby, Amazon Web Services(AWS)

2022년 3월(문서 기록)

이 가이드에서는 소프트웨어 엔지니어링 프로젝트의 아키텍처 결정 레코드(ADR) 프로세스를 소개합니다. ADR은 팀 조정을 지원하고, 프로젝트 또는 제품의 전략적 방향을 문서화하고, 반복적이고 시간이 많이 소요되는 의사결정 작업을 줄입니다.

프로젝트 및 제품 개발 중 소프트웨어 엔지니어링 팀은 목표를 달성하기 위해 아키텍처 결정을 내려야 합니다. 이러한 결정은 CQRS(Command Qery Responsibility Segregation) 패턴을 사용하기로 결정하는 것과 같이 기술적인 결정일 수도 있고 GitFlow 워크플로를 사용하여 소스 코드를 관리하기로 결정하는 것과 같은 프로세스와 관련된 결정일 수도 있습니다. 이러한 결정을 내리는 것은 시간이 많이 걸리고 어려운 프로세스입니다. 팀은 이러한 결정을 정당화하고 문서화하여 관련 이해관계자에게 전달해야 합니다.

아키텍처 결정을 내릴 때 흔히 다음과 같은 세 가지 주요 안티 패턴이 나타납니다.

  • 잘못된 선택을 할까봐 어떤 결정도 내리지 않습니다.

  • 어떤 정당화도 없이 결정이 내려지고, 사람들은 왜 그러한 결정이 왜 내려졌는지 이해하지 못합니다. 그 결과 같은 주제에 대해 여러 번 논의하게 됩니다.

  • 결정은 아키텍처 결정 리포지토리에 기록되지 않으므로 팀원들은 결정 사실을 잊어버리거나 알지 못합니다.

이러한 안티 패턴은 제품이나 프로젝트의 개발 과정에서 해결하는 것이 특히 중요합니다.

결정, 컨텍스트 및 결정으로 이어진 고려 사항을 ADR 형태로 기록하면 현재 및 미래의 이해관계자가 내린 결정과 각 결정의 이면에 있는 사고 프로세스에 대한 정보를 수집할 수 있습니다. 이를 통해 소프트웨어 개발 시간이 단축되고 향후 팀에 더 나은 문서가 제공됩니다.

목표 비즈니스 성과

ADR은 세 가지 비즈니스 성과를 목표로 합니다.

  • 현재와 미래의 팀원을 조정합니다.

  • 프로젝트 또는 제품의 전략적 방향을 설정합니다.

  • 아키텍처 결정을 적절하게 문서화하고 전달하는 프로세스를 정의하여 결정 안티 패턴을 방지합니다.

ADR은 결정의 컨텍스트를 캡처하여 미래의 이해관계자에게 알립니다. ADR 컬렉션은 인계 경험과 참조 문서를 제공합니다. 팀 또는 프로젝트 멤버는 ADR 컬렉션을 후속 프로젝트 및 제품 기능 계획에 사용합니다. ADR을 참조할 수 있으면 개발, 검토 및 아키텍처 결정에 필요한 시간이 줄어듭니다. 또한 ADR을 통해 다른 팀은 다른 프로젝트 및 제품 개발 팀이 내린 고려 사항을 배우고 이에 대한 인사이트를 얻을 수 있습니다.