본문으로 바로가기
리옵트 핸드북
리옵트 핸드북
에이전틱 시대의 문서화 혁신

패러다임 전환

왜 문서화가 변해야 하는가AI-readable 문서 설계 원칙AI와 협업하는 문서 작성 프로세스

문서 유형별 실전

프로젝트 규칙 문서문서에서 스킬·플러그인·MCP로에이전트 문서 보안API 문서 & 스펙README & 온보딩 문서아키텍처 결정 기록 (ADR)런북 & 운영 문서사용자 가이드 & 튜토리얼지식기반 (KB) & 내부 위키

운영

문서 유지보수 전략팀 문서화 문화 만들기

부록

템플릿 모음검증 리포트업데이트 내역
핸드북›에이전틱 시대의 문서화 혁신›아키텍처 결정 기록 (ADR)
한국어English

아키텍처 결정 기록 (ADR)

AI 에이전트가 코드베이스의 과거 설계 결정, 검토한 대안, 트레이드오프를 이해하도록 ADR을 구조화하고 유지하는 실무 방법과 팀 운영 규칙을 정리합니다.

핵심 요약

  • 코드가 설명하지 못하는 "왜 그렇게 결정했는가"를 ADR에 기록하면 AI가 맥락에 맞는 제안을 합니다.
  • frontmatter의 status(accepted/deprecated/superseded)와 date만 보고도 AI가 유효한 결정인지 빠르게 가려냅니다.
  • 검토한 대안과 기각 이유를 남겨두면 AI가 이미 버린 대안을 다시 꺼내지 않습니다.
  • MADR 포맷으로 컨텍스트·결정·결과·대안을 구조화하고 docs/adr/에 NNNN-제목.md로 저장합니다.
  • 관련 코드에 // See ADR-0003 주석을 달아 결정과 구현을 연결합니다.

코드는 무엇을 구현했는지는 보여주지만, 왜 그렇게 결정했는지는 알려주지 않습니다. 그 빈자리를 ADR(Architecture Decision Record)이 채웁니다. AI 에이전트가 코드베이스의 맥락을 이해하려면 꼭 필요한 문서입니다.

왜 ADR이 AI 시대에 중요한가

AI 에이전트가 리팩토링이나 기능 추가를 할 때 과거 결정의 이유를 모르면 이렇게 됩니다.

  • 이미 검토하고 기각한 대안을 다시 제안합니다
  • 의도적인 설계를 "문제"로 보고 바꾸려 듭니다
  • 기술 부채와 의도한 트레이드오프를 구별하지 못합니다

ADR이 있으면 AI는 "이 구조가 왜 이런지" 이해하고 맥락에 맞는 제안을 합니다.

구조화된 ADR 포맷

MADR(Markdown Any Decision Records) 기반

---
status: accepted | deprecated | superseded
date: 2026-03-20
decision-makers: [이름들]
---

# [번호]. [결정 제목]

## 상태
[Accepted / Deprecated / Superseded by ADR-XXX]

## 컨텍스트
[이 결정이 필요해진 배경과 제약조건]

## 결정
[내린 결정과 그 이유]

## 결과
[이 결정의 긍정적/부정적 영향]

## 검토한 대안
### 대안 1: [이름]
- 장점: ...
- 단점: ...
- 기각 이유: ...

frontmatter가 핵심

ADR의 frontmatter(status, date)가 있어야 AI가 유효한 결정인지 빠르게 판단합니다. deprecated나 superseded 상태의 ADR은 참고만 하고 따르지 않습니다.

Before/After

Before — Confluence 위키에 산재된 결정:

[2024-01-15 회의록]
...중략...
DB는 PostgreSQL로 가기로 했음.
MongoDB도 고려했는데 트랜잭션 때문에 안 됨.

After — 코드 옆의 구조화된 ADR:

---
status: accepted
date: 2024-01-15
---

# 3. PostgreSQL을 기본 데이터베이스로 선택

## 컨텍스트
결제 시스템에서 ACID 트랜잭션이 필수적이며,
복잡한 조인 쿼리가 빈번하게 발생한다.

## 결정
PostgreSQL을 기본 데이터베이스로 사용한다.

## 결과
- 트랜잭션 안정성 확보
- 복잡한 쿼리 성능 우수
- NoSQL 대비 스키마 변경 비용 높음 (마이그레이션 필요)

## 검토한 대안
### MongoDB
- 장점: 스키마 유연성, 빠른 초기 개발
- 단점: 멀티 문서 트랜잭션 성능 불안정
- 기각 이유: 결제 시스템의 ACID 요구사항 미충족

ADR 관리 전략

항목권장
저장 위치docs/decisions/ 또는 docs/adr/
파일명NNNN-제목.md (예: 0003-use-postgresql.md)
상태 관리frontmatter의 status 필드로
연결관련 코드에 // See ADR-0003 주석
검색코드 리뷰 시 관련 ADR 링크 첨부

템플릿

---
status: proposed
date: [YYYY-MM-DD]
decision-makers: [이름]
---

# [번호]. [결정 제목]

## 상태
Proposed

## 컨텍스트
[배경, 제약조건, 동기]

## 결정
[내린 결정]

이유:
- [이유 1]
- [이유 2]

## 결과
긍정적:
- [영향 1]

부정적:
- [트레이드오프 1]

## 검토한 대안
### [대안 이름]
- 장점: ...
- 단점: ...
- 기각 이유: ...

AI가 실패하는 패턴

실수AI가 실패하는 이유수정 방법
ADR 없이 코드만 제공AI가 "왜 이렇게 했는지" 모르고 리팩토링 제안주요 결정마다 ADR 작성
status 필드 없음AI가 폐기된 결정을 현행으로 착각frontmatter에 status 필수
대안과 기각 이유 생략AI가 이미 검토된 대안을 다시 제안검토한 대안을 반드시 기록

AI 프롬프트 예시

다음 아키텍처 결정에 대한 ADR을 작성해줘.

결정: [결정 내용]
배경: [왜 이 결정이 필요했는지]
검토한 대안: [대안 목록]

MADR 포맷으로 작성하고, frontmatter에 status와 date를 포함해줘.
각 대안의 장단점과 기각 이유를 구체적으로 적어줘.

체크리스트

항목확인
ADR에 frontmatter(status, date)가 있는가☐
컨텍스트가 "왜 필요했는지" 설명하는가☐
검토한 대안과 기각 이유가 있는가☐
결과(트레이드오프)가 명시되어 있는가☐
관련 코드에 ADR 참조 주석이 있는가☐
deprecated된 ADR의 status가 갱신되었는가☐

관련 문서

에이전트 문서 보안

Prompt injection, MCP tool poisoning, Plugin 공급망, excessive agency를 줄이는 문서 보안 기준

문서에서 스킬·플러그인·MCP로

반복 절차, 배포 단위, 외부 컨텍스트를 에이전트용 표면으로 분리하는 방법

README & 온보딩 문서

README는 사람의 진입점, AGENTS.md는 에이전트 규칙, llms.txt는 LLM용 Markdown 색인으로 역할을 분리하고 링크 정확성을 CI로 검증하는 온보딩 문서 설계.

런북 & 운영 문서

Diagnose/Recommend/Act 모드로 진단·승인·조치를 분리하고, 조건-행동-확인-승인을 수치화하며 MCP Tool과 에스컬레이션까지 연결하는 에이전트 운용형 런북 설계.

On this page

왜 ADR이 AI 시대에 중요한가구조화된 ADR 포맷MADR(Markdown Any Decision Records) 기반Before/AfterADR 관리 전략템플릿AI가 실패하는 패턴AI 프롬프트 예시체크리스트