15. 기술 의사결정과 워킹그룹 운영 가이드
0. 먼저 알고 가기 (30초 요약)
- 여러 팀에 걸친 결정은 워킹그룹으로 owner와 검토 범위를 먼저 정합니다.
- 되돌리기 어려운 변경은 RFC 같은 제안서에 반대 주장까지 담아야 합의 비용이 줄어듭니다.
- 채택 기준, 반려 기준, 철회 기준을 문서 초기에 적어두세요.
- 나중에 추적할 수 있도록 결정 배경을 짧게라도 남기는 것이 핵심입니다.
왜 중요한가: 결정 근거가 사라지면 같은 논쟁이 분기마다 반복되고, 운영자가 바뀔 때마다 학습 비용이 늘어납니다.
일상 비유: 병원의 진료 기록과 같습니다. 환자가 다른 의사에게 가도 차트만 보면 과거 처방과 부작용을 알 수 있어 같은 실수를 막을 수 있죠.
초심자용 한눈에 보기
의사결정의 핵심은 빠른 투표가 아니라 근거와 되돌림 경로를 남기는 일입니다.
flowchart LR
Q[질문/문제 발생] --> CHECK{되돌리기 어려운가}
CHECK -->|쉽다| PR[PR로 처리]
CHECK -->|어렵다| WG[워킹그룹/owner 지정]
WG --> RFC[의사결정 제안서 작성]
RFC --> REVIEW[대안 비교 + 리뷰]
REVIEW --> DECIDE[결정 + ADR 기록]
DECIDE --> TRACK[운영 지표 관찰]
TRACK -->|문제 발견| REOPEN[Supersede 또는 회수]
TRACK -->|안정| KEEP[표준 유지]
핵심 용어 빠르게 정리
| 용어 | 쉬운 뜻 |
|---|---|
워킹그룹 |
여러 이해관계자가 모여 결정안을 검토하는 임시 운영 단위 |
RFC |
되돌리기 어려운 변경을 논의하는 제안서 형식 |
ADR |
특정 기술/방식 채택 이유를 기록한 결정 문서 |
PoC |
실제로 소규모로 검증해보는 실험 |
승인 조건 |
채택되기 위한 반드시 충족해야 할 근거 |
철회 조건 |
상황이 달라졌을 때 되돌릴 조건 |
| 분류 | 협업 & 표준화 | 상태 | Stable |
|---|---|---|---|
| 연관 가이드 | 04. 아키텍처, 14. 배포, 16. 코드리뷰, 17. 온보딩 | 도구 원칙 | 벤더 중립 |
| 핵심 테마 | 워킹그룹, 의사결정 제안서, RFC, ADR, 표준 문서, review cadence, 철회 조건 | Update | 최신 기준 |
이 문서의 표준은 특정 협업 도구나 RFC 형식 자체가 아니라 중요한 결정을 책임 있는 사람들과 충분한 맥락으로 검토하고, 승인된 결정을 이후에도 추적 가능한 기록으로 남기는 방식입니다.
추천 항목 (실무 우선순위)
- 시작 추천: 의사결정 문서는 목적·대안·영향·철회 조건 4요소를 기본 양식으로 고정하세요.
- 안정 추천: 승인권자와 반려 기준을 미리 공개해 회의 시간을 줄입니다.
- 운영 추천: 반영 후 결과를 ADR로 남겨 장기 검색성과 재검토를 쉽게 합니다.
추천 항목 고도화 체크
-
첫 적용— 대안, 근거, rollback 기준을 갖춘 결정 기록 중 하나를 실제 PR이나 운영 이슈에 붙이고, 변경 전 기준을 먼저 적는다. -
증거 정리— 제안서 diff, ADR 번호, PoC 결과, 반대 의견 처리를 같은 작업 기록에 남긴다. -
재점검— 보류 안건 수, 결정 변경 횟수, 미해결 risk 수가 나아졌는지 30일 안에 확인하고 기준을 유지, 수정, 폐기 중 하나로 판정한다.
추천 항목 실행 기록 템플릿
-
작업: 대안, 근거, rollback 기준을 갖춘 결정 기록 적용 범위를 어느 화면, 패키지, 문서에 둘지 적는다. -
증거: 제안서 diff, ADR 번호, PoC 결과, 반대 의견 처리 중 실제로 남긴 항목만 링크한다. 판정: 유지/수정/폐기 중 하나와 이유를 한 문장으로 남긴다.-
다음 점검: 보류 안건 수, 결정 변경 횟수, 미해결 risk 수를 다시 볼 날짜와 담당자를 지정한다.
문서 책임 범위
| 이 문서가 결정하는 것 | 단일 출처로 따르는 문서 |
|---|---|
| 워킹그룹 구성 기준, 의사결정 제안서 필요 조건, ADR 보존, 철회 조건 | 04. 아키텍처, 14. 배포 |
| 표준 문서의 owner, review cadence, deprecated/archive 처리 | 00. 종합 가이드 |
| 리뷰와 merge 책임이 필요한 의사결정 기록 | 16. 코드리뷰 |
| AI decision support의 허용 범위와 검증 책임 | 18. AI 개발 워크플로우 |
0. 모든 프론트엔드 그룹 공통 Baseline
| 영역 | 공통 기준 | 산출물 |
|---|---|---|
| 워킹그룹 구성 | 여러 팀, 보안, 성능, 배포, 운영 책임이 걸리면 owner와 검토자를 먼저 지정 | working group charter |
| 제안서 필요 조건 | 되돌리기 어렵거나 장기 비용에 영향이 있으면 RFC 또는 동등한 의사결정 제안서 작성 | decision proposal |
| ADR 기록 | 승인된 결정은 간결한 ADR로 보존 | ADR |
| 대안 비교 | 최소 2개 대안과 선택하지 않은 이유 기록 | trade-off 표 |
| 리스크 | blast radius, rollback, migration, 운영 비용 명시 | risk table |
| 검증 | PoC, benchmark, 테스트, 공식 문서 중 근거 제시 | evidence |
| 철회 조건 | 어떤 지표/상황이면 결정을 되돌릴지 명시 | rollback criteria |
| 검토 주기 | 표준 문서는 owner와 review cadence 보유 | maintenance plan |
0.0 의사결정 운영 루프
flowchart TD
A[이슈/문제 제기] --> B[영향 분석]
B --> C{제안서/워킹그룹 필요 여부}
C -->|필요| D[Owner + Draft 작성]
C -->|불필요| E[PR로 직접 처리]
D --> F[Review + 대안 비교]
F --> G[Decision]
G -->|승인| H[ADR 기록]
G -->|보류| I[실험/추적]
H --> J[구현]
J --> K[Validation]
K --> L[Revisit 또는 Archive]
I --> L
K -->|재발생| F
0.1 교차 검증 매트릭스
| 권고 | 1차 출처 | 실행 증거 | 운영 증거 | 철회 조건 |
|---|---|---|---|---|
| High-impact decision | 아키텍처/보안/운영 영향 기준 | decision checklist | decision churn, rework count | 작은 reversible 변경은 PR 기록으로 대체 |
| 워킹그룹 책임 명시 | 팀 간 ownership 기준 | owner/reviewer 목록 | pending item aging | 단일 팀 변경이면 PR owner로 축소 |
| ADR 보존 | ADR/MADR 형식 | ADR 링크와 PR 연결 | onboarding/review 참조 빈도 | 결정 폐기 시 supersede ADR |
| AI decision support | 18. AI 워크플로우 정책 | 근거 링크와 검증 결과 | 잘못된 결정 회고 | AI 단독 결정 금지 |
0.2 운영 게이트
| Gate | Evidence | Owner | Rollback |
|---|---|---|---|
| Decision intake | 영향 범위, 되돌림 난이도, 이해관계자 체크 | Decision owner | PR-only 변경으로 축소 |
| Working group | owner, reviewer, 결정 기한, 회의/비동기 규칙 | WG owner | 단일 owner 의사결정으로 축소 |
| Decision evidence | 대안 비교, PoC, benchmark, 공식 근거 | Proposal owner | 실험 단계로 되돌림 |
| ADR 보존 | ADR 링크, PR/RFC 연결, supersede 관계 | Architecture owner | 이전 ADR 유지 또는 supersede ADR 작성 |
| 표준 재검토 | owner, review date, 변경 이력 | Standards owner | deprecated/archive 처리 |
1. 워킹그룹 또는 제안서가 필요한 경우
왜 중요한가: 모든 변경에 회의를 강요하면 속도가 죽고, 아무 변경에도 결정 기록이 없으면 사고 비용이 폭발합니다. 두 위험을 가르는 기준이 이 표입니다.
| 워킹그룹/제안서 필요 | PR 기록으로 충분 |
|---|---|
| 프레임워크/상태관리/빌드 도구 교체 | 작은 컴포넌트 내부 리팩터 |
| API contract 또는 데이터 모델 변경 | 타입 이름 정리 |
| 배포/롤백 방식 변경 | 단일 테스트 추가 |
| 보안/개인정보 처리 방식 변경 | 문서 오탈자 수정 |
| 성능 예산 또는 캐시 전략 변경 | 로컬 개발 편의 스크립트 |
| 여러 팀의 ownership에 영향 | isolated bug fix |
워킹그룹과 제안서는 모든 변경을 느리게 만들기 위한 절차가 아닙니다. 되돌리기 어려운 결정을 빠르게 잘하기 위한 장치입니다.
1.1 제안서 필요 여부 의사결정 트리
flowchart TD
START([변경 제안]) --> Q1{되돌리는 데<br/>30분 이상 걸리는가}
Q1 -->|아니오| PR1[PR로 처리]
Q1 -->|예| Q2{2개 이상 팀의<br/>ownership에 영향?}
Q2 -->|예| RFC_NEED[워킹그룹 + 제안서 필수]
Q2 -->|아니오| Q3{보안/개인정보/계약<br/>영향이 있는가}
Q3 -->|예| RFC_NEED
Q3 -->|아니오| Q4{성능 예산이나<br/>SLA를 변경?}
Q4 -->|예| RFC_NEED
Q4 -->|아니오| Q5{비용이 분기<br/>예산을 흔드는가}
Q5 -->|예| RFC_NEED
Q5 -->|아니오| LIGHT[Lightweight ADR로 충분]
RFC_NEED --> DRAFT[Draft 시작]
LIGHT --> ADR_ONLY[PR에 ADR 링크]
비유: 자동차 정비와 같습니다. 와이퍼 교체는 그 자리에서 하지만(PR), 엔진
교체는 정비 책임자, 견적, 대안, 일정이 필요합니다(워킹그룹/제안서).
2. 의사결정 라이프사이클
왜 중요한가: 단계 정의가 없으면 "어디까지 합의됐고 무엇을 남겨야 하는지"가 흐려지고, 리뷰가 영원히 끝나지 않습니다.
problem
-> draft
-> review
-> decision
-> ADR
-> implementation
-> validation
-> revisit or archive
| 단계 | 완료 조건 |
|---|---|
| Draft | 문제, 목표, 비목표, 대안, 영향 범위 초안 작성 |
| Review | owner와 reviewer가 질문/리스크를 남김 |
| Decision | 승인, 보류, 기각, 실험 중 하나로 결정 |
| ADR | 최종 결정과 근거를 짧게 기록 |
| Implementation | 작업이 제안서/ADR 링크를 참조하고 범위를 벗어나지 않음 |
| Validation | 성공 지표와 철회 조건 확인 |
2.1 의사결정 상태 다이어그램
stateDiagram-v2 [*] --> Draft: 문제/대안 정리 Draft --> InReview: reviewer 지정 InReview --> Draft: 큰 수정 요청 InReview --> Approved: 합의 + 검증 통과 InReview --> Rejected: 비목적/비효율 판정 InReview --> Deferred: 정보/실험 필요 Deferred --> InReview: PoC 결과 도착 Approved --> Implemented: 코드 반영 완료 Implemented --> Validated: 운영 지표 OK Validated --> Stable: 표준 유지 Stable --> Superseded: 후속 결정이 대체 Stable --> Archived: 더 이상 유효하지 않음 Validated --> Rollback: 회수 조건 충족 Rollback --> Archived Rejected --> [*] Superseded --> [*] Archived --> [*]
비유: 도서관 책의 상태와 같습니다. 신간(Draft) → 대출
중(InReview) → 보존서가(Stable) →
폐기(Archived) → 개정판으로 교체(Superseded).
2.2 PoC → 채택 → 회수 라이프사이클
flowchart LR POC[PoC<br/>소규모 실험] -->|성공 지표 충족| ADOPT[Adopt<br/>제한 공개] POC -->|실패| DISCARD[Discard] ADOPT -->|운영 안정| STANDARD[Standard<br/>전면 채택] ADOPT -->|이슈 발생| REVISE[Revise<br/>조정] REVISE --> ADOPT STANDARD -->|새로운 대체안| SUPERSEDE[Superseded] STANDARD -->|회수 조건 도달| WITHDRAW[Withdraw] WITHDRAW --> POSTMORTEM[회수 사유 ADR 기록] SUPERSEDE --> ARCHIVE[Archive] WITHDRAW --> ARCHIVE
3. 의사결정 제안서(RFC) 템플릿
# RFC: 제목
## Status
Draft / In Review / Approved / Rejected / Superseded
## Context
- 어떤 문제를 해결하는가
- 현재 방식의 한계
- 영향을 받는 팀/서비스/사용자
## Goals
- 성공 조건
## Non-goals
- 이번 결정에서 다루지 않는 것
## Proposal
- 선택안 설명
- 아키텍처/흐름/계약 변경
## Alternatives
| Alternative | Pros | Cons | Why not |
| :---------- | :--- | :--- | :------ |
## Risks
| Risk | Impact | Mitigation |
| :--- | :----- | :--------- |
## Rollback / Exit Criteria
- 어떤 상황이면 중단하거나 되돌리는가
## Validation
- PoC, benchmark, test, 공식 문서, 운영 지표
## Decision
- 결정 내용
- decision maker
- date
4. ADR 템플릿
# ADR-0000: 결정 제목
## Status
Accepted / Deprecated / Superseded
## Context
결정이 필요했던 배경
## Decision
우리가 선택한 것
## Consequences
좋아지는 점, 나빠지는 점, 운영 부담
## Confirmation
결정이 유효한지 확인할 지표나 테스트
## Links
- RFC:
- PR:
- Follow-up:
ADR은 제안서보다 짧아야 합니다. 이후 온보딩과 코드리뷰에서 빠르게 읽을 수 있어야 합니다.
5. 의사결정 원칙
왜 중요한가: 같은 사람이 같은 데이터로 다른 시점에 다른 결정을 내리지 않도록 원칙을 밖으로 꺼내 기록합니다.
| 원칙 | 기준 |
|---|---|
| Reversibility | 되돌리기 쉬운 결정은 가볍게, 어려운 결정은 더 엄격하게 |
| Evidence | 선호보다 테스트, 공식 문서, 운영 지표를 우선 |
| Ownership | 결정 owner와 유지보수 owner를 분리하지 않음 |
| Timebox | 논의 기간과 결정일을 정함 |
| Dissent | 반대 의견과 선택하지 않은 이유를 기록 |
| Review | 결정이 낡으면 폐기하거나 대체 |
5.1 역할과 책임 분담
flowchart TB
subgraph 제안["제안 단계"]
PROPOSER[Proposer<br/>문제/대안 작성]
end
subgraph 검토["검토 단계"]
REVIEWERS[Reviewers<br/>리스크/근거 질문]
SME[SME<br/>도메인 전문가]
end
subgraph 결정["결정 단계"]
OWNER[Decision Owner<br/>최종 결정 책임]
APPROVER[Approver<br/>승인 권한]
end
subgraph 운영["운영 단계"]
MAINTAINER[Maintainer<br/>구현/유지보수]
AUDITOR[Auditor<br/>지표/회수 점검]
end
PROPOSER --> REVIEWERS
PROPOSER --> SME
REVIEWERS --> OWNER
SME --> OWNER
OWNER --> APPROVER
APPROVER --> MAINTAINER
MAINTAINER --> AUDITOR
AUDITOR -->|회수/Supersede 필요| PROPOSER
6. 표준 문서와 운영 단위 분류
왜 중요한가: "권장(Guide)"인지 "필수(Standard)"인지 흐려지면, 리뷰에서 같은 문서를 두고 정반대로 해석합니다.
| 유형 | 목적 | 예시 |
|---|---|---|
| Guide | 학습과 권장 패턴 | TypeScript, React, 성능 |
| Standard | 반드시 지켜야 하는 기준 | CI gate, 배포 승인, 접근성 |
| Checklist | 반복 작업 확인 | 배포, 장애 대응 |
| Runbook | 장애/운영 절차 | rollback, cache purge |
| Working group | 여러 이해관계자 조율 | MFE 도입, 배포 체계 변경 |
| RFC | 결정 전 제안과 논의 | 상태관리 교체 |
| ADR | 승인된 결정 기록 | 채택한 아키텍처 |
| Postmortem | 사고 후 학습 | 장애 원인과 재발 방지 |
문서 유형이 섞이면 읽는 사람이 "권장"과 "필수"를 구분하기 어렵습니다.
6.1 워킹그룹/RFC 운영 일정 예시 (gantt)
gantt title 의사결정 운영 일정 (2주 cadence 예시) dateFormat YYYY-MM-DD axisFormat %m-%d section Draft 문제/대안 정리 :a1, 2030-01-05, 3d Draft 공유 :a2, after a1, 1d section Review Review 기간 :b1, after a2, 5d 반대 의견 수렴 :b2, after b1, 2d section Decision 결정/ADR 작성 :c1, after b2, 1d section Implementation 구현/PoC 반영 :d1, after c1, 7d Validation 지표 측정 :d2, after d1, 5d section Followup Stable 전환/Archive :e1, after d2, 2d
7. AI 활용 기준
왜 중요한가: AI는 빠른 초안에는 강하지만, 사후 책임은 사람이 집니다. 역할이 흐려지면 잘못된 결정의 회수 비용을 누구도 책임지지 않습니다.
AI는 의사결정 제안서 초안 작성, 대안 발굴, 리스크 체크리스트 생성, ADR 요약에 쓸 수 있습니다. 단, 결정권자는 사람이 맡습니다.
- 공식 문서와 실제 코드 근거 없이 AI 답변만으로 승인하지 않습니다.
- 민감 회의록, 고객 데이터, 내부 URL, secret은 AI에 전달하지 않습니다.
- AI가 제안한 대안은 owner가 비용, 보안, 운영 영향 기준으로 검증합니다.
- 최종 결정에는 사람 decision maker를 기록합니다.
flowchart LR HUMAN[사람 Decision Owner] -->|문제 정의| AI[AI 보조] AI -->|대안 후보 N개| HUMAN HUMAN -->|근거/검증 요청| AI AI -->|문서/체크리스트 초안| HUMAN HUMAN -->|최종 결정 + ADR 서명| RECORD[(영구 기록)] AI -.AI는 서명하지 않음.-> RECORD
8. 체크리스트
- [ ] 워킹그룹 또는 제안서 필요 조건에 해당하는 변경이 기록 없이 진행되지 않는가
- [ ] 대안과 선택하지 않은 이유가 기록되어 있는가
- [ ] rollback 또는 exit criteria가 있는가
- [ ] 승인된 제안이 ADR로 전환되는가
- [ ] RFC/ADR 링크가 구현 PR과 연결되어 있는가
- [ ] 표준 문서 owner와 review cadence가 있는가
- [ ] 폐기된 결정이 archive/superseded 상태로 정리되는가
9. 제외한 벤더 종속 항목
공통 개발 가이드에는 특정 issue tracker, wiki, 문서 SaaS, 회의록 도구, AI 에이전트 제품의 워크플로우를 표준으로 포함하지 않습니다. 이 문서에는 어떤 협업 도구에서도 구현 가능한 워킹그룹/RFC/ADR 구조, 검토 원칙, 문서 분류, 유지보수 기준만 남깁니다.
실무 적용 가이드
언제 이 문서를 펼칠까
- 되돌리기 어려운 기술 선택이나 구조 변경을 하려 할 때
- 여러 팀의 ownership, 운영 책임, 배포 일정이 한 결정에 묶일 때
- 리뷰에서 같은 논쟁이 반복될 때
- 실험을 언제 채택하거나 폐기할지 기준이 없을 때
적용 순서
- 문제, 목표, non-goal을 한 문단씩 쓴다.
- 대안 2개 이상과 선택하지 않는 이유를 적는다.
- 비용, 위험, 보안/성능/접근성 영향을 분리한다.
- 검증 방법과 exit criteria를 숫자 또는 명령으로 둔다.
- 결정 후 ADR로 요약하고 후속 action을 연결한다.
함께 두는 파일
- 기능 결정 제안서는 관련 feature 문서나 issue와 링크한다.
- 아키텍처 ADR은 코드 boundary와 package owner 가까이에 둔다.
- PoC 코드는 폐기/승격 경로가 보이는 별도 폴더에 둔다.
흔한 실수
- 이미 정한 결론을 포장하기 위해 제안서를 쓴다.
- 대안과 철회 조건이 없다.
- 실험 결과 없이 표준으로 승격한다.
- ADR을 남기지 않아 같은 논쟁이 반복된다.
PR 완료 기준
- [ ] 대안, 위험, 검증, 철회 조건이 있다.
- [ ] owner와 due date가 있다.
- [ ] 후속 PR/issue가 연결되어 있다.
- [ ] 결정 상태가 accepted/deferred/superseded로 명확하다.
추천 항목 실행 우선순위 매핑
-
P1(7일 내)— 대안, 근거, rollback 기준을 갖춘 결정 기록 중 하나를 작은 변경 1건에 적용하고 증거(제안서 diff)를 남긴다. -
P2(30일 내)— 워킹그룹/RFC/ADR 기준을 팀 템플릿, 체크리스트, CI 중 한 곳에 고정한다. -
P3(90일 내)— 보류 안건 수, 결정 변경 횟수, 미해결 risk 수 추이를 보고 기준을 유지할지 조정할지 결정한다. -
완료 기준— 의사결정 오너가 증거와 철회 조건을 확인했다는 기록을 남긴다.
추천 항목 실행 체크리스트
-
[ ]
1단계(7일): 대안, 근거, rollback 기준을 갖춘 결정 기록 적용 대상을 1개로 좁힌다. -
[ ]
2단계(30일): 증거(제안서 diff, ADR 번호, PoC 결과, 반대 의견 처리)를 PR, ADR, 회고 중 한 곳에 연결한다. -
[ ]
3단계(60일): 보류 안건 수, 결정 변경 횟수, 미해결 risk 수가 기준 안에 들어왔는지 확인한다. -
[ ]
문제 대응: 미달성 사유와 다음 조치, 중단 여부를 같은 기록에 남긴다.
추천 항목 실행 운영 규칙
-
실행 게이트: 되돌릴 수 없는 결정은 대안과 철회 조건 없이는 승인하지 않는다. -
승인 체계: 의사결정 오너가 영향 범위와 rollback 담당자를 적용 전에 확인한다. 재개 조건: PoC 증거와 반대 의견 처리가 끝나면 ADR로 고정한다.정지 조건: 선호안만 있고 trade-off가 없으면 결정을 보류한다.-
리스크 점수: 되돌림 비용, 영향 팀 수, 미확인 가정 수로 산정한다. 리더 승인자: 기술 의사결정 리드가 최종 승인 책임을 맡는다.-
승인 역할: 제안서/ADR 작성자, 검토자, 운영 확인자를 분리해 기록한다. 재평가 주기: 큰 결정은 90일 뒤 실제 결과를 ADR에 덧붙인다.