■ ADR·아키텍처 패키지
표시가 없는 문장은 공식 문서에서 확인한 내용이에요. 다른 표시는 읽는 법
왜 배우나 — 시험이 요구하는 것
시험 목표 6.4 구조 문서화 · D6 사람·문서 14%Document architectures and provide implementation guidance
이 개념으로 푸는 판단 (할 수 있어야 하는 것)
- 6.4① 몇 달 뒤 팀이 "왜 RAG 로 했지?" 를 처음부터 다시 논쟁한다 — 인계 때 무엇이 빠졌나? (빈 목표) — 결정 기록(ADR)과 아키텍처 패키지의 목적
- 6.4③ ADR 에 "100쪽 계약은 context rot 때문에 RAG" 라고 적었다 — 이 근거가 맞나? — ADR 근거를 공식 기준·평가 증거로 적기 (크기 기준부터 확인)
한눈에
결정마다 한 장씩 세 가지를 남긴다.
- 무엇을 골랐나?
- 왜 골랐나? (맥락·제약·증거)
- 무엇을 버렸나? (기각된 대안과 이유)
목적은 사람이 바뀌어도 정해진 trade-off(절충)가 다시 논쟁되지 않게 하는 것이다 업계 일반 ADR 양식은 Anthropic 문서 없음, 양식 암기보다 목적
공식 문서에서 가장 가까운 원칙은 코드에서 못 읽는 것만 적는 것이다. 프로젝트 고유의 구조 결정은 넣고, 코드를 읽으면 알 수 있는 것은 뺀다 (Claude Code CLAUDE.md 규칙이다. 사람 팀 문서로 넓힌 것은 추론이다)
비유 "왜 EKS 대신 ECS 인가" 를 남긴 인프라 결정 기록과 같다. 기록이 없으면 새 팀원마다 같은 논쟁을 한다. "Slack 스레드에 다 있다" 가 속이는 습관이다
ELI5
이사 가면서 새 집주인에게 "왜 이 벽에 선반을 달았는지" 쪽지를 남기는 거예요.
- 선반은 눈에 보여요. 그런데 "왜 여기에 달았는지"는 안 보여요.
- 쪽지가 없으면 새 주인은 벽을 다시 재고, 같은 고민을 처음부터 해요.
- 쪽지에는 "다른 벽은 습기가 차서 안 됐어요"처럼 버린 자리도 적어요.
- 집이 바뀌면(벽을 새로 바르면) 쪽지도 새로 써요.
개념 설명
원리
ADR (architecture decision record) 한 장
- 결정 · 맥락(문제·제약·위험·증거) · 기각된 대안과 이유를 적는다. 양식(제목·상태·결과 칸)은 업계 일반이고 Anthropic 문서에 없다. 그래서 시험은 양식보다 목적(재논쟁 방지)을 물을 것으로 본다.
- 코드는 "무엇"을 보여 준다. 그러나 "왜"와 "채택 안 한 대안"은 보여 주지 않는다. 사람이 바뀌면 그것이 사라진다. 그래서 새 팀이 처음부터 다시 비교한다.
공식에서 가장 가까운 원칙 (Claude Code 가 읽는 문서, CLAUDE.md)
- 넣을 것은 프로젝트 고유의 구조 결정과 흔한 함정이다. 뺄 것은 코드를 읽으면 알 수 있는 것이다.
/doctor는 구조 개요·디렉터리 배치처럼 코드로 알 수 있는 것은 자르고, 함정·이유(rationale)는 남긴다.- 줄마다 "지우면 실수가 나나?" 를 묻는다. 아니면 뺀다. 길면 중요한 규칙이 묻힌다.
- 코드처럼 다룬다.
- 일이 틀어지면 검토한다.
- 주기적으로 쳐낸다.
- git 에 넣어 팀이 기여하게 한다.
- 시간이 갈수록 쓸모가 쌓인다.
- 이 원칙들은 Claude 가 읽는 문서 기준이다. 사람 팀의 결정 기록에 그대로 옮긴 것은 추론이다.
근거는 평가 증거
- 공식 출발점은 성공 기준(success criteria)을 정하고 평가를 설계하는 것이다. 평가가 있으면 숫자가 짐작을 대신한다.
- 그래서 ADR 의 "왜" 칸은 "좋아 보여서"가 아니라 평가셋 숫자(품질·지연(latency)·비용)로 채운다.
- 근거 문장이 공식 기준과 어긋나면 기록이 있어도 틀린 결정이 굳는다. 6.4③ 의 "context rot 이니 RAG" 가 그런 예다. 크기를 먼저 본다(◆ RAG vs full context).
아키텍처 패키지
- 아키텍처 패키지는 아래 문서로 이루어진다. 구성은 업계 일반이다(목록 6.4①).
- ADR 묶음
- 흐름 그림(입력, 처리, 출력, feedback loop)
- 고른 패턴과 이유
- 모델 선택과 평가 근거
- 가드레일·규정
- 평가·모니터링 계획
- 패턴 이름은 가이드 기준 3개다. workflow · agentic · augmented LLM 이다.
- ADR 은 패키지 전체가 아니다. 구현 가이드·런북은 ■ 구현 가이드 에 있다.
규칙과 판단
갈림길
①⑤ 인계 때 무엇을 [6.4①]
적지 않는다
코드를 읽으면 알 수 있는 것은 뺀다
흩어진다
기록이 흩어져 새 팀이 못 찾는다 업계 일반
ADR 로 남긴다
결정 · 맥락 · 기각된 대안과 이유를 남긴다 업계 일반. 공식 문서는 CLAUDE.md 를 git 에 넣어 팀이 기여하게 하라고 한다
② 근거 쓰기 [6.4①] [6.4③]
그대로 적는다
성공 기준(success criteria)과 평가셋 숫자(품질·지연(latency)·비용)를 적는다
공식 기준부터 대조한다
근거 문장 자체가 공식 기준과 맞는지 확인한다. 자세한 것은 ◆ RAG vs full context 에 있다 (크기 먼저)
패턴과 이유를 적는다
고른 패턴과 이유를 적는다. 패턴은 workflow · agentic · augmented LLM 중 하나다
④ 다시 열까 [6.4①]
기록대로 간다
재논쟁 없이 ADR 을 가리킨다 업계 일반
새 ADR 로 대체한다
옛 것은 지우지 않고 대체됨으로 표시한다 업계 일반. 새 모델이면 평가셋으로 다시 확인한다
흐름
그림 속 이름·금액·시간·토큰 수는 예시예요. 공식 한도·동작은 카드 본문 값이 기준.
장면 글로 보기
칸 : 아키텍트 → 인계 문서 → 새 팀
블록 : 결정, 맥락·증거 (바뀌는 것), 기각 대안 (바뀌는 것), 코드·프롬프트
질문 : 새 팀은 "왜" 를 어디서 알까?
① ADR 로 인계 ✓
- 시작 : 아키텍트 — 쪽지 : 결정: 계약서 / full context + 캐싱
- 기록 : 결정 → 인계 문서 : 결정·맥락·기각 대안을 적는다 — 쪽지 : ADR-007 / full context + 캐싱 / 맥락: 계약 1건 ≈ 3만 토큰 / 기각: RAG (20만 미만)
- 읽기 : 인계 문서 → 새 팀 : 재논쟁 없이 ADR 을 가리킨다 — 말 : “RAG 는 ADR-007 에서 이미 기각됐네요.”
- 끝 : 정해진 trade-off 가 다시 논쟁되지 않는다
② 코드·프롬프트만 ≠
- 블록 : 코드·프롬프트
- 시작 : 아키텍트 — 쪽지 : 넘길 것: 레포 · 시스템 프롬프트
- 건너뜀 : 인계 문서
- 넘김 : 코드·프롬프트 → 새 팀 : 코드에는 "무엇"만 있고 "왜"는 없다 ≠ — 말 : “context rot 이니 RAG 로 다시 비교하죠.”
- 끝 : 새 팀이 처음부터 다시 비교한다
③ 전제가 바뀐다 ✓
- 시작 : 아키텍트 — 쪽지 : ADR-007 / full context + 캐싱 / 전제: 계약 1건씩 검토
- 확인 : 인계 문서 : 그때와 무엇이 달라졌나? — 쪽지 : 그때: 1건 ≈ 3만 토큰 / 지금: 800건 전체 검색 / ≈ 2,400만 토큰
- 대체 : 인계 문서 → 새 팀 : 새 ADR 로 대체한다 — 쪽지 : ADR-012 RAG / ADR-007 = 대체됨
- 끝 : 옛 것은 지우지 않고 대체됨으로 표시한다
나머지 규칙
-
아키텍처 패키지 : ADR 묶음, 흐름 그림, 계획으로 이루어진다 (구성은 업계 일반) [6.4①]
입력, 처리, 출력, feedback loop 의 흐름은 ■ input → processing → output → feedback loop 에 있다
고른 패턴과 이유를 적는다. 자세한 것은 ◆ 워크플로 vs 에이전트 에 있다. 패턴은 가이드 기준 3개 workflow · agentic · augmented LLM 이다 (가이드 1.3)
모델 선택과 평가 근거, 가드레일·규정 설계, 평가·모니터링 계획도 넣는다 업계 일반 목록 6.4①
ADR 은 패키지 전체가 아니다. ADR 은 결정 기록이다. 다이어그램·구현 가이드·런북은 패키지의 다른 문서다 업계 일반. 자세한 것은 ■ 구현 가이드 에 있다
규칙 원문 ①②④⑤ (갈림길로 그린 규칙)
-
ADR 한 장 : 결정, 맥락(문제·제약·위험·증거), 기각된 대안과 이유를 적는다 업계 일반 [6.4①]
무엇을 적나 : 코드에서 못 읽는 것을 적는다. CLAUDE.md 에 넣을 것은 "프로젝트 고유의 구조 결정 · 흔한 함정" 이다. 뺄 것은 "코드를 읽으면 알 수 있는 것" 이다
/doctor는 CLAUDE.md 에서 코드로 알 수 있는 구조 개요·디렉터리 배치를 자른다. 함정·이유(rationale)는 남긴다구조 그림은 코드가 말해 준다. 그러나 "왜" 는 기록만 말해 준다 (사람 문서로 넓힌 것은 추론이다)
크기 : 줄마다 "지우면 실수가 나나?" 를 묻는다. 아니면 뺀다. 길면 중요한 규칙이 묻힌다 (Claude 가 읽는 문서 기준)
-
근거는 평가 증거로 : "좋아 보여서" 대신 성공 기준과 평가셋 숫자(품질·지연·비용)를 적는다 [6.4①] [6.4③]
공식 문서는 성공 기준을 정하고 평가를 설계하는 것을 출발점으로 둔다. 평가가 있으면 숫자가 짐작을 대신한다. 자세한 것은 ■ 성공 기준 · ■ 검증 층 에 있다
근거 문장 자체가 공식 기준과 맞는지 확인한다. 예 : "100쪽 계약은 context rot 때문에 RAG". 자세한 것은 ◆ RAG vs full context 에 있다 (크기 먼저)
-
다시 여는 때 : 기록은 "논쟁 금지" 가 아니다. "그때와 무엇이 달라졌나" 부터 묻게 한다. 전제(데이터 크기·모델·가격·요구)가 바뀌면 새 ADR 로 대체한다. 옛 것은 지우지 않고 대체됨으로 표시한다 업계 일반 [6.4①]
새 모델이면 평가셋으로 다시 확인한다. 평가가 있는 팀은 새 모델을 며칠 만에 판단한다
문서는 코드처럼 다룬다. 일이 틀어지면 검토하고 주기적으로 쳐낸다 (CLAUDE.md 원칙)
-
둘 곳 : 코드 옆 레포(버전 관리)에 둔다. 회의록·채팅은 흩어져 새 팀이 못 찾는다 업계 일반. 공식 문서는 CLAUDE.md 를 git 에 넣어 팀이 기여하게 하라고 한다. 그러면 시간이 갈수록 쓸모가 쌓인다 [6.4①]
더 깊이 : 판단 규칙 · 상황 변수 (설명)
판단 규칙
| 조건 | 답 | 등급 | 근거 |
|---|---|---|---|
| 인계 뒤 새 팀이 정해진 결정을 처음부터 다시 비교한다 | 빠진 것은 결정 기록(결정·맥락·기각 대안)이다 | 업계 일반 | 목록 6.4①. Anthropic 문서에 ADR 이 없다 (grep "decision record|ADR|design doc" official-docs·skilljar 0건) |
| 무엇을 기록하나? | 코드로 못 읽는 것을 기록한다. 구조 결정·함정·이유다 | (Claude 문서 기준) | best-practices "persistent context it can’t infer from code alone" · "Architectural decisions specific to your project" · memory "keeps pitfalls, rationale" |
| 무엇을 빼나? | 코드를 읽으면 알 수 있는 것, 긴 설명·튜토리얼, 자주 바뀌는 정보를 뺀다 | (Claude 문서 기준) | best-practices 표(Exclude 칸) |
| 결정 근거를 무엇으로 적나? | 성공 기준과 평가셋 숫자로 적는다 | define-success · demystifying-evals "metrics replace guesswork" | |
| 패턴을 적는다 | workflow · agentic · augmented LLM 중 무엇인지와 이유를 적는다 | 가이드 목표 1.3 | |
| 어디 두나? | 코드 옆 레포(버전 관리)에 둔다 | (CLAUDE.md 기준) | best-practices "Check CLAUDE.md into git so your team can contribute" |
| 전제가 바뀌었다 | 새 ADR 로 대체한다. 옛 것은 대체됨으로 표시한다 | 업계 일반 | — |
| 새 모델이 나왔다 | ADR 의 모델 근거를 평가셋으로 다시 확인한다 | demystifying-evals (평가가 있는 팀은 며칠 만에 업그레이드) |
상황 변수
| 변수 | 값 | 답 쪽 | 등급 | 근거 |
|---|---|---|---|---|
| 결정의 성질 | 되돌리기 비싸고 논쟁 여지가 있다 (검색 방식 · 모델 · 패턴) | ADR 로 남긴다 | 업계 일반 | — |
| 결정의 성질 | 코드에 그대로 드러난다 (파일 배치 · 함수 이름) | 남기지 않는다 | (Claude 문서 기준) | best-practices · memory |
| 기록 위치 | 회의록 · 채팅 | 흩어져 새 팀이 못 찾는다 | 업계 일반 | 목록 6.4① 오답 |
| 기록 위치 | 레포 | 맞다 | (CLAUDE.md 기준) | best-practices |
| 근거 모양 | 평가셋 숫자 | 맞다 | define-success | |
| 근거 모양 | 일반론("context rot", "엔터프라이즈답게") | 공식 기준부터 대조한다 | rag-vs-full 카드 · contextual-retrieval | |
| 개인 작업 중 결정 | 내 브랜치에서만 쓰는 구조 결정 | 팀 공유 파일이 아니라 local 파일(Claude Code)에 둔다 | (Skilljar) | Skilljar 486929 |
| 문서 길이 | 결정마다 긴 설명을 쓴다 | 짧게 쓴다. 길면 묻힌다 | (Claude 문서 기준) | best-practices |
연습 문제
아키텍트가 떠나며 계약 검토 Agent 를 새 팀에 넘긴다. "왜 RAG 대신 full context(문서 전체를 넣기) + 캐싱인가" 는 코드를 읽어도 안 나온다코드에 없음. 아키텍트는 "근거는 슬랙 스레드에 다 있다채팅에 있음"고 한다. 이 결정의 근거를 어디에 어떻게 남길까?
시험 대비
함정
- "빠른 인계를 위해 코드·프롬프트만 넘기고 질문은 그때그때" 는 함정이다. 코드에는 "무엇"만 있고 "왜"·기각 대안은 없다. 그래서 새 팀이 처음부터 다시 비교한다 업계 일반. 가까운 공식 원칙은 "코드로는 못 읽는 맥락" 이다
- "결정 근거는 회의록·채팅에 다 있다" 는 함정이다. 기록이 흩어져 새 팀이 못 찾는다 업계 일반
- "ADR 하나에 다이어그램·구현 가이드·런북까지" 는 함정이다. ADR 은 결정 기록이다. 나머지는 패키지의 다른 문서다 업계 일반 목록 영상 설명 교정
- "ADR 이 있으니 결정은 못 바꿈" 은 함정이다. 전제가 바뀌면 새 ADR 로 대체한다 업계 일반
- "근거 = context rot 이니 RAG" 는 함정이다. 공식 기준과 어긋난 근거다. 크기를 먼저 본다. 자세한 것은 ◆ RAG vs full context 에 있다
- "패턴은 workflow · agent 둘" 은 함정이다. 가이드 기준은 augmented LLM 을 포함해 3개다
- "결정마다 긴 설명·튜토리얼까지" 는 함정이다. 긴 설명은 CLAUDE.md 에서 뺀다. 길면 중요한 규칙이 묻힌다 (Claude 가 읽는 문서 기준)
신호
"Document architectures and provide implementation guidance" (가이드 목표 6.4)
"Architectural decisions specific to your project"
"This gives Claude persistent context it can’t infer from code alone."
"keeps pitfalls, rationale, and conventions that differ from tool defaults"
"Check CLAUDE.md into git so your team can contribute. The file compounds in value over time."
"Building a successful LLM-based application starts with clearly defining your success criteria and then designing evaluations to measure performance against them."
"development accelerates as failures become test cases, test cases prevent regressions, and metrics replace guesswork."
더 깊이 : 뒤집히는 때 · 오답 재료 (설명)
뒤집히는 때
1. 기록한 결정이 뒤집혀야 맞는 때 — 전제(규모)가 바뀜
- 조건 : ADR 은 "계약 1건(약 3만 토큰)씩 검토하니 full context(문서 전체를 넣기) + 캐싱" 이다. 1년 뒤 요구가 "계약 800건 전체에서 같은 조항 찾기"로 바뀌었다.
- 계산 : 800 × 3만 = 2,400만 토큰이다. 1M 창도 한참 넘는다. 창에 안 들어가면 RAG 를 쓰는 것이 공식 기준이다.
- 판단 : "ADR 이 있으니 못 바꿈"이 아니다. 새 ADR 로 대체한다. 옛 ADR 은 지우지 않고 "대체됨"으로 표시한다. 왜 처음에는 full context 였는지도 남아야 다음 사람이 헷갈리지 않는다.
- 등급 : 계산 (크기 기준 · 창 크기는 확인, 대체 절차는 업계 일반)
- 근거 : contextual-retrieval · context-windows
2. 기록할 필요가 없는 때
- 조건 : 코드만 보면 알 수 있는 결정이다(폴더 배치, 라이브러리 목록). 또는 쉽게 되돌리는 결정이다.
- 판단 : 적으면 오히려 중요한 기록이 묻힌다. Claude 문서 원칙은 줄마다 "지우면 실수가 나나?" 를 묻는 것이다.
- 등급 : (Claude 문서 기준이다. 사람 문서로 넓힌 것은 추론이다)
- 근거 : best-practices · memory
3. 새 모델이 나왔는데 ADR 이 "Sonnet 으로 결정" 이라고 적혀 있을 때
- 조건 : 모델 근거가 1년 전 평가셋 점수다.
- 판단 : 기록은 결론을 굳히는 것이 아니다. "무엇이 달라졌나"를 묻게 한다. 평가셋이 있으면 같은 셋을 새 모델로 돌려 며칠 안에 판단한다.
- 근거 : demystifying-evals
4. 사람 문서 vs Claude 가 읽는 문서
- 조건 : 같은 결정 기록을 사람 팀과 Claude Code(CLAUDE.md) 둘 다 본다.
- 판단 : CLAUDE.md 는 매 세션 전부 읽힌다. 그래서 짧아야 하고, 긴 설명은 링크로 뺀다. 사람용 ADR 은 더 길어도 된다. 공식은 사람용 ADR 길이를 말하지 않는다.
- 등급 : 미해결 (사람 문서 기준 공식 문장이 없다)
- 근거 : best-practices
오답 재료
| 오답 | 왜 끌리나 | 왜 틀리나 | 등급 | 근거 |
|---|---|---|---|---|
| "빠른 인계를 위해 코드·프롬프트만 넘기고 질문은 그때그때 답한다" | 빠르고 코드가 정답 같다 | 코드에는 "무엇"만 있고 "왜"·기각 대안은 없다. 아키텍트가 떠나면 답할 사람도 없다 | 업계 일반 (가까운 원칙 확인) | 목록 6.4① · best-practices |
| "결정 근거는 회의록·채팅에 다 있다" | 기록은 어딘가 있다 | 흩어져 새 팀이 못 찾는다. 버전 관리도 안 된다 | 업계 일반 | 목록 6.4① |
| "ADR 에 다이어그램·구현 가이드·런북을 다 담는다" | ADR 을 문서 전부로 오해한다 | ADR 은 결정 기록이다. 나머지는 패키지의 다른 문서다 | 업계 일반 | 목록 6.4① 영상 설명 교정 |
| "ADR 로 정했으니 결정은 바꿀 수 없다" | 재논쟁 방지를 변경 금지로 오해한다 | 전제가 바뀌면 새 ADR 로 대체한다 | 업계 일반 | 뒤집히는 때 1 |
| "ADR 근거 : 100쪽 계약은 context rot 때문에 RAG" | context rot 은 공식도 인정한다 | 20만 토큰 미만이면 full context + 캐싱이 공식 첫 선택이다 | ◆ RAG vs full context · contextual-retrieval | |
| "패턴은 workflow 와 agent 두 가지만 적는다" | 강의가 2개로 설명한다 | 가이드 기준은 augmented LLM 을 포함해 3개다 | 가이드 목표 1.3 | |
| "모든 결정·설명을 빠짐없이 길게" | 완전할수록 좋아 보인다 | 길면 중요한 규칙이 묻힌다. 코드로 알 수 있는 것은 뺀다 | (Claude 문서 기준) | best-practices |
| "모델 선택 근거 = 벤치마크 순위 · 가장 좋은 모델" | 객관적인 것 같다 | 근거는 이 과제의 성공 기준·평가셋 숫자다 | define-success |
참고
더 깊이 : 출처 · 상태 · 미해결 (참고)
출처
- 가이드 목표 6.4 공식 시험 가이드 v1.0
- 가이드 목표 1.3 공식 시험 가이드 v1.0
- Claude Code best-practices
- Claude Code memory
- define-success
- demystifying-evals
- Skilljar Claude Code in Action 486929 (구조 결정을 local 파일에)
상태
- 업계 일반 (ADR 양식 · 패키지 구성 · 대체 절차 — 공식 문서 없음)
- 추론 1곳(CLAUDE.md 원칙 → 사람 문서)
미해결
- ADR 양식·아키텍처 패키지 구성은 Anthropic 공식 문서가 없다. grep "decision record|ADR|design doc" 결과는 ccarp/raw/official-docs · ccarp/raw/skilljar 에서 0건이다 (제외 = 받지 않은 공식 페이지). 그래서 카드는 목적 위주로 썼다. 구성은 목록 6.4① 을 업계 일반으로 옮겼다.
- 공식 원칙(CLAUDE.md "코드로 못 읽는 것만")은 Claude 가 읽는 문서 기준이다. 사람 팀 결정 기록에 옮긴 것은 추론이다 (뒤집히는 때 4).
- 목록 6.4① 의 영어 신호 두 개(가이드 목표 6.4 · "Architectural decisions specific to your project")는 원문에서 찾았다. 목록과 공식이 어긋난 곳은 없다.
- Skilljar Claude Code in Action 486929 는 CLAUDE.md local 파일에 "개인 브랜치의 구조 결정"을 두라고 한다. 팀 공유 결정은 프로젝트 파일에 둔다. 시험이 이 구분을 묻는지는 모른다.