---
category: Unified
tags: [auto-consolidated, technical-documentation]
title: [[ADR (Architecture Decision Records)]]
last_updated: 2026-05-02
---

# [[ADR (Architecture Decision Records)]]

## 📌 Brief Summary
ADR(Architecture Decision Records)은 아키텍처 결정 사항과 그 근거를 이해하기 쉽고 검증 가능하게 문서화하는 도구입니다 [1-3]. 시스템의 맥락, 결정 내용, 합리적 근거, 고려된 대안, 그리고 단/장기적 위험과 결과를 기록함으로써 시간이 지나도 과거의 결정 배경을 추적할 수 있게 합니다 [3, 4]. 이를 통해 새로운 팀원, 감사자, 기타 이해관계자들이 시스템을 깊이 이해하고 진화시키는 데 필요한 핵심 자산으로 활용됩니다 [3, 4].

---

Architecture Decision Records(ADR)는 소프트웨어 아키텍처와 관련된 중요한 기술적 결정 사항과 그 맥락, 대안, 근거 및 잠재적 위험을 명확히 기록하는 문서화 체계입니다 [1, 2]. 한 번 내려지면 변경하기 어려운 아키텍처 결정의 배경이 시간이 지나면서 잊혀지는 것을 방지하기 위해 단일 진실 공급원(Single Source of Truth)으로 유지됩니다 [2, 3]. 이는 신규 팀원이나 이해관계자, 감사자에게 시스템 진화 과정을 이해시키는 가장 중요한 자산으로 활용됩니다 [1, 2].

---

아키텍처 결정 기록(ADR)은 소프트웨어 아키텍처에 대한 결정 사항과 그 기술적 배경, 검토된 대안, 그리고 예상되는 결과 및 위험을 체계적으로 문서화한 기록입니다 [1, 2]. 이는 시간이 지나면서 아키텍처 설계의 맥락이 잊혀지는 것을 방지하고, 관련 이해관계자들을 위한 **단일 진실 공급원(Single source of truth)** 역할을 수행하여 시스템의 지속적인 진화를 지원합니다 [2, 3].

## 📖 Core Content
* **문서화의 전략적 가치:** 소프트웨어 아키텍처 결정은 한 번 내려지면 되돌리기 어렵고, 시간이 흐를수록 그 배경과 맥락이 쉽게 잊혀집니다 [3]. 따라서 어떤 기술적 배경에서 결정이 이루어졌는지 체계적인 이력 관리를 하기 위해 ADR의 작성이 필수적으로 요구됩니다 [3].
* **ADR의 핵심 구성 요소:** ADR은 객관적인 결정을 담보하기 위해 보통 다음과 같은 구체적인 항목들을 포함하여 작성됩니다 [3, 4].
  * **맥락(Context):** 결정이 내려지게 된 초기 상황과 기술적 배경은 무엇인가?
  * **결정(Decision):** 구체적으로 무엇을 선택하고 결정했는가?
  * **근거(Reason/Justification):** 이 선택을 하게 된 객관적이고 합리적인 이유는 무엇인가?
  * **대안(Alternatives):** 어떠한 대안들을 검토했으며, 해당 대안들은 왜 거절되었는가?
  * **위험 및 결과(Risks and consequences):** 이 결정이 단기 및 장기적으로 어떤 결과와 기술적 위험을 초래할 수 있는가?
* **아키텍처 진화의 이력 관리:** 훌륭한 아키텍처는 고정된 것이 아니라, 트래픽(부하)의 변화나 새로운 통합 요구사항, 팀의 스킬셋 변화 등 운영 컨텍스트가 변화함에 따라 지속적으로 진화해야 합니다 [3, 5]. 컨텍스트가 변화하여 아키텍처를 수정할 때마다 ADR을 정기적으로 검토하고 함께 업데이트함으로써, 시스템이 거쳐온 진화의 궤적을 명확하게 문서화합니다 [5].

---

* **ADR의 필수 구성 요소**
  ADR은 후일에도 누구나 의사결정 과정을 이해할 수 있도록 다음과 같은 핵심 항목을 포함하여 작성됩니다 [1].
  * **컨텍스트(Context):** 의사결정을 내릴 당시의 초기 상황이나 배경은 무엇이었는가?
  * **결정(Decision):** 최종적으로 무엇이 결정되었는가?
  * **이유(Reason):** 왜 이 선택을 하게 되었는가 (비즈니스 및 기술적 타당성)?
  * **대안(Alternatives):** 어떠한 다른 옵션들이 기각되었으며, 그 이유는 무엇인가?
  * **위험 및 결과(Risks and consequences):** 이 결정이 단기 및 장기적으로 시스템에 어떤 의미(위험성 등)를 가지는가?

* **안티패턴(Anti-patterns) 극복 도구**
  아키텍처 결정이 이메일 등을 통해 파편화되어 소통되거나, 전혀 문서화되지 않으면 반복적인 논의만 발생하고 결론이 나지 않는 안티패턴에 빠지기 쉽습니다 [2, 3]. 건축가(Architect)는 기술적 정당성과 비즈니스적 근거(비용, 사용자 만족도, 시장 출시 시간 등)를 결합하여 단일 ADR에 기록하고 위키와 같은 접근 가능한 저장소에 보관함으로써 이러한 위험을 효과적으로 방지할 수 있습니다 [3]. 

* **시스템 진화에 따른 문서화 유지**
  아키텍처는 고정된 유물이 아니라 시스템의 성장과 환경 변화에 따라 진화합니다 [2]. 사용자 수의 증가, 새로운 통합 요구사항, 팀 상황 등의 컨텍스트(Context)가 변화하면 아키텍처 또한 그에 맞게 적응해야 하며, 이때 ADR 역시 반드시 함께 업데이트되고 리뷰되어야 합니다 [4-6].

---

*   **ADR의 핵심 구성 요소**
    전형적인 ADR은 아키텍처 결정을 명확히 하기 위해 다음 항목들을 포함해야 합니다 [1, 2, 4].
    *   **Context (컨텍스트):** 결정이 내려지게 된 초기 상황과 기술적 배경
    *   **Decision (결정 사항):** 궁극적으로 어떤 선택을 내렸는지에 대한 명시
    *   **Reason (이유 및 근거):** 이 특정한 선택을 내리게 된 논리적 기반과 정당성
    *   **Alternatives (대안):** 거절된 다른 옵션들은 무엇이며, 왜 기각되었는지에 대한 설명
    *   **Risks and consequences (위험과 결과):** 이 결정이 단기 및 장기적으로 시스템에 미치는 영향과 내재된 리스크

*   **아키텍처 안티패턴(Anti-pattern) 방지**
    아키텍처 결정을 이메일 등으로 임시로 소통하거나 문서화하지 않으면, 결정 사항이 잊혀지거나 오해를 낳아 문제 해결 없이 반복적인 논의만 이어지는 안티패턴이 발생할 수 있습니다 [3]. ADR은 이러한 문제를 해결하기 위해 고안되었으며, 위키(wiki)와 같이 접근 가능한 저장소에 유지하여 조직 내 **단일 진실 공급원**을 확립하는 데 사용됩니다 [3].

*   **시스템 진화와 의사소통을 위한 전략적 자산**
    아키텍처 결정은 한 번 내려지면 변경 비용이 매우 높기 때문에 그 배경을 문서화하는 것이 필수적입니다 [2, 5]. 기록된 ADR은 새로운 팀원의 온보딩, 감사(Auditors), 이해관계자와의 소통, 그리고 미래의 시스템 개발 방향을 결정하는 데 가장 중요한 자산이 됩니다 [1, 2]. 시스템 부하, 사용자 행동, 팀의 기술 역량 등 프로젝트 맥락은 계속 변화하며, ADR은 이러한 변화의 궤적을 단계별로 기록하여 시스템이 변화에 적응하도록 돕습니다 [1].

## ⚖️ Trade-offs & Caveats
**소스에 ADR 도입 자체에 대한 구체적인 부작용이나 제약 사항에 관한 정보는 부족합니다.** 

다만, 주어진 소스는 **"완벽한 아키텍처란 없으며 모든 결정은 타협(Trade-off)의 결과"**라고 강조합니다 [6]. 따라서 ADR은 특정 아키텍처를 선택하는 과정에서 발생하는 트레이드오프(예: 고도의 보안성을 얻기 위해 성능(대기 시간)을 희생하거나, 일관성을 양보하여 가용성을 높이는 등의 결정)를 식별하고, 이로 인한 제약 사항 및 타협 지점(Trade-off Points)을 투명하게 기록하는 수단으로 기능합니다 [3, 6, 7]. 즉, 기술적 선택의 반대 급부를 관리하고, 이를 시스템의 위험 요소로 명확히 인지하기 위해 ADR이 사용됩니다 [3, 4, 7].

---

* **지속적인 리뷰와 업데이트 책임 (유지보수 비용)**
  요구사항이나 부하 프로필, 운영 현실(Operational realities)이 변경되면 이전에 작성된 ADR의 근거가 더 이상 유효하지 않을 수 있습니다. 따라서 컨텍스트가 변화할 때마다 정기적으로 아키텍처와 ADR을 재검토(Review)하고 수정해야 하는 유지관리 책임이 발생합니다 [4, 6].
* **비즈니스 가치와의 일치성 요구**
  단순히 기술적으로 우수한 패턴이라고 해서 무조건 결정되는 것이 아니라, 해당 아키텍처 결정이 뚜렷한 비즈니스적 가치(Business value)를 제공해야만 합니다. 의사결정이 비즈니스 이해관계자와 일치하지 않거나 유형의 가치를 제공하지 못한다면, 문서화되었더라도 그 결정은 재고되어야 합니다 [3].
* **과정의 엄격성에 따른 지연 위험**
  모든 결정을 ADR로 철저히 남기기 위해 정보를 수집하고 정당화하는 과정은 필수적이나, 이로 인해 결정을 지나치게 미루는 '분석 마비(Analysis paralysis)' 안티패턴에 빠지지 않도록 "마지막 책임 순간(Last responsible moment)"에 결정을 내리는 균형 감각이 필요합니다 [3].

---

*   **지속적인 리뷰와 업데이트 책임:** ADR은 한 번 작성하고 끝나는 정적인 문서가 아닙니다. 사용량 증가, 새로운 통합 요구사항 발생, 인프라 운영 현실의 변화 등 **컨텍스트가 변경되면 아키텍처도 반드시 적응해야 하며 ADR 역시 함께 갱신**되어야 합니다 [4, 6]. 이를 방치하면 문서와 실제 아키텍처 간의 괴리(침식)가 발생할 수 있습니다.
*   **비즈니스 가치와의 정렬 필수:** ADR에 기록된 아키텍처 결정은 단순히 기술적 만족을 위한 것이 아니라, 비용, 사용자 만족도, 시장 출시 시간 등 **구체적인 비즈니스 가치에 대한 정당성을 포함**해야 합니다 [3]. 만약 명확한 비즈니스 가치를 제공하지 못하거나 이해관계자의 목표와 엇나간다면, 해당 결정은 재고되어야 합니다 [3].
*   **분석 마비(Analysis Paralysis)의 위험:** 꼼꼼한 문서화와 완벽한 결정을 내리려는 압박감 때문에 결정을 지연시키는 현상을 경계해야 합니다 [3]. 결정은 충분한 정보를 확보한 **'마지막 책임 순간(last responsible moment)'**에 이루어져야 하며, 개발 팀과의 긴밀한 협력을 통해 진행해야 합니다 [3].

## 🔗 Knowledge Connections
### Related Concepts

#### [관계 유형 A: 아키텍처 평가 및 분석 방법론]
- [[ATAM (Architecture Trade-offs Analysis Method)]]
  - 연결 이유: ATAM은 특정 아키텍처가 비즈니스 목표를 얼마나 잘 지원하는지 평가하고 시스템의 트레이드오프를 식별하는 '골드 스탠다드' 방법론입니다 [6, 7]. 이 과정을 통해 도출된 아키텍처의 한계와 타협점들이 ADR에 문서화됩니다 [3, 8].
  - 이 개념을 통해 더 깊게 이해할 수 있는 부분: 추상적인 성능 논의가 아닌, "사용자가 10분 내에 2배로 증가할 때"와 같은 구체적인 '시나리오'를 바탕으로 아키텍처의 리스크와 트레이드오프를 체계적으로 분석하는 과정을 이해할 수 있습니다 [6, 7].

#### [관계 유형 B: 소프트웨어 품질 및 요구사항 기준]
- [[ISO/IEC 25010 (품질 모델)]]
  - 연결 이유: 아키텍처 대안을 비교하고 평가할 때 객관적인 척도와 기준점을 제공하는 국제 표준 품질 모델입니다 [9].
  - 이 개념을 통해 더 깊게 이해할 수 있는 부분: ADR의 '근거(Reason)' 항목을 작성할 때 기능 적합성, 성능 효율성, 호환성 등 어떤 품질 속성에 가중치(우선순위)를 두어 결정을 내렸는지 객관적으로 파악하는 기준을 세울 수 있습니다 [9, 10].

### Deeper Research Questions
- ADR을 실무에 도입할 때, 빠르고 반복적인 배포가 이루어지는 애자일(Agile) 환경에서 발생할 수 있는 문서화 유지보수의 오버헤드는 어떻게 극복할 수 있는가?
- 비즈니스 요구사항이나 시스템 사용 패턴의 변화로 인해 초기 결정 맥락이 완전히 바뀌었을 때, 기존의 ADR 문서는 어떤 방식으로 업데이트되고 버전 관리가 이루어지는가?
- ATAM과 같은 시나리오 기반 분석을 통해 발견된 치명적인 한계점(Sensitivity points)은 ADR의 '위험 및 결과(Risks and consequences)' 섹션에 어떤 형식으로 정량화되어 기술되는가?
- 마이크로서비스(MSA)와 모듈형 모놀리스 사이에서 고민할 때, ADR의 대안(Alternatives) 섹션에서 가장 핵심적으로 비교되어야 할 기준은 무엇인가?
- 대규모 팀에서 새로운 구성원이 합류하거나 외부 감사가 이루어질 때, 방대한 ADR 이력을 효과적으로 탐색하고 시스템을 파악하게 만드는 베스트 프랙티스는 무엇인가?

### Practical Application Contexts
- **Implementation:** 개발자가 시스템을 구현할 때, 특정한 아키텍처 패턴이 왜 선택되었는지 ADR을 통해 이해함으로써 일관성 있는 코드와 솔루션을 작성하는 가이드라인으로 활용됩니다 [3, 11].
- **System Design:** 초기 아키텍처 설계 단계에서 직관이나 유행(트렌드)에 의존하지 않고, 식별된 요구사항과 프로토타입 검증 결과를 기반으로 내린 구조적 결정을 문서로 남겨 설계의 객관성을 확보합니다 [8, 12, 13].
- **Operation / Maintenance:** 운영 중 트래픽의 급증이나 새로운 시스템과의 통합 등 환경 변화가 발생했을 때, 기존 ADR을 리뷰하여 당시 아키텍처가 가진 한계와 제약사항을 파악하고 안전하게 시스템을 진화시킵니다 [3-5].
- **Learning Path:** 프로젝트에 새로 온보딩하는 구성원들이 시스템이 현재의 복잡한 구조를 갖게 된 역사적 맥락과 진화 과정을 단계별로 학습하는 훌륭한 교보재 역할을 합니다 [3, 4].
- **My Project Relevance:** 나의 프로젝트에서 기술 스택을 변경하거나 새로운 아키텍처 패턴을 도입할 때, 구두 합의나 휘발성 높은 이메일 대신 ADR 포맷에 맞춰 논의 과정을 명확히 남김으로써 미래의 기술 부채를 방지할 수 있습니다 [2, 3].

### Adjacent Topics
- [[프로토타이핑 및 개념 증명(PoC)]]
  - 확장 방향: 아키텍처 결정을 확정하고 ADR을 작성하기 전, 성능이나 기술적 실행 가능성 등 핵심 리스크를 조기에 실험하여 불확실성을 최소화하는 실무적 검증 기법으로 확장이 가능합니다 [14].
- [[의사결정 매트릭스(Decision Matrix)]]
  - 확장 방향: 여러 아키텍처 후보군을 정의된 품질 요구사항을 바탕으로 정량적 비교 및 평가하여, ADR 내 결정 근거(Reason)의 논리를 더욱 탄탄하게 뒷받침하는 방법론으로 연계할 수 있습니다 [15].

---
*Last updated: 2026-05-02*

---

### Related Concepts

#### [관계 유형 A (평가/분석 프레임워크)]
- [[ATAM (Architecture Trade-offs Analysis Method)]]
  - 연결 이유: ADR에 작성될 '결정 이유', '대안', '위험 및 결과' 항목을 채우기 위해, 결정 이전에 구체적인 시나리오를 바탕으로 아키텍처의 트레이드오프(Trade-offs)를 체계적으로 도출하는 방법론입니다 [7, 8].
  - 이 개념을 통해 더 깊게 이해할 수 있는 부분: 직관적인 결정이 아닌 시나리오 기반 사고를 통해 아키텍처의 숨겨진 위험(Sensitivity points)과 절충안을 ADR에 객관적으로 수치화하고 문서화하는 원리를 이해할 수 있습니다 [7, 8].

- [[ISO 25010 Quality Model]]
  - 연결 이유: 아키텍처 결정 시 기준이 되는 품질 요구사항(기능 적합성, 성능 효율성, 유지보수성 등)을 정의하는 국제 표준 프레임워크입니다 [9, 10].
  - 이 개념을 통해 더 깊게 이해할 수 있는 부분: ADR에서 기술적 선택의 타당성을 입증할 때, 성능을 위해 암호화 수준을 낮춘다거나 확장성을 위해 전달 속도를 양보하는 식의 구체적인 품질 평가 척도를 어떻게 활용하는지 이해할 수 있습니다 [7, 11].

#### [관계 유형 B (아키텍처 운영/관리 문제)]
- [[Software Architecture Erosion (소프트웨어 아키텍처 침식)]]
  - 연결 이유: 의도된 아키텍처와 실제 구현된 시스템 사이의 격차가 벌어지는 현상으로, 기술 부채와 지식 증발(Knowledge vaporization)로 인해 발생합니다 [12].
  - 이 개념을 통해 더 깊게 이해할 수 있는 부분: ADR을 작성하고 지속적으로 관리하는 것이 아키텍처 침식을 예방하고, 지식이 증발하여 유지보수 비용이 급증하는 현상을 막기 위한 강력한 예방 조치(Preventative measure)임을 이해할 수 있습니다 [12, 13].

### Deeper Research Questions
- 애자일(Agile) 개발과 같이 빠른 프로토타이핑(Prototyping)과 잦은 피드백 루프가 존재하는 환경에서, ADR 작성 및 업데이트에 소요되는 오버헤드를 어떻게 최소화할 수 있는가? [3, 14, 15]
- 이메일이나 파편화된 문서로 존재하던 과거의 아키텍처 의사결정(Legacy decisions)을 추적하고 소프트웨어 아키텍처 복구(Architecture Recovery)를 수행할 때 ADR을 도입하는 베스트 프랙티스는 무엇인가? [3, 16]
- 분산 시스템(예: Microservices, Space-Based Architecture)에서 여러 팀이 독립적으로 서비스를 개발할 때, 전체 시스템 수준의 ADR과 팀 단위의 ADR 간의 충돌 및 정렬(Alignment) 문제는 어떻게 해결해야 하는가? [2, 17]
- ADR에 명시된 비즈니스적 가치(비용, 시장 출시 시간 등)가 시장 상황 변화에 따라 더 이상 유효하지 않을 때, 이미 구축된 아키텍처를 어떻게 효율적으로 재조정(Refactoring)할 것인가? [3, 13]
- ATAM을 통해 도출된 트레이드오프와 리스크(Risks and sensitivity points)를 ADR 템플릿의 각 항목에 구체적으로 매핑(Mapping)하는 정량적인 기준은 어떻게 설계해야 하는가? [1, 7]

### Practical Application Contexts

- **Implementation:** 새로운 기능 추가 시 단일 아키텍처 구조로 통합할지, 별도의 플러그인(Microkernel)이나 마이크로서비스로 분리할지에 대한 결정을 내릴 때, 선택하지 않은 대안들과 그 이유를 기록하여 훗날 기술 부채로 인식되지 않게 방어합니다 [1, 18, 19].
- **System Design:** 초기 시스템 설계 시, ATAM 및 ISO 25010에 따라 성능, 비용, 개발 노력을 분석한 뒤 도출된 의사결정 결과를 ADR 포맷에 맞춰 저장소(Wiki 등)에 공통 자산으로 중앙화합니다 [1, 3, 11].
- **Operation / Maintenance:** 예상보다 사용자가 급증하거나 외부 시스템 연동 요구가 생기는 등 운영(Context) 현실이 달라지면, 기존 ADR을 바탕으로 어떤 품질 특성을 타협(Trade-off)해야 할지 재평가하고 아키텍처를 유연하게 수정합니다 [4, 6].
- **Learning Path:** 프로젝트에 새로 합류한 개발자나 아키텍트가 레거시 시스템을 파악할 때, 코드 자체만으로는 알 수 없는 “왜 이런 비효율적으로 보이는 방식을 채택했는가?”에 대한 역사적, 기술적, 비즈니스적 맥락을 학습하는 온보딩 도구로 활용됩니다 [1, 2].
- **My Project Relevance:** 현재 진행하거나 기획 중인 모든 소프트웨어 프로젝트에서, 구두나 메신저로 협의한 기술적 결정들을 Wiki 페이지 등에 `Context`, `Decision`, `Reason`, `Alternatives`, `Risks` 양식에 맞추어 하나의 기록물로 남겨두어 단일 진실 공급원(Single source of truth) 체계를 직접 구축할 수 있습니다 [1, 3].

### Adjacent Topics

- [[Software Architecture Recovery (소프트웨어 아키텍처 복구)]]
  - 확장 방향: 아키텍처 결정이 문서화(ADR)되지 않아 노후화되거나 문서가 유실된 레거시 시스템에서, 소스 코드 및 가용 정보를 역공학(Reverse engineering)하여 본래의 아키텍처 구조를 찾아내는 기술적 방법론 탐구 [16].

---
*Last updated: 2026-05-02*

---

### Related Concepts

#### [아키텍처 평가 및 결정 (Architecture Evaluation & Decision)]
*   [[ATAM (Architecture Trade-offs Analysis Method)]]
    *   연결 이유: ADR 작성 전, 여러 아키텍처의 장단점(Trade-offs)을 시나리오 기반으로 분석하고 평가하는 핵심 방법론입니다 [7, 8].
    *   이 개념을 통해 더 깊게 이해할 수 있는 부분: ADR의 '대안(Alternatives)' 및 '위험(Risks)' 섹션에 채워 넣을 객관적인 지표와 상충 관계를 어떻게 도출하는지 원리를 이해할 수 있습니다.

*   [[ISO 25010 Quality Model]]
    *   연결 이유: 아키텍처 결정 시 기반이 되는 기능 적합성, 성능, 확장성 등의 비기능적 품질 속성 평가 기준을 제공합니다 [9, 10].
    *   이 개념을 통해 더 깊게 이해할 수 있는 부분: ADR의 '이유(Reason)' 항목을 작성할 때, 어떤 품질 기준을 근거로 아키텍처의 우위를 판단했는지 체계적인 근거를 마련할 수 있습니다.

#### [소프트웨어 생명주기 관리 (Software Lifecycle Management)]
*   [[Architecture Erosion (아키텍처 침식)]]
    *   연결 이유: 아키텍처 결정이 제대로 문서화(ADR)되지 않아 '지식 증발(knowledge vaporization)'이 일어날 때 발생하는 시스템 구조의 붕괴 현상입니다 [11].
    *   이 개념을 통해 더 깊게 이해할 수 있는 부분: 왜 ADR을 통한 철저한 기록이 장기적인 시스템의 수명과 유지보수 비용 절감에 직결되는지 그 위험성을 학습할 수 있습니다.

### Deeper Research Questions
*   애자일(Agile) 환경에서 "마지막 책임 순간(last responsible moment)"에 내리는 적시의 아키텍처 결정과 ADR 작성 사이의 속도와 문서화의 균형을 어떻게 맞출 수 있는가?
*   요구사항이나 트래픽 프로필이 크게 바뀌어 과거 ADR의 결정 사항이 무효화될 때, 이전 ADR을 어떤 버전 관리 기준으로 보관하고 갱신해야 하는가?
*   ATAM과 같은 평가 기법으로 도출된 식별된 위험(Sensitivity points)들을 ADR 문서 템플릿에 어떻게 정량적이고 구체적으로 매핑할 것인가?
*   ADR에 기술적 논거 외에도 비용 최적화, 시장 출시 속도 등 비즈니스 이해관계자를 위한 정당성(Justification)을 효과적으로 융합하는 실무 사례는 무엇인가?
*   초기 프로토타입(Prototype) 및 기술 검증(Proof of Concept)의 결과를 ADR 작성 과정에 편입시켜 결정을 검증(Validation)하는 가장 이상적인 타이밍은 언제인가?

### Practical Application Contexts
*   **Implementation:** 새로운 데이터베이스나 클라우드 제공자를 프로젝트에 도입할 때, 결정의 배경과 검토했다가 거절한 기술 스택을 ADR로 남겨 후임 개발자들의 중복 검토를 방지합니다.
*   **System Design:** 모놀리식에서 마이크로서비스(MSA)로 전환하는 등 거시적 아키텍처 변경을 기획할 때, 기술적 대안들과 트레이드오프 분석 결과를 문서로 기록하여 의사결정을 공식화합니다.
*   **Operation / Maintenance:** 운영 중 시스템 부하가 예상치를 초과하거나 팀 규모가 변경되었을 때, 기존 ADR을 리뷰하고 현재 컨텍스트에 맞게 아키텍처를 진화시킬지 결정하는 기준점으로 삼습니다.
*   **Learning Path:** 소프트웨어 아키텍트 지망생이 아키텍처 안티패턴(결정 지연, 이메일 기반의 휘발성 소통)을 학습하고, 이를 극복하기 위한 체계적인 문서화 및 지식 관리 프로세스를 실습하는 데 적용됩니다.
*   **My Project Relevance:** 현재 진행 중인 개인 혹은 팀 프로젝트의 위키(Wiki) 공간에 ADR 템플릿을 도입하여, 팀원들과 시스템 구조에 대한 단일 진실 공급원(SSOT)을 구축하는 기준으로 활용합니다.

### Adjacent Topics
*   [[Technical Debt (기술 부채)]]
    *   확장 방향: 아키텍처의 의도와 구현이 틀어지거나 문서화의 부재로 인해 발생하는 기술 부채의 원인과 이를 측정하고 리팩토링하는 과정을 조사합니다.
*   [[Architecture Decision Matrix (아키텍처 결정 매트릭스)]]
    *   확장 방향: 대안들을 객관적으로 비교하기 위해 확장성, 개발 노력, 유지보수성 등 동일한 기준으로 여러 아키텍처를 스코어링(scoring)하는 평가 도구의 활용법을 학습합니다.

---
*Last updated: 2026-05-02*
