Mission 1 설계 의사결정 기록 실습 가이드
📥 실습 입력 (Input)
- •
tech-design-meeting.md(회의 대화 기록)
💾 실습 출력 (Output)
- •
design-decision-log.md(의사결정 기록 문서)
1. 스토리 및 실습 배경
시간이 흘러 신규 개발자가 합류하여 소스 코드를 보다가 의문을 가집니다. "왜 예약 취소 이력 테이블을 굳이 메인 예약 테이블과 1:1로 찢어놓지 않고 예약 상태값만 바꿔서 이력 누적 테이블을 따로 파놓았을까? 그냥 컬럼 하나 추가하는 게 편했을 텐데."
이유는 6개월 전 보안/감사 요건 충족 및 일일 예약 취소 통계 집계 성능 최적화를 위해 시니어 엔지니어와 기획자가 심사숙고해 결정한 사안이었습니다. 하지만 이를 기록해 둔 문서가 전혀 없었기 때문에, 신규 개발자는 마음대로 설계를 뒤엎었다가 과거의 취소 통계 대시보드가 통째로 마비되는 장애를 일으켰습니다.
이번 미션에서는 기술설계 단계에서 진행된 데이터 정규화 및 아키텍처 의결 배경을 Codex를 활용해 정형화된 Design Decision Log 문서로 작성하여, 시스템의 역사적 자산과 설계 근거(Why)를 안전하게 관리하는 법을 배웁니다.
2. 학습 목표
- 회의록에서 정규화 및 데이터베이스 구조 설계 결정을 정확하게 추출할 수 있다.
- 의결 항목, 배경 사유, 대안 검토, 승인자, 향후 변경 가능성을 명문화할 수 있다.
- 설계 의사결정의 역사(Why)를 기록하여 신규 팀원의 중복 회의와 실수를 예방할 수 있다.
🛠️ 실제 따라 하기 실습 가이드
- 실습용 파일 생성: 아래 다운로드 버튼을 눌러
tech-design-meeting.md파일을automation/폴더 내에 저장합니다. - Codex 로깅 위임: Codex Client 프롬프트 입력창에 아래 **Codex 요청 프롬프트**를 전송하여 빌드합니다.
- 로그 점검: 출력된 리포트에서 결정 ID(DEC-003), 의결 배경, 검토 대안(기각 사유), 승인 주체가 정확히 구조화되었는지 검토합니다.
실습 자료 다운로드
Codex 요청 프롬프트
Mission 01 Prompt
회의 내용에서 정규화 및 데이터베이스 구조 설계 결정을 추출하여, 결정 항목, 배경 사유, 대안 검토, 승인자, 향후 변경 가능성을 포함하는 Design Decision Log를 작성해 주세요.
4. 결과물 예시
Codex는 대화 내역에서 아키텍처적 결론과 그 타협 근거를 아래와 같이 문헌화해 냅니다.
[결정 ID: DEC-003]
• 결정 사항: 예약 취소 이력을 Reservations 테이블에 직접 누적하지 않고 별도의 Reservation_Histories 테이블로 1:N 분리 설계.
• 의결 배경 (Why): 예약 상태 변경이 잦아 메인 테이블의 쓰기 잠금(Write Lock) 병목 방지 및 일자별/상담사별 이력 추적 요건 충족.
• 검토 대안: Reservations 테이블에 canceled_at, cancel_reason 직접 추가 (기각: 다중 취소 이력 기록 불가 및 테이블 비대화 리스크)
• 승인 주체: PM 및 Lead Engineer (승인자: Dev_Lead)
• 향후 변경 가능성: 대규모 트래픽 발생 시 NoSQL Document DB로 이력 이관 가능성 있음.
• 결정 사항: 예약 취소 이력을 Reservations 테이블에 직접 누적하지 않고 별도의 Reservation_Histories 테이블로 1:N 분리 설계.
• 의결 배경 (Why): 예약 상태 변경이 잦아 메인 테이블의 쓰기 잠금(Write Lock) 병목 방지 및 일자별/상담사별 이력 추적 요건 충족.
• 검토 대안: Reservations 테이블에 canceled_at, cancel_reason 직접 추가 (기각: 다중 취소 이력 기록 불가 및 테이블 비대화 리스크)
• 승인 주체: PM 및 Lead Engineer (승인자: Dev_Lead)
• 향후 변경 가능성: 대규모 트래픽 발생 시 NoSQL Document DB로 이력 이관 가능성 있음.