AX 프로젝트 · 컨설팅 가이드

AX 프로젝트 컨설팅 프로세스
10회차 진행 사례

과제 정의부터 MVP 구현, 품질 측정, 기능 완성, 고도화, 배포, 오픈베타, 최종 발표까지 —
과제 리더가 열 번의 컨설팅에서 어떤 순서로 어떤 활동을 하게 되는지 미리 그려 봅니다.
대상AX 과제 리더 · 과제 조원
진행 방식컨설팅 10회 + 회차 사이 팀 자율 수행
발표중간발표 없음 · 최종 발표 1회(10회차)
산출물 형식md 또는 html 파일 기본

전체 그림 — 10회차에 과제가 완성됩니다

Learning Objectives
  • 10회차 컨설팅의 전체 흐름과 각 회차의 목표·산출물을 설명할 수 있다.
  • 컨설팅 데이에 하는 일과 회차 사이에 팀이 스스로 해야 할 일을 구분할 수 있다.
  • 착수 전에 준비·제출할 자료와 산출물 형식 규칙(md/html)을 안다.
이해

진행 방식 — 컨설팅 10회, 그 사이는 팀의 시간

이번 프로젝트는 총 10회의 컨설팅을 거치며 각 조의 AX 과제를 실제로 동작하는 자동화 시스템으로 완성하는 여정입니다. 각 회차는 "지난 진도 점검 → 이번 회차 활동(컨설턴트와 함께) → 다음 회차까지 할 일 확정"의 리듬으로 진행되고, 회차와 회차 사이에는 팀이 스스로 개발과 검증을 이어 갑니다. 컨설팅 데이는 방향을 잡고 막힌 곳을 뚫는 날이고, 실제 진도는 그 사이의 시간에 쌓입니다.

1회차
과제 정의
SIPOC · 프로세스 재설계 · 데이터 정의 · 개발계획서
2회차
MVP 정의·구현
핵심 기능·흐름 선정, 집중 구현, 가능성 실험
3회차
하네스 엔지니어링
품질 지표 정의 · 측정 · 원인분석 · 개선
4회차
기능 확장·검증
MVP 너머 추가 기능 개발, 전 기능 구현
5회차
고도화 · 연계
로직 고도화, 인접 시스템 확장
6회차
배포 · 보안
사내 서버/공개 웹, 로그인, 백·프론트 배포
7회차
안정화 · 매뉴얼
시스템 안정화, 설명서·사용자 매뉴얼
8회차
오픈베타
부서·사내 배포, 실사용 데이터 추적·분석
9회차
데이터 기반 개선
실사용 데이터로 시스템 개선 (지속)
10회차
완성 · 최종 발표
효과 정량화 · 문서 revision · Lessons Learned

회차마다 답해야 할 핵심 질문이 하나씩 있습니다. 이 질문에 답이 나왔으면 그 회차는 성공입니다.

회차핵심 질문주요 활동대표 산출물
1회차우리는 무엇을 자동화하는가?과제 범위·SIPOC 정의, 휴먼 프로세스 → 프로그램 프로세스 재설계, 인풋·아웃풋 데이터 템플릿 정의, 백엔드·프론트엔드 기획, 개발계획서 완성개발계획서
2회차자동화가 정말 가능한가?전체 기획 중 자동화의 핵심 기능·핵심 흐름 선정, MVP 범위 확정, Plan 모드 집중 구현, 자동화 가능성 실험·판정MVP 코드 · 가능성 실험 기록
3회차아웃풋 품질은 몇 점인가?MVP를 대상으로 테스트 데이터 자동 생성, 대량 인풋 투입·아웃풋 측정, 품질 지표 정의·현수준 측정, 원인분석 → 개선 → 효과 평가지표 정의서 · 측정/개선 리포트
4회차기획한 기능이 전부 동작하는가?MVP 수준을 넘어 추가 기능 개발·구현, 기능 확인·데이터 확인, 실데이터 대조 검증 — 기능 목록 100% 구현기능 완성 코드 · 검증 보고
5회차어디까지 확장할 것인가?자동화 로직 고도화, 인접 시스템(메일·알림·스토리지·사내 시스템)으로 확장·연계 개발고도화·연계 기능 코드
6회차누구나 접속할 수 있는가?배포 대상 선택(사내 서버/공개 웹), 백엔드·프론트엔드 배포와 연결, 로그인 및 보안 설정(뒷문 차단)운영 URL · 보안 점검 보고
7회차낯선 사용자에게 맡겨도 되는가?전체 시스템 안정화 — 보안 재점검(운영 URL 기준 뒷문 재시험), 에러 처리(틀린 입력에도 죽지 않게), 백업·복원 리허설, 부하 시험(하네스 재사용). 시스템 설명서(OVERVIEW.md·설계·운영 가이드)와 사용자 매뉴얼(화면 캡처·업무 시나리오 위주) 작성, 도움말 링크·공유 폴더 등 사용자가 찾을 위치에 게시안정화 점검 보고 · 매뉴얼
8회차실제로 쓰이는가?오픈 베타 서비스 — 부서/사내 배포, 실사용 데이터 추적, 분석·디버깅, 시스템 개선베타 운영 · 이슈 로그
9회차데이터가 시키는 개선은 무엇인가?실사용 데이터 기반의 시스템 개선(지속) — 개선 백로그, 우선순위, 지표 추세 관리개선 백로그 · 지표 추세
10회차무엇이 얼마나 좋아졌는가?최종 시스템 완성, 활용 효과 평가·정량화, 개발 히스토리 정리, 설명서·매뉴얼 revision, Lessons Learned, 최종 발표최종 코드 · 효과 평가서 · 발표
실습

착수 전에 준비할 것

학습 안내1회차 전에 완료. 아래 두 가지를 준비해서 1회차 컨설팅에 가져오면, 첫 회차부터 곧바로 본론(과제 정의)으로 들어갈 수 있습니다.

① 이미 진행한 것이 있다면 — OVERVIEW.md를 먼저 제출

컨설팅 착수 전에 과제별로 미리 작성한 기획서나 일부 개발한 코드가 있다면, 그 내용을 요약한 OVERVIEW.md 파일(md)을 미리 제출해 주십시오. 시범 운영 중인 챗봇, 부서에서 이미 쓰고 있는 자동화 도구처럼 움직이는 것이 있는 과제라면 특히 그렇습니다. 컨설턴트가 사전에 읽고 오면 1회차의 밀도가 완전히 달라집니다.

OVERVIEW.md에 담을 것내용
과제 개요무엇을 자동화하려는가, 누가 쓰는가 — 3~5문장
현재 상태기획서만 있음 / 프로토타입 있음 / 일부 운영 중 — 있는 그대로
지금까지 만든 것화면·기능 목록, 사용 기술, 실행 방법(코드가 있는 경우)
막힌 곳·고민컨설팅에서 풀고 싶은 문제 — 구체적일수록 좋습니다

② 산출물 형식 규칙 — md 또는 html

이번 프로젝트에서 제출하는 모든 문서 산출물은 마크다운(.md) 또는 HTML(.html) 파일을 기본으로 합니다. 이유는 단순합니다.

1AI가 읽고 쓰는 형식

md는 AI 코딩 도구가 가장 잘 읽고 쓰는 형식입니다. 개발계획서가 md면 그대로 AI에게 주고 "이 계획서대로 만들어"라고 할 수 있습니다.

2코드와 함께 산다

문서가 코드 저장소 안에 md로 있으면 코드와 함께 버전 관리되고, 수정 이력이 남고, 개발이 진행될수록 문서도 함께 자랍니다.

3바로 열리고 바로 공유

html은 더블클릭으로 열리고 링크로 공유됩니다. 보고용 문서는 md로 쓰고 html로 변환하면 두 마리를 다 잡습니다.

PPT는요? 발표는 10회차에 한 번뿐입니다. 그때까지 PPT를 만들 일은 없습니다. 회차별 산출물은 전부 md/html로 — 문서 꾸미는 시간을 시스템 만드는 시간으로 돌리는 것이 이 규칙의 진짜 목적입니다.
사례 업무관리시스템 · 실제 완성·운영 중인 사례

사례로 보기 — 이 교재의 길잡이 사례를 소개합니다

이 교재는 매 회차 설명 끝에 실제로 완성된 하나의 시스템을 사례로 붙여, "그 회차의 활동을 실전에서는 이렇게 했다"를 보여줍니다. 사례 부분은 지금 보시는 것처럼 테두리가 있는 주황색 박스로 구분됩니다.

사례의 주인공은 AI 교육·컨설팅사 알앤비디파트너스의 사내 업무관리시스템입니다. 내부 직원 7명과 외부강사 약 20명이 쓰는 시스템으로, 이런 문제에서 출발했습니다.

출발점 — 하나의 업무 흐름, 세 개의 연결되지 않은 도구

영업 → 견적 → 수주 → 일정 배정 → 강의 수행 → 계산서 발행 → 수금 → 외부강사 정산. 하나로 이어진 업무가 구글 시트(일정) · 에어테이블(프로젝트와 돈) · 엑셀(정산 지급대장) 세 곳에 흩어져 있었습니다. 영업이 성사되면 시트와 에어테이블에 이중 입력하고, 강의와 계약의 연결은 담당자의 기억에 의존하고, 월 매출·미수금·강사 실적은 매번 손으로 집계했습니다.

구글 시트 일정 — 셀 값 + 셀 노트 메모 에어테이블 프로젝트와 돈 — 22개 컬럼 엑셀 지급대장 외부강사 정산 — 세금 수식 이중 입력 연결은 기억에 의존 구조화 이관 1,382행 검증 업무관리시스템 Next.js · PostgreSQL — 한 곳에 한 번만 입력 캘린더 · 일정 프로젝트 견적서 계산서 · 수금 지급 · 정산 대시보드 견적 → 프로젝트 → 강의 → 계산서 → 지급까지 자동 연결
세 개의 연결되지 않은 도구가 하나의 웹 시스템으로 — 한 번 입력하면 나머지가 자동으로 연결됩니다.

이 문제를 Next.js + PostgreSQL 웹 시스템 하나로 통합했습니다. 코드는 사람이 한 줄도 직접 쓰지 않고 AI 코딩 도구와의 대화(바이브코딩)로 개발했으며, 첫 코드부터 배포까지 약 5일, 그 과정의 모든 결정이 D1~D46 결정 로그로 남아 있습니다. 규모가 커 보이지만 화면 9개, 테이블 10개짜리 시스템입니다 — 여러분 과제와 다르지 않은 체급입니다.

3 → 1
도구 3개(시트·에어테이블·엑셀)를 웹 시스템 하나로
약 5일
스캐폴드(D1)부터 배포(D46)까지
D1~D46
전 과정이 결정 로그로 기록
1,382행
실데이터 전량 이관·검증 완료
함께 볼 자료. 이 사례의 개발 전 과정은 별도 교재 「바이브코딩으로 업무관리 시스템 만들기」(html/md)로 정리되어 있습니다. 문제 정의(1장)부터 배포(7장)까지 실제 프롬프트와 함정 노트가 담겨 있으니, 본 가이드라인과 함께 참고 교재로 활용하십시오.
KEY POINT · 10회차를 관통하는 원칙

코드는 AI가 짭니다.
과제 리더의 일은 정의하고, 결정하고, 검증하는 것입니다.

10회 동안 여러분은 개발자가 되는 것이 아닙니다. 업무를 가장 잘 아는 사람으로서 무엇을 만들지 정의하고(1회차), 갈림길마다 결정을 내리고 기록하고(매 회차), AI가 "다 됐습니다"라고 할 때마다 정말 됐는지 확인하는(매 회차) 사람이 됩니다. 이 세 가지를 놓치지 않으면 코딩 경험이 없어도 시스템은 완성됩니다.

정의MVP측정완성확장배포개선정리

1회차 — 과제 정의와 개발계획서

Learning Objectives
  • 조별로 정의한 과제의 범위와 업무처리 프로세스를 재정의하고, SIPOC으로 분석할 수 있다.
  • 사람이 하던 프로세스를 그대로 옮기지 않고, 프로그램 자동화에 맞는 프로세스로 재설계할 수 있다.
  • 인풋·아웃풋 데이터와 구체적인 데이터 템플릿, 백엔드(저장)·프론트엔드(화면) 기획을 정의할 수 있다.
  • 개발계획서를 완성한다 — AI 코딩 도구에 그대로 건넬 수 있는 수준으로.

1회차는 10회차 전체에서 가장 중요한 날입니다. 이날 정의한 범위·프로세스·데이터가 남은 아홉 회차의 궤도를 결정합니다. 1회차의 목표는 개발계획서 한 벌을 완성하는 것 — 이 계획서가 2회차 MVP부터 최종 완성까지 모든 개발의 기준 문서가 됩니다. 활동 순서는 다음과 같습니다.

STEP 1
범위·SIPOC 정의
무엇을 자동화하는가
STEP 2
프로세스 재설계
휴먼 → 프로그램
STEP 3
데이터 정의
인풋·아웃풋 템플릿
STEP 4
화면·저장 기획
프론트엔드·백엔드
STEP 5
개발계획서
md 한 벌로 완성
이해

STEP 1 · 업무 범위와 SIPOC 정의

첫 활동은 조별로 정의해 온 과제의 범위를 다시 긋고, 업무처리 프로세스를 재정의·분석하는 것입니다. 기획서의 과제 설명은 대개 "무엇이 불편한지"까지는 잘 담고 있지만, "그 업무가 정확히 어디서 시작해서 어디서 끝나는지"는 흐릿한 경우가 많습니다. 이걸 선명하게 만드는 도구가 SIPOC입니다.

SIPOC은 하나의 업무 프로세스를 다섯 칸으로 정리합니다 — 어떤 공급자(Supplier)로부터 어떤 데이터(Input)를 받아, 어떻게 처리(Process)해서, 어떤 산출물(Output)을 만들고, 그것을 어떤 고객(Customer)에게 제공하는가.

S — Supplier
공급자. 인풋을 주는 사람·부서·시스템. 예: 발주 담당자, 영업 담당, 고객사, ERP, 기존 엑셀 파일
I — Input
인풋 데이터. 프로세스에 들어오는 파일·데이터·요청. "발주 정보" 같은 추상어가 아니라 실물 파일 이름과 항목까지 적습니다
P — Process
처리 단계. 인풋이 아웃풋으로 바뀌는 단계들. 동사로 5~7단계가 적당합니다. 10단계가 넘으면 범위가 큰 것입니다
O — Output
산출물. 프로세스가 만들어 내는 것 — 문서, 표, 화면, 알림, 파일
C — Customer
고객. 아웃풋을 받아 쓰는 사람. 사내 동료·타 부서·외부 파트너 모두 고객입니다. 고객이 불분명한 아웃풋은 만들 이유도 불분명합니다

예시 — 외주 발주 업무의 SIPOC

여러 산업에 공통으로 나타나는 외주 발주 관리 업무를 예로 들면 이렇게 정리됩니다. 여러분 과제도 이 표 한 장으로 시작하십시오.

구분내용
S 공급자작업을 발주하는 발주 담당자(발주 요청), 외주 업체(시안·최종본), 단가 기준을 관리하는 부서
I 인풋발주 요청 정보(프로젝트명·수량·작업 유형·규격·요구 스타일·마감일), 항목별 단가표, 참고 자료
P 프로세스① 발주서 작성 → ② 업체 발주 → ③ 시안 수신·검토 → ④ 수정 요청(반복) → ⑤ 최종본 검수 → ⑥ 정산 처리
O 아웃풋표준 발주서(AI 사양 초안 포함), 진행 현황·수정 이력 대시보드, 정산 자료
C 고객외주 업체(발주서 수신), 요청 부서(진행 현황), 정산 담당(정산 자료)
범위 선긋기. SIPOC과 함께 "만들 것 / 만들지 않을 것" 두 줄짜리 목록을 반드시 만드십시오. 10회차 동안 범위는 늘어나려고만 합니다. "만들지 않을 것" 목록이 여러분의 일정을 지켜 줍니다. 확장은 5회차에 하면 됩니다.
이해

STEP 2 · 휴먼 프로세스를 프로그램 프로세스로 재설계한다

SIPOC의 P(프로세스)를 채울 때 반드시 거쳐야 할 단계가 있습니다. 먼저 기존에 사람이 하던 프로세스(휴먼 프로세스)를 있는 그대로 정리하고, 그다음 이것을 프로그램이 수행하는 프로세스로 어떻게 바꿀 것인지 재정의하는 것입니다.

가장 흔한 실패가 휴먼 프로세스를 그대로 코드로 변환해서 자동화 프로세스를 만드는 것입니다. 사람의 일 순서를 그대로 프로그램에 옮기면, 사람의 한계까지 그대로 물려받은 어색한 시스템이 나옵니다. 이 둘은 원래 다릅니다.

휴먼 프로세스 — 사람의 방식
  • 한 건씩 순차 처리한다
  • 맥락을 기억과 눈치로 보완한다
  • 예외를 만나면 즉석에서 판단한다
  • 중간 결과를 머릿속·개인 파일에 둔다
  • 같은 정보를 여러 곳에 반복 입력한다
  • 판단 기준이 담당자의 암묵지로 존재한다
프로그램 프로세스 — 기계의 방식
  • 수백 건을 일괄·병렬 처리한다
  • 저장된 데이터만 안다 — 맥락을 데이터로 명시해야 한다
  • 예외는 미리 정의된 규칙으로 처리하거나 사람에게 넘긴다
  • 모든 중간 산출물을 저장·추적할 수 있다
  • 한 번 입력하면 필요한 모든 곳에서 참조한다
  • 판단 기준이 명문화된 규칙·코드로 존재한다

진행 순서 — 정리하고, 의심하고, 다시 설계한다

① 휴먼 프로세스 정리. 실제로 쓰는 파일을 열어 놓고, 업무를 하는 순서대로 단계를 나열합니다. 각 단계에서 "무엇을 보고(인풋), 무엇을 판단하고(기준), 무엇을 남기는지(아웃풋)"를 적습니다. 담당자 머릿속에만 있는 판단 기준("이런 건은 대충 이렇게 처리해요")과 예외 케이스("가끔 이런 게 들어오는데 그땐…")를 최대한 끄집어내 명문화합니다.

② 단계별 의심. 정리된 휴먼 프로세스의 각 단계에 다섯 가지 질문을 던집니다.

재설계 질문YES라면
이 단계는 사람의 한계 때문에 존재하는가? (기억 보조, 옮겨 적기, 찾기)프로그램에선 단계 자체가 사라질 수 있습니다
여러 단계를 한 번에 처리할 수 있는가?합치십시오 — 사람은 못 해도 프로그램은 합니다
판단 기준을 규칙으로 쓸 수 있는가?규칙으로 명문화해 자동화 대상에 넣습니다
규칙으로 못 쓰는 판단인가?사람 확인 지점으로 남기되, 프로그램이 후보와 근거를 준비해 주게 합니다
예외가 들어오면 어디로 보내는가?예외 격리 경로(별도 목록·상태)를 프로세스에 명시합니다 — 예외를 버리면 데이터가 사라집니다

③ 프로그램 프로세스 확정. 질문을 통과한 결과를 to-be 프로세스로 다시 그립니다. as-is(휴먼)와 to-be(프로그램)를 나란히 놓은 표가 개발계획서의 핵심 페이지가 됩니다.

to-be 프로세스는 플로우차트로 확정한다

재설계한 프로그램 프로세스는 문장 목록으로 두지 말고 플로우차트로 그려서 확정합니다. 플로우차트 한 장에는 다섯 가지가 다 보여야 합니다 — 어떤 정보가 어디서 들어오고(인풋), 어떤 정보와 합쳐지고(결합), 어떻게 처리되고(프로세싱), 결과가 어떤 형식에 담기고(아웃풋), 누구에게 전달되는지(고객). SIPOC이 다섯 칸짜리 표라면, 플로우차트는 그 표에 흐름과 분기를 입힌 설계도입니다.

요소그리는 법반드시 적을 것
인풋흐름의 시작에 데이터 모양(평행사변형)으로누가·어디서 주는지, 형태(파일·입력 폼·시스템)
결합 데이터처리 상자 옆에서 화살표로 합류무엇을 기준(키)으로 합쳐지는지 — 고객사명, 프로젝트 번호 등
처리사각형, 동사로자동인지 사람 확인인지 — 색으로 구분
판단·분기마름모, 질문형으로예/아니오 각각의 경로 — 예외 경로 포함
아웃풋·전달데이터 모양 + 받는 사람형식(PDF·화면·메일·DB 저장)과 customer
발주 요청 입력 발주 담당자 — 입력 폼 표준 발주서 생성 AI 사양 초안 자동 첨부 단가표 참조 데이터 유형·단가로 결합 발주서 PDF → 업체에 메일 발송 산출물 승인? 정산 자료 생성 → 정산 담당에게 전달 아니오 수정 요청 기록 ↺ 수정 이력 저장 · 업체 재발송 데이터·문서 (인풋/아웃풋) 처리 판단·분기 사람 입력·판단 시스템 자동
플로우차트 예시 — 외주 발주. 어떤 정보가 어디서 들어와(발주 담당자), 무엇과 합쳐져(단가표), 어떻게 처리되고(발주서 생성), 어떤 형식으로(PDF·메일) 누구에게(외주 업체·정산 담당) 가는지가 한 장에 보입니다.

플로우차트는 그림 도구 없이 mermaid 문법으로 md 파일 안에 그릴 수 있습니다. 이렇게 만든 플로우차트는 사람이 보는 설계도이자, AI에게 "이 흐름대로 구현해 줘"라고 그대로 건네는 사양서가 됩니다.

md 안에 그리기 — mermaid 플로우차트
flowchart LR
  A[/발주 요청 입력 · 발주 담당자/] --> B[표준 발주서 생성 · 자동]
  P[/단가표 · 참조 데이터/] --> B
  B --> C[/발주서 PDF → 업체 메일 발송/]
  C --> D{산출물 승인?}
  D -- 아니오 --> E[수정 요청 기록 → 재발송]
  D -- 예 --> F[/정산 자료 → 정산 담당/]
함정. "사람이 하던 대로"는 요구사항이 아니라 관성입니다. 예를 들어 사람은 발주서를 한 건씩 워드로 썼지만, 프로그램은 입력 폼 한 번에 표준 발주서 생성·샘플 이미지 첨부·이력 기록을 동시에 합니다. 반대로, 사람이 순식간에 하던 "눈치 판단"(이 고객사명과 저 고객사명이 같은 회사라는 것)은 프로그램에겐 명시적 규칙이 필요합니다. 사라지는 단계와 새로 생기는 단계를 둘 다 찾아내는 것이 재설계입니다.
실습

STEP 3 · 인풋·아웃풋 데이터 정의와 데이터 템플릿

학습 안내작성. SIPOC의 I와 O를 데이터 명세 수준까지 구체화합니다. 완료 기준: 인풋마다 항목 명세표가 있고, 실물 샘플 파일을 확보했는가.

1회차에서 인풋·아웃풋 데이터를 정의하고, 구체적인 데이터 템플릿까지 정합니다. "발주 정보를 입력받는다" 수준으로는 개발을 시작할 수 없습니다. 항목 하나하나를 아래 명세표 양식으로 확정하십시오.

항목명형식예시 값필수비고
프로젝트명텍스트2026 신제품 카탈로그필수프로젝트 마스터에서 선택
수량숫자12필수1 이상
작업 유형선택신규 제작 / 수정 / 검수필수선택지 고정 — 자유 입력 금지
마감일날짜2026-08-14필수오늘 이후만 허용
참고 자료파일ref_01.pdf선택여러 장 가능

템플릿을 정의할 때의 원칙 세 가지입니다.

1실물 데이터를 먼저 확보

가짜 데이터로 개발하지 않습니다. 지금 실제로 쓰는 엑셀·문서·시스템 내보내기 파일을 확보해서 그 안의 진짜 항목·진짜 지저분함(빈칸, 오타, 제각각인 표기)을 보고 템플릿을 정의합니다.

2자유 입력을 줄인다

사람은 "신규제작", "신규 제작", "신규"를 같은 것으로 알지만 프로그램은 모릅니다. 선택형으로 바꿀 수 있는 항목은 전부 선택형으로 — 데이터 품질은 입력 단계에서 결정됩니다.

3아웃풋도 템플릿으로

산출물(보고서·발주서·결과표)도 항목과 서식을 미리 확정합니다. 아웃풋 템플릿이 확정돼야 "결과가 맞게 나왔는지"를 2·3회차에서 판정할 수 있습니다.

실습

STEP 4 · 백엔드·프론트엔드 기획

학습 안내작성. 저장 계획(백엔드)과 화면 계획(프론트엔드)을 각각 표로 만듭니다. 완료 기준: 두 표만 보고 무엇을 저장하고 어떤 화면을 만들지 남이 이해할 수 있는가.

백엔드 기획 — 어떤 데이터를 저장할 것인가

화면 뒤에서 데이터를 저장하고 처리하는 부분이 백엔드입니다. 기획 단계에서 답할 질문은 하나입니다: "무엇을 저장할 것인가." 아래 질문에 하나씩 답하면 저장 계획이 됩니다.

질문판단 기준
인풋 원본도 저장하는가?원본을 남기면 "처리 결과가 이상할 때 원본과 대조"가 가능해집니다. 파일 원본은 보관하고, DB에는 구조화된 형태로 넣는 이원화가 보통 정답입니다
중간 산출물을 저장하는가?단계가 여러 개면 중간 결과를 저장해야 어느 단계에서 틀어졌는지 찾을 수 있습니다
결과 이력을 남기는가?"언제 누가 무엇을 처리했나"가 필요한 업무(발주·정산·검수)라면 이력은 필수입니다
수정 이력이 필요한가?수정 횟수·사유가 관리 대상인 업무(외주 수정 요청 등)라면 수정 자체를 데이터로 저장합니다
사용자·권한을 저장하는가?여러 명이 쓰면 로그인·권한이 필요합니다. 단, 본격 구현은 6회차 — 지금은 "필요하다"만 기록

테이블과 필드를 정의한다 — 인풋과 결과가 담길 그릇

저장할 데이터가 정해지면 그것을 담을 테이블을 정의합니다. 테이블은 한 종류의 데이터를 담는 표입니다 — 한 행이 데이터 1건, 각 필드(열)가 항목 하나입니다. 인풋으로 들어온 것을 담는 테이블과 프로세싱된 결과를 담는 테이블을 구분해서, 테이블마다 아래 양식(테이블 정의서)을 채웁니다.

테이블 정의서 양식 — 예: 발주서(Order) 테이블
필드명형식설명연결
id고유번호발주서 1건마다 자동 발번 (O001…)기본 키(PK)
projectId고유번호어느 프로젝트의 발주인가→ 프로젝트.id
vendorId고유번호어느 외주 업체에 발주했나→ 업체.id
itemCount · type · dueDate숫자·선택·날짜수량 · 작업 유형 · 마감일
status선택진행 / 수정중 / 완료

핵심은 연결 필드입니다. 관계형 DB에서 테이블끼리는 고유번호(id) 필드로 연결됩니다 — 발주서 테이블에 업체의 "이름"이 아니라 업체 테이블의 id를 담는 식입니다. 이름은 바뀌고 중복될 수 있지만 id는 유일하기 때문입니다. 어떤 테이블의 어떤 필드가 어느 테이블을 가리키는지 정하는 것이 관계 정의이고, 관계의 종류는 네 가지뿐입니다.

관계구현 방법
1 : 1한 건에 정확히 한 건강의 1건 ↔ 지급행 1건한쪽이 상대 id를 유일(unique)하게 보유
1 : 다 (1:N)한 건 아래에 여러 건발주서 1건 → 수정 요청 N건자식(수정 요청)이 부모의 id(orderId)를 필드로 보유
다 : 1 (N:1)여러 건이 한 건을 가리킴강의 N건 → 강사 1명1:다를 반대쪽에서 본 것 — 구조는 같음 (강의가 instructorId 보유)
다 : 다 (N:M)서로가 서로를 여러 건씩프로젝트 N건 ↔ 담당자 M명중간(연결) 테이블을 하나 만들어 양쪽 id를 한 행에 담는다
문장으로 적으면 AI가 그려 줍니다. "프로젝트 1건에 계산서 여러 장과 강의 여러 건이 달린다. 강의 1건의 강사는 1명. 강의 1건에 지급행 1건" — 이렇게 관계를 문장으로 개발계획서에 적어 주면, AI가 테이블 구조(스키마)와 관계도(ERD)로 바꿔 줍니다. 그림이 필요하면 mermaid의 erDiagram 문법으로 md 안에 그릴 수도 있습니다.

프론트엔드 기획 — 어떤 화면에서 무엇을 하게 할 것인가

사용자들에게 어떤 화면을 보여주고 어떤 기능을 제공할지 화면 목록으로 정리합니다. 화면 하나당 한 행이면 충분합니다.

화면명보여주는 것할 수 있는 것주 사용자
발주 목록전체 발주 건 + 상태(진행/수정중/완료)검색·필터, 새 발주 등록발주 담당자
발주 상세발주 내용, 수정 이력, 정산 정보수정 요청 등록, 상태 변경발주 담당자·관리자
대시보드진행 현황 집계, 지연 건 경고기간·업체별 조회팀장
실습

STEP 5 · 개발계획서 완성

학습 안내작성. STEP 1~4의 산출물을 개발계획서 한 벌(md)로 묶습니다. 완료 기준: 이 문서 하나만 주면 AI가 개발을 시작할 수 있는가.

STEP 1~4의 산출물을 md 파일 하나로 묶으면 그것이 개발계획서입니다. 목차는 다음 여덟 개면 충분합니다.

개발계획서.md — 표준 목차
1. 문제 정의        — 무엇이 불편한가, 한 문장의 문제 정의문
2. SIPOC           — 공급자 · 인풋 · 프로세스 · 아웃풋 · 고객
3. 프로세스 재설계   — as-is/to-be 대비표 + to-be 플로우차트(인풋·결합·처리·아웃풋·전달)
4. 데이터 정의      — 인풋 템플릿 명세, 테이블 정의서(필드·연결·관계), 아웃풋 템플릿
5. 화면·기능        — 화면 목록표 (화면명 | 보여주는 것 | 할 수 있는 것 | 사용자)
6. 기술 스택        — AI에게 물어서 결정 (아래 프롬프트 참고)
7. 만들지 않을 것    — 이번 범위에서 제외하는 것들
8. 일정            — 10회차 로드맵에 맞춘 우리 조의 계획
기술 스택은 외우는 게 아니라 묻는 것. "우리는 이런 시스템을 만든다(계획서 첨부). 사내에서 쓰고, 개발자는 없고, AI 도구로 개발한다. 기술 스택을 2~3안으로 비교해서 추천해 줘"라고 AI에게 물으십시오. 비교표를 받고, 선택 이유와 함께 계획서 6번에 기록하면 됩니다.
사례 업무관리시스템 · 1회차에 해당하는 활동

사례로 보기 — 업무관리시스템의 과제 정의

문제 정의문과 SIPOC

업무관리시스템 팀은 소스 파일 3개를 열어 놓고 관찰한 끝에 문제를 한 문장으로 압축했습니다 — "영업부터 정산까지 하나의 흐름인 일이, 세 개의 연결되지 않은 도구에 흩어져 있어 이중 입력과 수작업 집계가 발생한다. 한 곳에 한 번만 입력하면 나머지가 자동으로 연결되는 시스템이 필요하다." SIPOC으로 정리하면 이렇습니다.

구분내용
S 공급자영업 담당(견적·수주 정보), 고객사(계약·담당자 정보), 내부 직원·외부강사(일정·수행 실적), 회계법인(원천징수 계산 기준) — 그리고 기존 3개 도구가 초기 데이터 공급원
I 인풋에어테이블 내보내기 CSV(프로젝트 159행), 회사 캘린더 엑셀(색칠 셀 + 셀 노트 1,022개), 외부 인건비 지급대장 엑셀(지급내역 + 계좌번호 시트)
P 프로세스견적서 작성·발송 → 프로젝트 등록 → 캘린더 일정 배정(강의↔프로젝트 연결) → 강의 수행 → 계산서 발행 → 수금 추적 → 외부강사 지급행 자동 생성 → 지급
O 아웃풋캘린더·프로젝트·계산서·지급대장 화면, 견적서 PDF와 발송 이력, 대시보드(계약총액·매출·미청구·미수금)
C 고객전 직원(조회·입력), 관리자(개인별 실적·승인), 외부강사(정산 수령), 고객사(견적서 수신)

휴먼 프로세스 → 프로그램 프로세스 재설계

이 팀이 휴먼 프로세스를 그대로 옮기지 않은 지점들이 이 사례의 백미입니다.

휴먼 — 캘린더 셀 + 셀 노트 (비정형) 한화인경원 * 시간 : 10~17시 * 장소 : 대전 연수원 * 주제 : 생성형 AI 실무 * 담당자 연락처 : 010-****-**** 재설계 프로그램 — Lecture 테이블 (구조화 필드) 날짜2026-03-12 고객사한화인재경영원 (별칭 통합) 강사김○○ (멤버 테이블 연결) 시간 · 장소10:00–17:00 · 대전 연수원 주제생성형 AI 실무 프로젝트P023 ← 자동 연결
그대로 옮기지 않습니다 — 셀 노트의 비정형 정보가 검색·집계 가능한 구조화 필드로 재설계되었습니다.
휴먼 프로세스 (as-is)프로그램 프로세스 (to-be)
시간·장소·주제를 캘린더 셀의 메모(셀 노트)에 적음 — 검색 불가시간·장소·주제를 구조화된 필드로 저장 — 검색·집계 가능
외부강사는 "외부 1~4"라는 자리 행으로 관리 — 누가 강의했는지 추적 불가내부·외부를 통합한 멤버 테이블에 실명으로 — 강사별 실적·정산 자동 연결
영업 성사 시 시트와 에어테이블에 이중 입력한 번 입력 — 견적서에서 "프로젝트로 반영" 클릭이면 끝
외부강사 강의 후 지급대장에 수기로 행 추가, 수식으로 세금 계산외부강사 강의를 등록하면 지급행이 자동 생성되고 원천징수가 자동 계산
월 매출·미수금을 매번 손으로 집계대시보드가 실시간 자동 집계 — 특히 "미청구 = 계약총액 − 발행완료 합계"는 시트 시절엔 아무도 계산하지 않던 숫자

자동 연결 흐름 — 견적에서 미청구까지, 플로우차트로 본 to-be

재설계된 to-be 프로세스를 플로우차트로 그리면 이 시스템의 본질이 한눈에 보입니다. 사람이 하는 일은 파란 상자 네 개뿐 — 나머지 생성·발송·등록·계산·집계는 전부 시스템이 잇습니다.

견적서 작성 영업 담당 — 입력 폼 PDF 생성 · 메일 자동 발송 → 고객사 · 발송 이력 저장 "프로젝트로 반영" 클릭 수주 확정 시 — 클릭 한 번 프로젝트 자동 등록 고객사·금액 자동 인계 · P번호 강의 스케줄링 캘린더 — P번호 아래 연결 진척율 자동 계산 강의 완료 체크 기반 계산서 원클릭 발행 미발행 잔액 자동 프리필 미청구 잔액 자동 관리 — 계약총액 − 발행완료 계산서 합계 대시보드에 상시 표시 → 수금 관리로 연결 · 시트 시절엔 아무도 계산하지 않던 숫자 사람 입력·클릭 — 4곳뿐 시스템 자동
영업에서 미청구 관리까지의 자동 연결 흐름 — 견적서가 프로젝트가 되고, 강의 완료가 진척율이 되고, 발행 실적이 미청구 잔액이 됩니다.

데이터 정의 — 실물 파일에서 출발한 템플릿

인풋 3종은 전부 실물 파일로 확보한 뒤 구조를 명세화했습니다. 가짜 예시 데이터가 아니라 빈칸·별칭·비정형 메모가 섞인 진짜 데이터로 시작했기 때문에, 뒤 회차의 함정들을 미리 만날 수 있었습니다.

인풋 파일템플릿(구조) 명세
모든 프로젝트.csv
에어테이블 내보내기
1행 = 계약 1건, 22컬럼 — 고객사 · 프로젝트명 · 담당자 · 금액 3종(총액/공급가액/세금) · 업무 단계 · 계산서/수금 상태 · 수금계좌 · 사업자등록증 URL
회사 캘린더.xlsx행 = 사람(내부 7명 + 외부 1~4), 열 = 날짜, 셀 값 = 고객사명, 셀 노트 = * 시간 / * 장소 / * 주제 / * 담당자 연락처 / * 특이사항 정형 템플릿
지급대장.xlsx회계처리연월 · 지급일자 · 대상자 · 소득구분 · 금액 배분(회사/강사 share) · 소득세 · 지방세 · 실지급액 + 계좌번호 별도 시트. 세금 수식: 소득세 = share × 3%(사업소득) 또는 8%(기타소득)를 10원 절사, 지방세 = 소득세 × 10% 절사

백엔드·프론트엔드 기획

백엔드: "인풋도 저장할 것인가"에 대한 팀의 답은 이원화였습니다 — 원본 파일은 sources/ 폴더에 그대로 보존하고, DB에는 구조화해 이관. 저장 구조는 프로젝트·계산서·강의의 3층 구조(프로젝트 1건 : 계산서 N장 : 강의 N건)를 뼈대로 테이블 10개. 프론트엔드: 대시보드·캘린더·프로젝트·강의·계산서·견적서·고객사·멤버·지급 화면 9종을 화면 목록표로 확정했습니다.

저장 설계의 산출물이 아래 테이블 관계도입니다. 모든 연결이 이름이 아니라 id 필드로 맺어져 있습니다. 참고로 이 시스템에 다:다 관계는 없었습니다 — 필요했다면(예: 강의 N건 ↔ 교재 M권) 중간 테이블을 두는 표준 방식으로 풀었을 것입니다.

Client — 고객사 idC001… · PK name고객사명 bizNumber사업자번호 Project — 프로젝트 idP001… · PK clientId→ Client.id contractTotal계약총액 stage영업중 → 수행확정 → 완료 Invoice — 계산서 idV001… · PK projectId→ Project.id supplyAmount공급가액 issueStatus발행·수금 상태 Member — 멤버(강사) idPK name이름 category내부 / 외부강사 Lecture — 강의 idL0001… · PK projectId→ Project.id instructorId→ Member.id date · fee날짜 · 강사료 startTime · place시간 · 장소 Payment — 지급 idPK lectureId→ Lecture.id · unique incomeTax · localTax원천징수 netPay실지급액 1 : N 1 : N 1 : N 1 : N 1 : 1
업무관리시스템 핵심 테이블 6개(전체 10개 중)와 연결 필드 — 프로젝트 1:N 계산서 · 1:N 강의(3층 구조), 강의에서 보면 강사와 N:1, 지급과는 1:1(unique). 주황색 필드가 연결 필드(FK)입니다.
1회차 자가 점검
  • 과제의 범위(만들 것 / 만들지 않을 것)와 SIPOC 표가 완성되었다.
  • 휴먼 프로세스(as-is)와 프로그램 프로세스(to-be)를 나란히 놓은 대비표가 있다.
  • to-be 프로세스가 플로우차트로 그려져 있다 — 어떤 정보가 어디서 들어와 무엇과 합쳐지고, 결과가 어떤 형식으로 누구에게 가는지 한 장에 보인다.
  • 인풋마다 항목 명세표(데이터 템플릿)가 있고, 실물 샘플 파일을 확보했다.
  • 무엇을 저장할지(백엔드), 어떤 화면에서 무엇을 하게 할지(프론트엔드)가 표로 정리되었다.
  • 테이블 정의서가 있다 — 테이블·필드·연결 필드(id)와 관계(1:1 / 1:N / N:M)가 정의되어 있다.
  • 개발계획서(md)가 8개 목차를 갖춰 완성되었다.
1회차 산출물 (md / html)
  • 개발계획서.md — SIPOC · 프로세스 재설계와 플로우차트 · 데이터 템플릿 · 테이블 정의서 · 화면/저장 기획 포함

2회차 — MVP 정의 및 구현: 핵심 흐름을 먼저 관통시킨다

Learning Objectives
  • 전체 백엔드·프론트엔드 기획 중에서 자동화의 핵심 기능과 핵심 흐름을 선정할 수 있다.
  • MVP의 범위를 "만들 것 / 미룰 것"으로 확정하고, Plan 모드로 집중적으로 빠르게 구현할 수 있다.
  • MVP에 대표 인풋을 투입해 자동화 가능성을 실험하고, 판정할 수 있다.

1회차의 개발계획서에는 화면 목록과 테이블 목록 전체가 담겨 있습니다. 2회차는 그 전체를 만들기 시작하는 회차가 아닙니다 — 전체 백엔드·프론트엔드 중에서 자동화의 핵심 기능과 핵심 흐름을 골라, 그 부분만 집중적으로 빠르게 구현합니다. 이렇게 만든 최소 버전이 MVP(Minimum Viable Product)이고, MVP의 존재 이유는 하나입니다 — "이 자동화가 정말 가능한가"를 말이 아니라 돌아가는 실물로 확인하고 실험하는 것.

핵심 흐름 선정
백엔드·프론트 전체에서
MVP 범위 확정
만들 것 / 미룰 것
Plan 모드 구현
집중 · 고속
관통 확인
인풋 → 아웃풋 한 사이클
가능성 판정
실험 · 기록
이해

핵심 기능과 핵심 흐름 선정 — 전부가 아니라 심장부터

개발계획서의 화면 목록·테이블 목록은 시스템의 전체 지도입니다. 첫 활동은 그 지도 위에 우리 과제의 심장을 표시하는 것입니다. 세 가지 기준으로 찾습니다.

기준질문
가치의 중심이 과제가 약속한 효과(시간 절감·품질 개선)가 실제로 발생하는 기능은 무엇인가?발주서 자동 생성, 교열 후보 검출, 반복 가공 자동화
흐름의 척추인풋이 아웃풋이 되기까지 반드시 거치는 최단 경로는 무엇인가?입력 폼 → 처리 → 결과 화면의 한 줄기
불확실성"정말 자동화가 될까?" 가장 자신 없는 구간은 어디인가?AI 판단의 품질, 비정형 데이터 파싱, 외부 형식 변환

세 기준이 겹치는 곳이 MVP입니다. 특히 세 번째가 중요합니다 — 가장 불확실한 자동화 구간을 MVP에 반드시 포함하십시오. 확실히 되는 것만 골라 만든 MVP는 아무것도 증명하지 못합니다.

MVP는 데모가 아닙니다. 보여 주기 좋은 화면을 고르는 것이 아니라, 의심스러운 자동화 구간을 가장 먼저 겪어 보는 것입니다. 화면은 투박해도 됩니다 — 2회차에 확인할 것은 "예쁜가"가 아니라 "되는가"입니다.
실습

MVP 범위 확정 — 만들 것 / 미룰 것

학습 안내작성. 개발계획서의 화면·테이블·처리 목록을 "MVP에서 만들 것"과 "미룰 것"으로 나눠 범위표를 만듭니다. 완료 기준: 핵심 흐름 하나에 필요한 최소 조각만 "만들 것"에 남았는가.

선정한 핵심 흐름을 기준으로, 백엔드·프론트엔드 기획 전체를 두 칸으로 나눕니다. 흐름이 지나가는 조각만 만들고, 나머지는 전부 미룹니다.

구분전체 기획 (1회차)MVP에서 만들 것미루는 것
화면
프론트엔드
발주 목록 · 상세 · 대시보드 3종발주 입력 폼 + 결과 확인 화면대시보드, 검색·필터, 권한별 화면
저장
백엔드
테이블 6개핵심 흐름이 지나는 테이블 3개수정 이력, 사용자·권한
처리발주서 생성 + 정산 + 메일 발송표준 발주서 자동 생성 1종정산 처리, 메일 발송

미룬 것들은 사라지는 것이 아닙니다 — 4회차(추가 기능)와 5회차(고도화·연계)의 재료로 개발계획서에 그대로 남습니다. 범위표는 "안 만든다"가 아니라 "나중에 만든다"의 기록입니다.

결정 로그를 시작하십시오. 첫 코드를 쓰는 순간부터 갈림길이 시작됩니다. "무엇을, 왜 그렇게 결정했는지"를 D1, D2, D3… 번호로 한두 줄씩 기록하십시오(DEV-LOG.md). 3회차의 원인분석과 10회차의 개발 히스토리·발표 자료가 이 기록에서 그대로 나옵니다.
실습

Plan 모드 가동, MVP 구현

학습 안내실행. 개발계획서와 MVP 범위표를 AI 코딩 도구에 주고 Plan 모드로 구현 계획을 받은 뒤, 검토·승인하고 집중 구현합니다. 완료 기준: 인풋을 넣으면 아웃풋이 나오는 핵심 사이클 하나가 동작하는가.

범위가 정해졌으면 바로 개발을 시작합니다. Claude Code 같은 AI 코딩 도구에는 Plan 모드가 있습니다 — 코드를 바로 고치지 않고, 먼저 구현 계획을 세워서 사람에게 승인받는 모드입니다. 개발계획서와 범위표를 주고 Plan 모드로 시작하면, AI가 "이런 순서로 이렇게 만들겠다"는 계획을 내놓습니다. 계획을 읽고, 이상한 부분을 바로잡고, 승인하면 코딩이 시작됩니다.

PROMPT · Plan 모드 첫 지시 (MVP)
개발계획서.md 와 MVP 범위표를 읽어라. 이번에는 MVP만 만든다. 먼저 구현 계획을 세워라. 다음을 포함해라: - 프로젝트 구조와 기술 스택 (계획서 6번 기준) - 범위표의 "만들 것"만 대상으로 한 데이터 구조와 화면 - 구현 순서 — 인풋을 넣으면 아웃풋이 나오는 핵심 사이클 하나가 끝까지 도는 것이 목표다 - 범위표의 "미루는 것"은 만들지 마라. 단, 나중에 붙일 수 있도록 구조로 막지도 마라. 계획만 세우고 코드는 아직 작성하지 마라. 내가 검토한다.

MVP의 기준은 완성도가 아니라 관통입니다. 화면이 투박해도, 예외 처리가 없어도 됩니다. 대표 인풋 하나를 넣었을 때 프로세스를 통과해 아웃풋이 나오는 것 — 그 한 사이클이 돌면 MVP입니다. 골격이 관통되면 남은 여덟 회차는 이 골격에 살을 붙이는 일입니다.

함정. "다 됐습니다"라는 AI의 보고를 그대로 믿지 마십시오. 반드시 직접 실행해서 눈으로 확인하고, 확인한 사실만 진도로 칩니다. 이 습관은 MVP부터 최종 완성까지 계속됩니다.
실습

자동화 가능성 실험 — MVP가 답해야 할 질문

학습 안내실험 수행. 대표 인풋 5~10건을 MVP에 투입하고 아웃풋을 눈으로 확인해 가능성을 판정합니다. 완료 기준: 판정(가능 / 조건부 가능 / 재설계 필요)과 근거가 기록되었는가.

MVP가 돌았다고 끝이 아닙니다 — MVP는 실험 장치입니다. 실물 데이터에서 뽑은 대표 인풋(전형적인 케이스 3~5건 + 일부러 고른 어려운 케이스 2~5건)을 넣고, 아웃풋을 기존 방식의 결과와 나란히 놓고 비교하십시오. 실험의 결론은 셋 중 하나입니다.

판정기준다음 행동
가능아웃풋이 기존 방식과 같거나 낫다. 어려운 케이스도 크게 어긋나지 않는다그대로 진행 — 3회차에서 품질을 숫자로 측정합니다
조건부 가능전형 케이스는 되지만 특정 유형에서 무너진다무너지는 유형을 기록 — 3회차 하네스의 1순위 측정 대상입니다
재설계 필요핵심 구간이 기대와 근본적으로 다르게 동작한다지금 멈추고 1회차 정의로 돌아갑니다 — 프로세스·데이터 재설계

"재설계 필요"가 나와도 실패가 아닙니다 — 2회차에 아는 것과 8회차에 아는 것의 비용은 수십 배 차이입니다. 이 조기 발견이 MVP를 만드는 진짜 이유입니다.

사례 업무관리시스템 · 2회차에 해당하는 활동

사례로 보기 — 업무관리시스템의 MVP

가장 불확실한 구간부터 — "목업 대신 실데이터"

업무관리시스템의 핵심 흐름은 견적 → 프로젝트 → 강의 → 정산의 자동 연결이었고, 가장 불확실한 구간은 화면이 아니라 데이터였습니다 — 세 도구에 흩어진 비정형 실데이터(별칭, 셀 노트, 수기 대장)가 정말 구조화 테이블로 들어가겠는가. 그래서 팀은 "목업(가짜 화면) 대신 실데이터 먼저"를 원칙으로 세워, 화면을 예쁘게 만들기 전에 실데이터 이관부터 관통시켰습니다(결정 로그 D9). MVP에 의심스러운 구간을 포함시킨 전형적인 선택입니다.

하루 만의 관통 — 스캐폴드에서 빌드까지

구현은 정의 당일(D1, 첫날)에 시작해 하루 만에 관통됐습니다. 프로젝트 스캐폴드 → 핵심 테이블 스키마 → 실데이터 이관 초안 → 화면 초안 → 프로덕션 빌드 통과까지가 하루. 화면은 투박했지만 인풋(실데이터)을 넣으면 아웃풋(연결된 프로젝트·강의 화면)이 나오는 한 사이클이 돌았습니다 — 이것이 MVP입니다.

MVP는 이 정도면 정상. D1의 첫 이관에서 강의 756건 중 185건(33%)만 프로젝트와 자동 연결됐습니다. 67%가 미연결 — 하지만 한 사이클이 관통됐으니 MVP로 충분하고, 판정은 "조건부 가능"입니다. 무너지는 유형(고객사 명칭 불일치)이 기록되었고, 이 33%가 바로 다음 회차(3회차) 하네스의 1순위 측정 대상이 됩니다.
2회차 자가 점검
  • 개발계획서 전체 중 핵심 기능·핵심 흐름을 근거(가치·척추·불확실성)와 함께 선정했다.
  • MVP 범위표(만들 것 / 미룰 것)가 있다 — 가장 불확실한 자동화 구간이 "만들 것"에 들어 있다.
  • Plan 모드로 구현 계획을 검토·승인했고, 인풋 → 아웃풋 한 사이클이 도는 MVP가 있다.
  • 대표 인풋 실험으로 자동화 가능성을 판정(가능/조건부/재설계)하고 근거를 기록했다.
  • 결정 로그(DEV-LOG.md)를 시작했다.
2회차 산출물 (md / html)
  • MVP 범위표 — 만들 것/미룰 것, 선정 근거
  • MVP 코드 + OVERVIEW.md — 실행 방법, 현재 동작 범위
  • 자동화 가능성 실험 기록 — 투입 인풋, 아웃풋 확인 결과, 판정과 근거
  • 결정 로그(DEV-LOG.md) — D번호 기록 시작

3회차 — 하네스 엔지니어링: 품질을 측정하고 개선한다

Learning Objectives
  • 테스트 데이터를 자동으로 생성하고, 대량 인풋을 넣어 아웃풋을 측정하는 하네스를 만들 수 있다.
  • 아웃풋 품질에 대한 측정 지표를 정의하고, 현수준을 측정할 수 있다.
  • 지표 개선을 위한 원인분석 → 개선 아이디어 → 적용 → 효과 평가의 사이클을 돌릴 수 있다.

2회차의 MVP로 "자동화가 가능한가"를 확인했다면, 3회차는 그 MVP를 시험대에 올립니다 — "아웃풋의 품질이 몇 점인가". 대상이 아직 작은 MVP라는 점이 오히려 유리합니다. 기능이 몇 개 없을 때 하네스를 만들어 두면, 이후의 모든 확장(4·5회차)이 같은 시험지 위에서 안전하게 진행됩니다. 손으로 한 건씩 넣어 보는 확인으로는 품질을 말할 수 없습니다. 필요한 것은 하네스(harness) — 시스템에 인풋을 자동으로 대량 투입하고 아웃풋을 자동으로 수집·채점하는 시험 장치입니다. 하네스가 있으면 "고쳤더니 좋아졌나?"를 1분 만에 숫자로 답할 수 있습니다.

테스트 데이터 생성
자동 · 대량 · 재현 가능
대량 투입 · 측정
인풋 N건 → 아웃풋 채점
지표 정의 · 현수준
품질을 숫자로
원인분석
오류 유형별 분류
개선 · 효과 평가
적용 → 재측정
이해

테스트 데이터 자동 생성

실데이터만으로는 시험 케이스가 부족합니다. 실데이터의 구조와 분포를 닮은 테스트 데이터를 스크립트로 자동 생성하십시오. 세 가지 원칙이 있습니다.

1재현 가능하게

난수 시드(seed)를 고정해 돌릴 때마다 같은 데이터가 나오게 합니다. 그래야 "어제의 87%"와 "오늘의 91%"가 같은 시험지 위의 비교가 됩니다.

2실데이터를 닮게

깨끗한 데이터만 만들면 시험이 안 됩니다. 실데이터에 있는 빈칸·오타·별칭·형식 위반을 비율까지 흉내 내서 섞습니다.

3엣지 케이스를 심기

경계값(0건, 최대치, 마감일 당일), 특수문자, 중복, 극단적으로 긴 입력 등 일부러 어려운 케이스를 포함합니다. 정답을 알고 심었으니 채점도 가능합니다.

PROMPT · 테스트 데이터 생성기 만들기
테스트 데이터 생성 스크립트를 만들어라. - 인풋 템플릿(개발계획서 4번)에 맞는 데이터를 시드 고정 난수로 N건 생성 - 실데이터 샘플(sources/)의 분포를 참고: 빈칸 비율, 표기 변형, 형식 위반도 비슷하게 섞어라 - 엣지 케이스를 의도적으로 포함하고, 각 건의 기대 결과(정답)를 별도 파일로 함께 생성 - 건수는 인자로 조절: 기본 100건
이해

품질 지표 정의와 현수준 측정

"품질이 좋다/나쁘다"를 숫자로 바꾸는 것이 지표 정의입니다. 과제 유형별로 자주 쓰는 지표는 다음과 같습니다 — 이 중 2~4개를 골라 우리 과제의 지표로 확정하십시오.

지표정의 · 산식어울리는 과제
정확도 / 일치율정답과 일치한 건 ÷ 전체 건 (정답: 기존 결과물 또는 심어 둔 기대값)정산·집계 계산, 데이터 추출·변환, 교열 검출
처리 성공률에러 없이 끝까지 처리된 건 ÷ 투입 건파일 처리, 문서 생성, 파이프라인형 과제
검출률 / 누락률찾아야 할 것 중 찾은 비율 / 놓친 비율교열, 팩트체크, 규정 위반 점검
오탐률지적한 것 중 사실은 문제가 아니었던 비율교열·점검류 — 오탐이 많으면 사람이 안 씁니다
사람 수정률AI 초안 중 사람이 고친 비율(분량 기준)초안 생성형 과제(지도안·기안·시안)
처리 시간건당 평균 처리 시간, 최대 시간모든 과제 — Before/After 비교의 기본

지표마다 아래 다섯 칸을 채우면 지표 정의서가 됩니다. 그리고 하네스를 돌려 현수준 칸을 실측값으로 채웁니다 — 이 숫자가 우리 과제의 출발선입니다.

지표 정의서 양식
| 지표명 | 정의(산식) | 측정 데이터 | 현수준 | 목표 |
|--------|-----------|------------|--------|------|
| 연결 정확도 | 자동 연결 성공 건 ÷ 전체 건 | 테스트 500건 | 87% | 95% |
| 처리 성공률 | 무에러 완료 ÷ 투입 | 테스트 500건 | 96% | 99% |
실습

원인분석 → 개선 → 효과 평가

학습 안내사이클 수행. 현수준 측정에서 나온 실패 건들을 원료로 개선 사이클을 최소 1회 완주합니다. 완료 기준: Before/After 지표 비교표가 있는가.

① 원인분석. 실패한 건들을 전부 모아 오류 유형별로 분류합니다. "명칭 불일치 41건, 날짜 형식 오류 17건, 빈 필드 9건…"처럼 세어 보면 대개 상위 2~3개 유형이 실패의 대부분을 차지합니다(파레토). 거기부터 공략합니다.

② 개선 아이디어 도출. 유형별로 "규칙 추가로 잡을 수 있는 것 / 입력 단계에서 막을 수 있는 것 / 사람 확인으로 보낼 것"을 나눠 개선안을 만듭니다. AI에게 실패 건들을 주고 "이 실패들의 공통 패턴과 개선안을 제안해"라고 묻는 것도 효과적입니다.

③ 적용과 효과 평가. 개선안을 한 번에 하나씩 적용하고, 같은 시드의 하네스를 다시 돌려 지표를 재측정합니다. 한꺼번에 여러 개를 바꾸면 무엇이 효과를 냈는지 알 수 없게 됩니다.

개선 효과 기록 양식
| 개선안 | 대상 오류 유형 | Before | After | 판정 |
|--------|--------------|--------|-------|------|
| 고객사 별칭 사전 추가 | 명칭 불일치 | 87% | 94% | 채택 |
| 날짜 파서 형식 3종 추가 | 날짜 형식 오류 | 94% | 96% | 채택 |
KEY POINT · 3회차의 전환

측정하지 않으면 개선할 수 없습니다.
이번 회차부터 품질을 숫자로 말합니다.

"좋아진 것 같다"는 개선이 아닙니다. 같은 시험지(시드 고정 테스트 데이터)로 재 본 Before/After 숫자가 개선입니다. 3회차에 만든 하네스와 지표는 이후 회차의 모든 변경에 재사용됩니다 — 4회차의 기능 확장과 5회차의 고도화가 품질을 해치지 않았는지, 6회차 배포 후에도 결과가 같은지, 10회차의 최종 효과가 얼마인지. 하네스는 한 번 만들어 끝까지 쓰는 자산입니다.

사례 업무관리시스템 · 3회차에 해당하는 활동

사례로 보기 — 업무관리시스템의 측정과 개선 사이클

시드 고정 테스트 데이터 생성기

업무관리시스템에는 시드를 고정한 실습 데이터 재생성 스크립트가 있습니다. 돌릴 때마다 고객사 50 · 멤버 19(내부 7 + 외부 12) · 프로젝트 72 · 강의 225 · 계산서 52 · 견적서 53 · 지급 55 · 일정 47건이 똑같이 만들어집니다. 실데이터의 구조(3층 구조, 소득 구분별 세금 규칙)를 그대로 닮았고, 재현 가능하므로 어떤 변경 후에도 같은 조건에서 재검증할 수 있습니다.

테스트 데이터 생성기 시드 고정 — 재현 가능 고객사 50 · 프로젝트 72 강의 225 · 지급 55 … 시스템 처리 이관 · 연결 · 계산 자동 채점 정답(기대값)과 전수 대조 지표 — 연결률 33% 89% 90%+ 원인분석(명칭 불일치) → 개선(별칭 사전) → 같은 시드로 재측정 같은 방식의 하네스로 — 원천징수 36/36 일치 · 시간 형식 감사 526건 위반 0 · 동시 50/80 요청 에러 0
같은 시험지(시드 고정 데이터)로 돌리는 측정-개선 루프 — 연결률 33% → 89% → 90%+.

전수 대조를 지표로 — 측정의 실제 모습

이 시스템의 품질 측정은 화려한 도구가 아니라 전수 대조와 감사(audit) 스크립트였습니다. 원천징수 계산 일치율 36/36(100%), 강의 시간 형식 감사 526건 중 위반 0건, 강의 제목 정리 492건 반영에 오탐 0건. 그리고 거의 모든 작업 단위의 말미에 "타입 검사 0 에러 · 린트 0 에러 · 전 페이지 200 응답"이라는 3종 루틴 검사를 돌렸습니다 — 사람으로 치면 매번 같은 건강검진을 받는 셈입니다.

원인분석 → 개선 → 재측정의 실례: 연결률 사이클

2회차 MVP에서 33%로 출발한 연결률 개선을 하네스의 프레임으로 보면 완벽한 개선 사이클입니다. 이 개선의 전말은 4회차 사례에서 자세히 봅니다.

단계실제 활동
현수준 측정자동 연결률 33% (756건 중 185건)
원인분석미연결 건을 조사 → 최대 유형은 고객사 명칭 불일치(별칭·축약형)
개선 아이디어별칭 사전("한화인경원 ↔ 한화인재경영원" 등) + 매칭 규칙 v2
적용 · 재측정연결률 89% (555건 중 493건)
2차 개선고객사 명칭 자체를 통합 정리 → 498건 연결, 잔여는 격리 후 사람 재배정

부하 시험도 이 시기의 하네스적 활동입니다 — 동시 50건의 캘린더 요청, 80건의 정산 요청을 자동 투입해 에러 0건을 확인했습니다. 손으로는 못 하는 시험을 스크립트가 하는 것, 그것이 하네스입니다.

3회차 자가 점검
  • 시드 고정 테스트 데이터 생성 스크립트가 있고, 대량 인풋 → 아웃풋 측정이 자동으로 돈다.
  • 품질 지표 2~4개가 정의서(정의·산식·측정 데이터·현수준·목표)로 확정되었다.
  • 실패 건을 유형별로 분류한 원인분석이 있다.
  • 개선안을 적용하고 재측정한 Before/After 비교표가 최소 1건 있다.
3회차 산출물 (md / html)
  • 테스트 하네스 — 데이터 생성 + 투입·채점 스크립트, 실행 방법 문서
  • 품질 지표 정의서 — 지표·산식·현수준·목표
  • 측정·개선 리포트 — 원인분석, 개선안, Before/After 효과

4회차 — MVP를 넘어: 추가 기능 개발, 구현, 검증

Learning Objectives
  • MVP에서 미뤄 둔 기능을 우선순위에 따라 개발하고, 기능과 데이터를 체계적으로 확인·검증할 수 있다.
  • 실데이터 전수 대조로 처리 결과의 정확성을 검증할 수 있다.
  • 기능 목록의 모든 기능을 구현해 "기능 완성" 상태에 도달한다.

4회차의 목표는 하나입니다 — 계획서의 기능 목록을 100% 구현하는 것. MVP는 핵심 흐름 하나가 관통된 상태였고(2회차), 그 품질을 재는 하네스도 준비됐습니다(3회차). 이제 미뤄 두었던 기능을 하나씩 개발하고, 기능을 확인하고, 데이터를 확인하고, 다듬기를 반복해서 모든 기능이 실제로 동작하는 상태(기능 완성)까지 갑니다. 이 회차의 리듬은 개발 → 확인 → 기록 → 요청 → 재확인의 반복입니다.

이해

추가 기능 개발 — 무엇부터 붙일 것인가

재료는 두 곳에 있습니다 — 2회차 MVP 범위표의 "미룰 것" 목록, 그리고 3회차 하네스가 찾아낸 "품질을 위해 필요해진 것"(입력 검증, 예외 격리 화면 등). 순서의 원칙은 두 가지입니다.

원칙내용
핵심 흐름에 가까운 것부터MVP의 핵심 사이클에 붙어 있는 기능(상세 화면, 수정, 이력)부터 붙입니다. 흐름에서 먼 부가 기능(대시보드·통계)은 데이터가 쌓인 뒤가 낫습니다
한 번에 한 기능기능 하나를 개발 → 구현 확인 → 검증(하네스 재실행 포함) 통과 후 다음 기능으로 갑니다. 여러 기능을 한꺼번에 붙이면 무엇이 무엇을 망가뜨렸는지 알 수 없게 됩니다
이해

기능 확인 — 목록 대비, 화면 대비

기능 확인의 기준은 느낌이 아니라 1회차 개발계획서의 화면·기능 목록표입니다. 표의 각 행에 대해 세 가지를 확인하고 상태를 기록합니다.

확인 항목확인 방법
동작하는가화면을 직접 열고, 대표 케이스 하나를 처음부터 끝까지 수행해 본다
맞게 동작하는가결과 값을 손으로 계산한 값·기존 방식의 결과와 대조한다
쓸 만하게 동작하는가실제 업무 리듬으로 써 본다 — 클릭이 너무 많은가, 찾는 게 안 보이는가

세 번째 항목에서 발견한 불편이 이 회차의 원료입니다. 프론트엔드 다듬기의 80%는 불편을 말로 정확히 묘사하는 것입니다. "캘린더가 이상해"가 아니라 — "월을 넘기면 스크롤이 맨 위로 튀어서, 보던 주를 다시 찾아야 해. 월을 바꿔도 보던 위치가 유지되면 좋겠어"처럼, 상황 + 현재 동작 + 기대 동작의 3요소로 말하면 AI는 거의 항상 한 번에 고칩니다.

PROMPT · 불편 묘사 패턴
[상황] 발주 목록 화면에서 특정 외주 업체의 진행 중 건만 보려고 할 때, [현재] 검색창에 업체 이름을 쳐도 완료된 건까지 전부 나온다. [기대] 상태(진행/수정중/완료) 필터와 업체 필터를 함께 걸 수 있게 해줘. 필터 조합은 URL에 남아서 새로고침해도 유지되면 좋겠다.
이해

데이터 확인 — 전수 대조와 숨은 데이터 발굴

기능이 돌아도 데이터가 틀리면 아무도 그 시스템을 믿지 않습니다. 데이터 확인의 원칙은 표본이 아니라 전수입니다. 특히 돈·건수처럼 기존 방식(엑셀 등)에 정답이 이미 있는 데이터는, 기존 결과물과 전 행을 대조해서 몇 건 중 몇 건이 일치하는지를 숫자로 확인합니다.

PROMPT · 검증 요구 패턴
방금 구현한 정산 계산 로직을 기존 엑셀 지급대장과 대조해라. 값이 채워진 전 행에 대해 시스템 계산값과 엑셀 값을 비교해서 전체 몇 건 중 몇 건이 일치하는지 보고해라. 불일치 건은 행 번호와 두 값을 나란히 보여줘라. 원인 추정도 붙여라.

또 하나 — 인풋 데이터에는 눈에 보이는 값 말고도 정보가 숨어 있는 경우가 많습니다. 엑셀의 셀 메모, 셀 색깔, 숨긴 시트·열, 파일명 규칙 같은 것들입니다. 이관·처리 후 "뭔가 빠진 것 같다" 싶으면 이렇게 물으십시오.

PROMPT · 숨은 데이터 발굴 패턴
이 엑셀 파일에서 셀 값 말고 또 읽을 수 있는 정보가 있어? 셀 메모, 셀 색깔, 숨긴 시트나 열, 수식 같은 것들을 전부 조사해서 보고해줘.
결정 로그가 가장 빨리 자라는 회차입니다. 고치는 것이 많아질수록 갈림길도 많아집니다. 2회차에 시작한 결정 로그(DEV-LOG.md)에 "무엇을, 왜 그렇게 결정했는지"를 D번호로 계속 쌓으십시오. 10회차의 개발 히스토리·발표 자료가 이 기록에서 그대로 나옵니다.
실습

개선 루프 — 기능 완성까지 반복

학습 안내반복 수행. 아래 루프를 기능 목록의 전 항목이 "완료"가 될 때까지 돌립니다. 완료 기준: 기능 목록표의 모든 행이 세 가지 확인(동작/정확/사용성)을 통과했는가.

확인
직접 실행, 대조
기록
문제·결정을 로그로
요청
상황+현재+기대
재확인
고쳐졌는지 검증

이 루프를 돌리다 보면 데이터 구조를 바꿔야 하는 큰 결정을 만나기도 합니다. 미루고 싶어지지만 — 구조 결정을 미루면 이자가 붙습니다. 코드가 쌓일수록 같은 변경의 비용이 커지므로, 구조 문제는 발견한 회차에 해결하는 것이 원칙입니다.

사례 업무관리시스템 · 4회차에 해당하는 활동

사례로 보기 — 업무관리시스템의 검증과 개선

연결률 33% → 89% — 확인이 만든 개선

MVP의 강의↔프로젝트 자동 연결률은 33%(756건 중 185건)였습니다 — 3회차 사례에서 사이클 표로 정리한 그 개선의 전말입니다. 원인을 들여다보니 같은 고객사가 파일마다 다른 이름으로 적혀 있었습니다 — "한화인경원"과 "한화인재경영원"처럼. 사람 눈엔 당연히 같은 회사지만 프로그램은 모릅니다(1회차에서 본 "눈치 판단"의 전형). 대화로 별칭 규칙을 추가해 이관 로직 v2를 다시 만들자 연결률이 89%(555건 중 493건)로 뛰었고, 고객사 명칭 통합으로 498건까지 올라갔습니다. 남은 미연결 강의는 버리지 않고 "(미연결 강의)" 프로젝트에 격리한 뒤 화면에서 사람이 재배정했습니다 — 예외를 규칙 또는 격리 경로로 처리하는 원칙 그대로입니다.

셀 노트 1,022개 — 숨은 데이터 발굴

이관 후 "시간·장소 정보가 다 사라졌다"는 문제가 발견됐습니다. 알고 보니 그 정보는 셀 값이 아니라 셀 노트(메모)에 들어 있었습니다. "이 파일에서 값 말고 또 읽을 수 있는 게 있어?"라는 질문으로 노트 파서를 추가해, 셀 노트 1,022개에서 강의 555건의 시간 209건·장소 142건·메모 181건을 복원했습니다.

원천징수 전수 대조 — "거의 같은" 계산은 없는 것과 같다

정산 세금 계산을 처음엔 "1원 단위 버림"으로 구현했는데, 엑셀 지급대장과 값이 미묘하게 달랐습니다. 값이 채워진 전 36행을 전수 대조한 끝에 회계법인의 실제 규칙이 "10원 단위 절사 + 순차 계산"임을 발견했고, 수정 후 36건 중 36건 일치(100%)를 확인했습니다. 회계 숫자는 1원만 어긋나도 시스템 전체의 신뢰를 잃습니다.

엑셀 지급대장 — 기존(정답) 실지급액967,000 483,500 725,010 241,750 … 값이 채워진 전 36행 시스템 계산 — 신규 실지급액967,000 483,500 725,000 241,750 10원 자리가 미묘하게 다르다 불일치 행 전수 조사 "몇 건 중 몇 건 일치하는지 보고해" 발견 — 1원 버림이 아니라 10원 절사 + 순차 계산 수정 후 재대조 36 / 36 일치 (100%)
표본이 아니라 전수 — 전 행 대조가 "10원 절사" 규칙을 찾아냈고, 수정 후 100% 일치를 확인했습니다.

기능 다듬기와 구조 결정

기능 완성 구간(D20~D32)에서는 불편 묘사 → 개선의 반복으로 표 컬럼 순서·폭 조절, 엑셀처럼 셀을 클릭해 고치는 인라인 편집(방향키·복사/붙여넣기), 드롭다운 선택 같은 사용성 기능이 완성됐습니다. 큰 구조 결정도 이 시기에 있었습니다 — 내부 직원과 외부강사를 두 테이블로 나눠 시작했다가 코드가 전부 이중화되는 문제를 겪고 단일 멤버 테이블로 병합하는 대공사(D26)를 치렀습니다. 교훈은 한 줄입니다: "구조 결정을 미루면 이자가 붙습니다."

33 → 89%
강의↔프로젝트 자동 연결률 (별칭 규칙 v2)
1,022개
셀 노트에서 복원한 시간·장소·메모
36 / 36
원천징수 전수 대조 일치 (10원 절사 발견)
4회차 자가 점검
  • 기능 목록표의 모든 행이 동작·정확성·사용성 확인을 통과했다 (기능 100% 구현).
  • 정답이 있는 데이터는 기존 결과물과 전수 대조했고, 일치율을 숫자로 안다.
  • 인풋 파일의 숨은 데이터(메모·색·숨긴 시트)를 조사했다.
  • 결정 로그(DEV-LOG.md)에 이 회차의 주요 결정이 번호로 기록되어 있다.
4회차 산출물 (md / html)
  • 기능 확인 결과표 — 기능 목록 대비 상태·발견 문제·처리 결과
  • 데이터 검증 보고 — 전수 대조 결과(N건 중 N건 일치), 불일치 원인과 조치
  • 갱신된 결정 로그(DEV-LOG.md)
  • 기능 완성 버전 코드 + 갱신된 OVERVIEW.md

5회차 — 자동화 로직 고도화와 인접 시스템 연계

Learning Objectives
  • 자동화 로직을 고도화해 사람 개입 구간을 더 줄일 수 있다.
  • 인접 시스템(메일·알림·스토리지·사내 시스템)으로의 확장·연계를 설계하고 개발할 수 있다.
  • 연계 개발에서 반드시 점검할 항목(인증·실패 처리·데이터 계약)을 안다.

4회차까지의 시스템은 "정의한 범위를 잘 해내는 시스템"입니다. 5회차는 그 범위를 두 방향으로 넓힙니다. 안으로는 자동화 로직의 고도화 — 아직 사람이 하고 있는 판단·처리를 더 흡수하고, 밖으로는 인접 시스템으로의 확장·연계 — 우리 시스템의 앞뒤에 있는 도구들과 데이터를 주고받게 만듭니다. 1회차에 적어 둔 "만들지 않을 것" 목록을 다시 꺼낼 시점이 바로 지금입니다.

이해

자동화 로직의 고도화

고도화의 재료는 3회차 하네스의 원인분석과 4회차의 검증에서 나옵니다. "사람 확인으로 보냈던 것들"과 "규칙으로 못 잡았던 예외들"의 목록을 보고, 이번엔 어디까지 자동화할지 정합니다.

고도화 방향내용예시
규칙의 확장수집된 예외 케이스를 규칙에 편입 — 예외가 정규 케이스가 됨별칭 사전 확대, 형식 변형 자동 보정
연쇄 자동화사람이 잇던 단계 사이를 프로그램이 직접 연결강의 등록 → 정산 지급행 자동 생성
AI 판단 단계 추가규칙으로 못 쓰는 판단에 LLM을 투입하되, 후보 + 근거 + 확신도를 제시하고 확정은 사람이교열 후보 검출, 유사 사례 추천, 분류 제안
확인 지점의 재배치사람 확인을 없애는 게 아니라 가장 값어치 있는 지점으로 옮김건별 확인 → 예외 건만 확인 + 일괄 승인
고도화의 안전벨트. 로직을 바꿀 때마다 3회차의 하네스를 다시 돌리십시오. 고도화가 기존 품질 지표를 떨어뜨리지 않았음을 같은 시험지로 확인한 뒤에만 채택합니다. 하네스 없이 하는 고도화는 개선이 아니라 도박입니다.
이해

인접 시스템으로의 확장과 연계 개발

우리 시스템의 업스트림(데이터가 들어오는 쪽)다운스트림(결과가 나가는 쪽)을 그려 보면 연계 후보가 보입니다. 자주 나오는 연계 유형은 다음과 같습니다.

OUT알림 · 메일 발송

산출물(발주서·보고서·견적서)을 시스템 밖의 사람에게 전달 — 이메일 발송, 사내 메신저 알림. "만들어 두면 사람이 퍼 나르던" 마지막 구간의 자동화입니다.

IN/OUT파일 스토리지

첨부파일·증빙·이미지를 개인 PC가 아닌 공용 스토리지에 저장하고 시스템에서 링크로 관리합니다.

IN사내 시스템 데이터

ERP·그룹웨어·기간계에서 데이터를 받아옵니다. API가 없으면 정기 내보내기 파일 업로드부터 시작해도 됩니다 — 연계의 시작은 형식 합의입니다.

OUT타 과제·타 시스템

우리 아웃풋이 다른 과제의 인풋이 되는 경우입니다. 이번 프로젝트의 과제들처럼 연말에 통합될 시스템이 있다면, 지금부터 데이터 형식을 맞춰 두는 것이 연계 개발입니다.

연계는 기능보다 계약이 먼저입니다. 개발 전에 아래 세 가지를 점검표로 확정하십시오.

점검 항목확정할 것
인증 · 권한상대 시스템에 무엇으로 접속하는가(계정·키·IP 제한). 키를 코드에 하드코딩하지 않고 환경변수로 관리하는가
실패 처리상대가 응답하지 않으면? — 재시도 횟수, 실패 시 알림, 실패 건의 격리·재처리 경로를 정의합니다. 연계는 반드시 실패합니다. 실패해도 무너지지 않게 설계합니다
데이터 계약주고받는 데이터의 항목·형식·인코딩을 문서로 고정(스키마). 상대편 담당자와 합의된 문서가 있는가
사례 업무관리시스템 · 5회차에 해당하는 활동

사례로 보기 — 업무관리시스템의 고도화와 연계

연쇄 자동화 — 강의를 등록하면 정산이 따라온다

고도화의 대표 사례는 강의 → 지급행 자동 동기화입니다. 외부강사의 강의를 등록하면 정산 지급행이 자동 생성되고, 원천징수(소득세·지방세·실지급액)가 자동 계산됩니다. 사람이 하던 "강의 끝나면 지급대장에 행 추가하고 수식 끌기"라는 연결 작업 자체가 사라졌습니다. 단, 과거 데이터를 건드리지 않도록 자동 동기화 컷오프 날짜를 두는 안전장치를 함께 설계했습니다.

다운스트림 연계 — 견적서가 시스템 밖으로 나가는 길

견적서 기능은 연계의 묶음입니다. 화면에서 견적서를 만들면 PDF로 생성되고, SMTP 이메일로 고객사에 직접 발송되며(발송 이력 저장), 계약이 성사되면 "프로젝트로 반영" 클릭 한 번으로 프로젝트가 등록됩니다. 계산서에는 '발행요청' 상태와 담당자 알림 설정이 붙어, 회계 처리 담당에게 가는 전달도 시스템 안으로 들어왔습니다.

업무관리시스템 내부 연쇄 자동화 강의 등록 → 지급행 자동 생성 다운스트림 — 결과가 나가는 연계 이메일 (SMTP) 견적서 PDF 발송 · 이력 저장 파일 스토리지 (Supabase) 사업자등록증 265건 · 서명 URL 열람 알림 계산서 발행요청 → 담당자 통지 운영 연계 — 환경 사이의 데이터 로컬 ↔ 운영 DB 동기화 diff → pull / push 스크립트 --force 없이는 미리보기만 (안전장치) 연계마다 반복되는 원칙 — 실패하거나 실수해도 무너지지 않게
안으로는 연쇄 자동화(강의 → 지급행), 밖으로는 메일 · 스토리지 · 알림 · 운영 동기화 연계.

스토리지 연계와 운영 연계

고객사 사업자등록증 265건은 만료된 외부 URL에서 전량 다시 내려받아 Supabase Storage(비공개 버킷)로 옮기고, 시스템에서는 서명된 임시 URL로만 열람하게 했습니다. 운영 환경과 로컬 환경 사이에는 데이터 동기화 스크립트(diff → pull/push)를 만들되, --force 옵션 없이는 미리보기만 되는 안전장치를 달았습니다 — 연계 지점마다 "실패하거나 실수해도 무너지지 않게"라는 원칙이 반복됩니다.

도구의 한계도 기록. 사업자등록증 PDF에서 사업자번호를 자동 추출할 때, 텍스트 PDF 72건은 성공했지만 스캔 이미지 193건은 OCR 없이는 불가능했습니다. 팀은 이를 억지로 뚫지 않고 한계로 기록한 뒤 사람 입력으로 보완했습니다. 어디까지 자동화하고 어디부터 사람인지의 경계선을 명시하는 것도 4회차의 산출물입니다.
5회차 자가 점검
  • 3회차 원인분석에서 나온 "사람이 하던 판단·처리" 중 자동화로 흡수할 것을 정해 구현했다.
  • 고도화 후 하네스를 재실행해 품질 지표가 유지·개선됨을 확인했다.
  • 업스트림/다운스트림 연계 대상을 정하고 최소 1개의 연계를 개발했다.
  • 연계 지점마다 인증·실패 처리·데이터 계약이 문서로 정리되어 있다.
5회차 산출물 (md / html)
  • 고도화 내역서 — 무엇을 더 자동화했고, 지표에 어떤 영향이 있었는지
  • 연계 설계서 — 연계 대상, 데이터 계약, 실패 처리 방식
  • 고도화·연계가 반영된 코드 + 갱신된 OVERVIEW.md

6회차 — 배포: 사내 서버 또는 공개 웹, 로그인과 보안 설정

Learning Objectives
  • 배포 대상(사내 서버 / 공개 웹)을 비교해 우리 과제에 맞게 선택할 수 있다.
  • 백엔드(서버 기능·운영 DB)와 프론트엔드를 배포하고, 둘을 연결할 수 있다.
  • 로그인과 보안을 설정하고, 화면 뒤의 서버 기능(뒷문)까지 막을 수 있다.

지금까지 시스템은 만든 사람의 PC에서만 돌았습니다. 6회차의 목표는 팀원 누구나 브라우저에 URL을 치면 시스템에 접속되는 상태 — 배포입니다. 배포는 다섯 조각으로 나뉩니다. 어디에 올릴지 정하고(배포 대상), 데이터와 처리를 옮기고(백엔드 배포), 화면을 올리고(프론트엔드 배포), 둘을 잇고(연결), 마지막으로 문을 잠급니다(로그인·보안).

배포 대상 선택
사내 서버 or 공개 웹
백엔드 배포
운영 DB 전환 · 환경변수
프론트엔드 배포
호스팅 · URL
프론트-백엔드 연결
읽기 · 쓰기 확인
로그인 · 보안
정문과 뒷문 잠그기
이해

배포 대상 — 사내 서버인가, 공개 웹인가

배포란 내 PC에서만 돌던 백엔드·프론트엔드·DB를 항상 켜져 있는 컴퓨터(서버)로 옮기는 일입니다. 선택지는 크게 둘입니다 — 회사 안의 서버(사내 서버)에 올리거나, 외부 클라우드 호스팅(공개 웹)에 올리거나.

구분사내 서버공개 웹 (클라우드 호스팅)
접속 범위사내망 안에서만 — 외부에서는 접속 불가(VPN 예외)인터넷 어디서나 — 접근 통제는 로그인이 담당
데이터 위치회사 안 — 외부 반출이 안 되는 민감 데이터에 적합외부 클라우드 — 회사 보안 정책 확인이 선행 조건
준비물IT 부서 협의(서버·포트·도메인), 설치 권한호스팅 계정(예: Vercel · Railway · Supabase 등)
운영 부담서버 관리(업데이트·재시작·백업)를 팀/IT가 담당호스팅 서비스가 대부분 대신함
어울리는 과제인사·재무 등 민감 데이터, 사내 시스템 연계가 많은 과제빠른 오픈이 중요한 과제, 외부 사용자(협력사·강사·고객사)가 있는 과제
기술보다 정책이 먼저. "업무 데이터를 외부 클라우드에 둘 수 있는가"는 기술이 아니라 회사 보안·데이터 정책의 문제입니다. 배포 전에 반드시 확인하십시오 — 올렸다가 내리는 것이 최악의 경로입니다.
선택이 어려우면 AI에게 묻습니다. "우리 시스템 구성(OVERVIEW.md 첨부)과 조건(사내망 필수 여부, 외부 사용자 유무, 예산)에서 배포 방안을 2~3안으로 비교해 추천해 줘" — 1회차 기술 스택 결정과 같은 요령입니다. 비교표를 받고, 선택 이유와 함께 기록합니다.
실습

백엔드 배포 — 운영 DB 전환과 환경변수

학습 안내실행. 개발용 DB를 운영용 DB로 전환하고, 서버 기능을 운영 환경에 올립니다. 완료 기준: 운영 DB에 실데이터가 전량 이관·검증되었고, 서버 기능이 운영 환경에서 응답하는가.

백엔드 배포의 중심은 DB 전환입니다. 개발 중에는 가벼운 개발용 DB(예: SQLite — 파일 하나짜리 DB)로 충분하지만, 여러 명이 동시에 쓰는 운영에는 운영용 DB(예: PostgreSQL)가 필요합니다. 전환은 곧 이관이고, 이관은 검증과 한 몸입니다 — 테이블별 건수 일치, 금액 합계 일치, 날짜·시간대 보존까지 대조해야 이관이 끝난 것입니다(2회차 이후 몸에 익은 전수 대조 그대로).

또 하나가 환경변수입니다. DB 접속 주소, API 키, 메일 계정 같은 민감 정보는 코드에 적지 않고 환경변수로 분리합니다. 그래야 같은 코드가 로컬에서는 개발 DB를, 운영에서는 운영 DB를 바라보고 — 키가 코드 저장소에 노출되는 사고도 막을 수 있습니다.

PROMPT · 백엔드 배포 준비
이 시스템을 [배포 대상]에 배포할 준비를 해라. - 개발용 DB를 운영용 DB로 전환하는 이관 스크립트를 만들어라 - 이관 후 테이블별 건수, 금액 합계, 날짜·시간대가 원본과 일치하는지 대조해서 보고해라 - 코드에 하드코딩된 접속 정보·키를 전부 찾아 환경변수로 분리하고, 필요한 환경변수 목록을 문서로 만들어라 (값은 문서에 쓰지 마라)
실습

프론트엔드 배포와 프론트엔드-백엔드 연결

학습 안내실행. 화면을 호스팅에 올리고, 운영 백엔드와 연결합니다. 완료 기준: 운영 URL에서 전 화면이 열리고, 화면의 데이터가 운영 DB에서 나오고, 쓰기가 저장되는가.

프론트엔드 배포는 화면 코드를 호스팅에 올려 URL을 받는 일입니다. Next.js처럼 프론트엔드와 백엔드가 한 몸인 구성이면 한 번의 배포로 함께 올라가고, 분리된 구성이면 프론트엔드가 바라볼 백엔드 주소를 환경변수로 지정해 연결합니다. 연결 확인은 세 줄이면 됩니다.

확인방법
① 열린다운영 URL에서 전 화면이 열린다 — 404·500 없이 전 페이지 응답
② 읽힌다화면의 데이터가 운영 DB에서 나온다 — 대표 데이터 1건을 운영 DB에서 바꾸고 화면 반영 확인
③ 써진다운영 화면에서 1건을 등록·수정하고 운영 DB에 저장됐는지 확인
배포가 막히면 — 뚫기 vs 갈아타기. 호스팅마다 지원 기능이 달라서, 같은 코드도 어떤 곳에서는 빌드가 실패합니다. 하루 이틀 막히면 매몰비용에 붙들리지 말고 다른 호스팅으로 갈아타는 것을 저울질하십시오 — 아래 사례가 정확히 이 갈림길을 지났습니다.
실습

로그인 및 보안 설정 — 정문과 뒷문을 함께 잠근다

학습 안내실행 · 점검. 로그인을 붙이고, 화면(정문)과 서버 기능(뒷문)이 모두 막혔는지 시험합니다. 완료 기준: 비로그인·일반권한으로 전 기능 호출 시험을 통과했는가.

배포된 순간부터 시스템은 "아무나 접속을 시도할 수 있는 곳"에 놓입니다. 점검할 것은 세 가지입니다 — 로그인 없이 접근되는 화면·기능이 없는가, 화면만 막고 서버 기능(API·서버 액션)은 열려 있는 "뒷문"이 없는가, 관리자 기능이 일반 사용자에게 열려 있지 않은가. 확인 방법은 하나뿐입니다: 비로그인·일반권한 상태로 전 기능을 직접 호출해 보는 것.

사내 시스템이라면 가입 방식도 결정합니다 — 아무나 가입할 수 있게 둘 것인가, 가입 신청 → 관리자 승인제로 통제할 것인가. 사내 시스템은 승인제가 기본값입니다.

PROMPT · 뒷문 점검
이 시스템의 모든 서버 기능(API 엔드포인트, 서버 액션)을 나열하고, 각각에 대해 로그인하지 않은 상태로 직접 호출하면 어떻게 되는지 점검해라. 인증 확인이 빠진 기능이 있으면 목록으로 보고하고, 일괄 수정 방안을 제안해라.
사례 업무관리시스템 · 6회차에 해당하는 활동

사례로 보기 — 업무관리시스템의 배포와 보안

뒷문 46개 — 보안 설정의 실제 모습

로그인 기능을 붙이는 과정에서 화면 접근은 막았지만 서버 기능 46개가 인증 없이 직접 호출 가능한 "뒷문"으로 남아 있음이 발견됐습니다. 팀은 46개 전부에 인증 가드를 일괄 삽입하고, 비로그인 차단·관리자 구분·위조 쿠키 차단을 10가지 시나리오 전부 통과(10/10)로 검증했습니다. 로그인은 가입 승인제(가입 신청 → 관리자 승인)로 설계해 사내 시스템다운 통제를 갖췄습니다.

사용자 로그인 게이트 가입 신청 → 관리자 승인제 화면 (정문) 인증된 사용자만 ✓ ? 화면을 거치지 않는 직접 호출 뒷문 — 화면만 막으면 여기가 열려 있다 인증 가드 서버 기능 46개 (API · 서버 액션) 전 기능에 인증 가드 일괄 삽입 게이팅 검증 10 / 10 통과
정문(화면)만 잠그면 안 됩니다 — 화면을 거치지 않는 직접 호출(뒷문) 46개까지 인증 가드로 차단했습니다.

DB 전환 — 1,382행 전량 대조

개발용 경량 DB(SQLite)에서 운영용 PostgreSQL(Supabase)로 옮기며 1,382행 전량을 이전하고, 테이블별 건수 일치·계약총액 합계 일치·시간대(KST) 보존까지 대조해 확인했습니다. 접속 정보와 키는 전부 환경변수로 분리해, 같은 코드가 로컬에서는 개발 DB를, 운영에서는 운영 DB를 바라보게 했습니다.

배포의 시행착오 — 갈아타는 것도 능력

첫 배포 대상이었던 호스팅(Cloudflare)에서는 빌드 실패가 반복되어 이틀을 소모했습니다. 팀은 매몰비용에 붙들리지 않고 Vercel로 전환해 한 번에 성공했고, 이 시행착오 전체를 결정 로그(D46)에 남겼습니다. 배포 단계에서 도구·인프라 문제로 막히면, 뚫는 것과 갈아타는 것을 저울질하십시오 — 시행착오도 기록하면 자산입니다.

46개
인증 가드를 일괄 삽입한 서버 기능(뒷문 차단)
10 / 10
인증 게이팅 시나리오 검증 통과
1,382행
운영 DB 이전 전량 검증(건수·합계·시간대)
6회차 자가 점검
  • 배포 대상(사내 서버/공개 웹)을 회사 정책 확인과 함께 결정했다.
  • 운영 DB 이관을 건수·합계·시간대까지 대조해 검증했다.
  • 민감 정보(접속 주소·키)가 코드가 아니라 환경변수에 있다.
  • 운영 URL에서 전 화면 열림·데이터 읽기·쓰기를 확인했다.
  • 비로그인·일반권한 호출 시험으로 정문(화면)과 뒷문(서버 기능)이 모두 막혔음을 확인했다.
6회차 산출물 (md / html)
  • 운영 URL — 팀원 접속 가능 상태
  • 배포 구성 문서 — 배포 대상·절차, 환경변수 목록(값 제외)
  • 보안 점검 보고 — 뒷문 점검 결과와 조치

7회차 — 전체 시스템 안정화, 시스템 설명서와 사용자 매뉴얼

Learning Objectives
  • 에러 처리·데이터 보호·성능 관점에서 시스템을 안정화할 수 있다.
  • 시스템 설명서(OVERVIEW.md·설계·운영)와 사용자 매뉴얼을 작성할 수 있다.
  • 문서와 매뉴얼을 사용자가 실제로 찾을 수 있는 곳에 배포할 수 있다.

배포(6회차)로 시스템은 누구나 접속할 수 있게 됐습니다. 7회차의 질문은 "만들지 않은 사람에게 맡겨도 되는가"입니다. 두 가지가 필요합니다 — 시스템이 낯선 사용자의 실수와 예상 밖의 입력에도 버티는 것(안정화), 그리고 만든 사람이 옆에 없어도 사용법과 구조가 전달되는 것(설명서·매뉴얼). 다음 회차의 오픈베타는 이 두 가지가 준비된 뒤의 일입니다.

이해

전체 시스템 안정화

안정화 점검은 네 영역입니다. 각 영역을 AI에게 점검시키고, 결과를 확인하고, 고치게 하십시오.

영역점검 내용확인 방법
보안 재점검6회차에 설정한 로그인·뒷문 차단이 운영 URL에서도 유효한가. 배포 후 추가·수정된 기능에 인증 가드가 빠지지 않았는가비로그인·일반권한 전 기능 호출 시험 재실행
에러 처리잘못된 입력·빈 파일·중복 제출에 시스템이 알아들을 수 있는 메시지로 응답하는가, 아니면 그냥 죽는가일부러 틀린 입력 투입
데이터 보호백업이 자동으로 되는가, 복원을 해 봤는가. 삭제는 복구 가능하거나 확인을 거치는가백업 → 복원 리허설 1회
성능실사용 규모의 데이터·동시 사용자에서 버티는가3회차 하네스로 부하 시험
실습

시스템 설명서와 사용자 매뉴얼 — 작성과 배포

학습 안내작성 · 게시. 결정 로그와 코드를 원료로 문서 4종을 만들고, 사용자가 찾을 수 있는 곳에 게시합니다. 완료 기준: 이 문서들만 읽고 다른 사람이 시스템을 사용·운영할 수 있는가.

시스템 문서는 네 벌이 표준입니다. 독자가 다르므로 한 문서로 합치지 않습니다.

문서내용독자
OVERVIEW.md시스템 소개, 설치·실행 방법, 알려진 한계다음 개발자·인수자
설계 문서(DESIGN.md)데이터 구조, 핵심 원칙, 집계·계산 규칙다음 개발자, 미래의 나
운영 가이드백업·복원, 계정 관리(가입 승인), 장애 시 대응운영 담당
사용자 매뉴얼화면별 사용법 — 짧게, 그림 위주로일반 사용자

사용자 매뉴얼의 요령은 세 가지입니다. 짧게, 화면 캡처 위주로, 그리고 기능 나열("이 버튼은 ~입니다")이 아니라 업무 시나리오 단위("발주 1건을 등록하려면")로 쓰십시오. AI에게 화면별 사용법 초안을 쓰게 하고, 사람이 실제 화면과 대조하며 다듬는 순서가 빠릅니다.

문서도 배포가 필요합니다. 시스템 안의 도움말 링크, 부서 공유 폴더, 사내 게시판 — 사용자가 실제로 찾을 위치에 게시하십시오. 만든 문서가 작성자 PC에만 있으면 없는 것과 같습니다.

형식은 그대로 md/html. 문서는 md로 쓰고 html로 변환해 게시하면 링크 공유가 쉬워집니다 — 착수 전에 정한 산출물 형식 규칙 그대로입니다.
사례 업무관리시스템 · 7회차에 해당하는 활동

사례로 보기 — 업무관리시스템의 안정화와 문서 체계

부하 시험 — 하네스가 다시 일한다

안정화의 마무리 관문은 부하 시험이었습니다. 동시 50건의 캘린더 요청, 80건의 정산 요청을 자동 투입해 에러 0건을 확인했습니다 — 3회차에 만든 하네스가 여기서 다시 일합니다. 손으로는 못 하는 시험을 스크립트가 대신하는 것, 안정화 단계에서도 원칙은 같습니다.

기록이 문서가 되다 — 결정 로그에서 문서 4종으로

문서는 개발이 끝난 뒤 몰아서 쓴 것이 아니라 개발 중에 쌓인 기록에서 그대로 나왔습니다. 결정 로그 D1~D46(DEV-LOG.md)이 히스토리의 원료가 되었고, 데이터 구조와 핵심 원칙 3가지를 담은 DESIGN.md, AI 작업 규칙을 담은 AGENTS.md(로컬 우선, 운영 반영은 매번 허락, 동기화는 스크립트로만), 실행 방법을 담은 OVERVIEW.md가 문서 체계를 이뤘습니다. 결정 로그를 꾸준히 쌓아 온 팀에게 문서화는 "쓰는 일"이 아니라 "정리하는 일"입니다.

에러 0
동시 50·80 요청 부하 시험
D1~D46
문서 체계의 원료가 된 결정 로그
7회차 자가 점검
  • 보안 재점검(운영 URL 기준 비로그인·일반권한 호출 시험)을 통과했다.
  • 일부러 틀린 입력을 넣어도 시스템이 죽지 않고 안내 메시지를 준다.
  • 백업·복원을 1회 리허설했다.
  • 부하 시험(하네스)으로 실사용 규모를 버티는지 확인했다.
  • 문서 4종(OVERVIEW.md·설계·운영·사용자 매뉴얼)이 완성되어, 사용자가 찾을 수 있는 곳에 게시되었다.
7회차 산출물 (md / html)
  • 안정화 점검 보고 — 보안 재점검·에러·백업·성능 점검 결과와 조치
  • 시스템 설명서 — OVERVIEW.md · 설계 문서 · 운영 가이드
  • 사용자 매뉴얼 — 게시 위치 포함

8회차 — 오픈 베타 서비스: 부서·사내 배포와 실사용 데이터

Learning Objectives
  • 실사용 테스트(클로즈드)에서 오픈베타로 사용 범위를 넓히고, 병행·전환 계획을 세울 수 있다.
  • 실사용 데이터(사용 로그·처리 기록·에러 로그·피드백)를 추적하는 장치를 설계할 수 있다.
  • 실사용 데이터를 분석해 디버깅하고, 시스템을 개선할 수 있다.

시스템은 배포됐고(6회차), 버티고(7회차), 매뉴얼도 있습니다. 8회차는 진짜 사용자에게 여는 회차입니다 — 부서 또는 사내 전체로 배포하고, 이때부터는 우리가 심어 둔 테스트 데이터가 아니라 실사용 데이터가 시스템 개선의 원료가 됩니다.

클로즈드 실사용
팀 밖 2~5명
오픈베타
부서 · 사내 배포
실사용 데이터 추적
사용 · 처리 · 에러 · 피드백
분석 · 디버깅
데이터가 가리키는 곳
개선 반영
하네스로 재확인
실습

부서·사내 배포 — 실사용 테스트에서 오픈베타로

학습 안내운영 수행. 소수 사용자 실사용 → 피드백 반영 → 대상 확대(오픈베타)의 2단계로 진행합니다. 완료 기준: 팀 밖의 사용자가 실제 업무 1건을 시스템으로 처리했는가.

① 실사용 테스트(클로즈드). 팀 밖의 실제 사용자 2~5명에게 진짜 업무 1~2건을 시스템으로 처리하게 합니다. 관찰 포인트는 "어디서 멈칫하는가"입니다. 피드백은 접수 채널을 하나로 정하고(메신저 방·시트·게시판), 이슈 로그(번호·내용·심각도·상태)로 관리합니다.

② 오픈베타. 치명 이슈가 잡히면 대상을 부서 또는 사내 전체로 넓힙니다. 이때 결정해야 할 것이 병행 운영 계획입니다 — 기존 방식(엑셀·수작업)과 새 시스템을 언제까지 병행하고, 언제부터 새 시스템을 유일한 원본(single source of truth)으로 삼을지. 전환일을 정하지 않으면 이중 입력이 영원히 계속됩니다.

베타 공지에 넣을 세 줄. ① 무엇이 달라지는가(기존 방식 대비) ② 어디서 어떻게 쓰는가(링크·로그인) ③ 문제가 생기면 어디로 말하는가(피드백 채널). 긴 설명은 필요 없습니다 — 7회차에 만든 사용자 매뉴얼 링크를 붙이면 됩니다.
이해

실사용 데이터 추적 — 무엇을 남길 것인가

오픈베타의 가장 큰 선물은 데이터입니다 — 다만 남기지 않으면 아무것도 배울 수 없습니다. 추적할 실사용 데이터는 네 종류입니다.

데이터남길 것답해 주는 질문
사용 로그누가 언제 어떤 화면·기능을 썼는가무엇이 쓰이고, 무엇이 안 쓰이는가
처리 기록무엇이 몇 건 처리됐고 얼마나 걸렸는가자동화가 실제로 일하고 있는가 — 효과 정량화(10회차)의 원천
에러 로그언제 어떤 입력에서 무슨 에러가 났는가어디서 무너지는가 — 디버깅의 출발점
피드백 · 이슈사용자가 말로 남긴 불편·요청 (이슈 로그)데이터에 안 보이는 마찰은 무엇인가
개인정보 주의. 사용 로그에 누구의 무엇을 남길지는 사내 정책과 함께 정하십시오. 목적에 필요한 최소한만, 남긴다는 사실을 공지하고 남기는 것이 원칙입니다.
PROMPT · 실사용 추적 붙이기
시스템에 실사용 추적을 붙여라. - 화면·주요 기능별 사용 기록(누가·언제·무엇을)을 남겨라 - 처리 건수·처리 시간, 에러(입력·메시지 포함)를 기록해라 - 관리자만 보는 간단한 현황 화면(최근 사용 · 에러 목록)을 만들어라 - 기록 항목이 개인정보 최소화 원칙에 맞는지 검토 의견을 붙여라
실습

실사용 데이터 분석, 디버깅, 시스템 개선

학습 안내주간 리듬 수행. 주 1회 실사용 데이터를 열어 분석 → 디버깅 → 개선 → 하네스 재실행의 리듬을 돌립니다. 완료 기준: 실사용 데이터에서 발견해 고친 개선이 최소 1건 있는가.

분석의 질문은 세 가지입니다. ① 에러 — 가장 자주 실패하는 기능은 무엇인가? 에러 로그를 유형별로 분류합니다(3회차 원인분석과 같은 요령 — 상위 2~3개 유형이 대부분을 차지합니다). ② 마찰 — 시작했다가 끝내지 못한 작업, 유난히 오래 걸리는 화면은 어디인가? ③ 외면 — 만들었는데 아무도 안 쓰는 기능은 무엇인가? 홍보가 안 된 것인지, 필요 없는 기능이었는지를 사용자에게 물어 확인합니다.

디버깅은 재현에서 시작합니다. 에러 로그의 입력을 그대로 개발 환경에 재현 → 원인 수정 → 하네스 재실행(기존 품질 유지 확인) → 운영 반영. 그리고 실사용에서 나온 새 예외 케이스는 테스트 데이터에 편입하십시오 — 하네스가 실사용을 닮아 갈수록 강해집니다.

운영 DB를 손으로 고치고 싶은 유혹. 실사용 중 데이터가 꼬이면 운영 DB를 직접 수정하고 싶어집니다. 최후의 수단입니다 — 고쳐야 한다면 반드시 백업 후에, 무엇을 왜 고쳤는지 기록을 남기고 하십시오. 원인이 된 코드·입력 검증을 고치는 것이 진짜 수리입니다.
사례 업무관리시스템 · 8회차에 해당하는 활동

사례로 보기 — 업무관리시스템의 실사용 전환

세 도구의 은퇴 — 시스템이 유일한 원본이 되다

업무관리시스템은 배포 후 내부 직원 7명과 외부강사 약 20명이 실제 업무에 쓰는 시스템이 되었습니다. 오픈의 기준은 화려한 발표가 아니라 "기존 도구를 더 이상 열지 않게 되는 것" — 구글 시트·에어테이블·엑셀 지급대장 대신 새 데이터가 시스템에만 쌓이는 상태입니다. 접근은 가입 승인제(가입 신청 → 관리자 승인)로 통제해, 사용 범위를 넓히면서도 누가 쓰는지는 항상 파악됩니다.

추적 가능한 상태로 태어난 시스템

실사용 추적의 밑천은 개발 중에 심어 둔 기록 장치들이었습니다 — 견적서 발송 이력, 외주 작업·강의의 수정 이력처럼 "언제 누가 무엇을 했는지"가 데이터로 남는 구조 말입니다. 압권은 "확인 필요" 큐입니다: 수행이 완료됐는데 미발행 잔액이 남아 있으면 시스템이 발행 누락 의심 건으로 자동 표시합니다. 사람이 로그를 뒤져 문제를 찾는 것이 아니라, 실사용 데이터가 스스로 관리 포인트를 들어 올리는 설계 — 8회차가 지향하는 추적의 완성형입니다.

8회차 자가 점검
  • 클로즈드 실사용(팀 밖 2~5명)을 거쳐 오픈베타를 시작했다.
  • 기존 방식과의 병행 기간과 전환일이 정해져 공지되었다.
  • 사용·처리·에러·피드백 4종의 실사용 데이터가 쌓이고 있다.
  • 실사용 데이터에서 발견한 문제를 최소 1건 디버깅·개선했고, 하네스로 품질 유지를 확인했다.
8회차 산출물 (md / html)
  • 오픈베타 공지문과 병행·전환 계획 — 전환일 명시
  • 실사용 데이터 추적 설계 — 남기는 항목, 개인정보 검토
  • 이슈 로그 — 접수·심각도·처리 상태
  • 분석·개선 기록 — 발견 → 조치 → 재측정

9회차 — 실사용 데이터 기반의 시스템 개선 (지속)

Learning Objectives
  • 실사용 데이터와 이슈를 하나의 개선 백로그로 통합해 운영할 수 있다.
  • 목소리가 아니라 데이터(빈도 × 심각도)로 개선 우선순위를 정할 수 있다.
  • 개선의 효과를 지표 추세로 관리할 수 있다.

9회차에 새로운 활동 유형은 없습니다 — 8회차에 시작한 분석 → 디버깅 → 개선의 리듬을 멈추지 않고 돌리는 것이 9회차입니다. 달라지는 것은 관점입니다. 터진 문제에 한 건씩 대응하는 소방수 모드에서, 데이터가 가리키는 곳부터 계획적으로 고치는 운영 모드로 옮겨 갑니다.

실습

개선 백로그 — 요청이 아니라 데이터가 우선순위를 정한다

학습 안내운영. 이슈 로그와 실사용 데이터 발견을 하나의 백로그로 합치고 우선순위를 매깁니다. 완료 기준: 백로그의 모든 항목에 출처·빈도·심각도가 붙어 있는가.

이슈 로그(피드백)와 실사용 데이터의 발견(에러·마찰·외면)을 하나의 개선 백로그로 합치고, 항목마다 두 숫자를 붙입니다 — 빈도(얼마나 자주 일어나는가) × 심각도(업무에 얼마나 치명적인가). 목소리 큰 요청이 아니라 이 곱이 순서를 정합니다. 상위 2~3개 항목이 불편의 대부분을 차지하는 파레토는 여기서도 반복됩니다 — 3회차 원인분석과 같은 프레임입니다.

개선 백로그 양식
| 항목 | 출처(로그/이슈) | 빈도 | 심각도 | 우선순위 | 상태 |
|------|---------------|------|--------|---------|------|
| 정산 화면 저장 실패 | 에러 로그 주 14건 | 상 | 상 | 1 | 수정 중 |
| 검색 결과 느림 | 사용 로그 (평균 8초) | 상 | 중 | 2 | 대기 |
| 새 통계 화면 요청 | 이슈 #12 | 하 | 하 | 보류 | 기록만 |

개선 요청에는 "새 기능"도 섞여 들어옵니다. 범위 관리는 1회차의 원칙 그대로 — 지금 고칠 것(결함·마찰), 다음에 만들 것(기능 확장), 만들지 않을 것을 구분해 기록합니다. 백로그는 거절의 기록이기도 합니다.

실습

개선 사이클과 지표 추세

학습 안내반복 수행. 백로그 상위 항목부터 개선 사이클을 돌리고, 핵심 지표를 주 단위로 재측정합니다. 완료 기준: 지표의 주 단위 추세 기록이 쌓이고 있는가.

개선 한 건의 리듬은 이미 몸에 익은 그대로입니다 — 원인분석 → 수정 → 하네스 재실행(기존 품질 유지 확인) → 운영 반영 → 실사용 데이터로 효과 확인. 여기에 하나를 더합니다: 지표의 추세 기록. 3회차 지표 정의서의 지표들을 주 단위로 다시 재서, 개선이 누적되는 모습을 시계열로 남기십시오. 이 추세가 10회차 효과 정량화의 가장 힘 있는 증거가 됩니다.

반영은 몰아서, 주기적으로. 개선을 며칠 단위로 묶어 반영하십시오(예: 주 1회 릴리즈). 매일 조금씩 바뀌는 시스템은 사용자를 불안하게 하고, 무엇이 효과를 냈는지도 흐려집니다. 반영할 때마다 "무엇이 바뀌었는지" 한 줄 공지를 잊지 마십시오.
KEY POINT · 9회차의 관점

완성은 이벤트가 아니라 리듬입니다.

시스템은 오픈한 날 완성되는 것이 아니라, 실사용 데이터가 가리키는 곳을 계속 고치면서 완성에 가까워집니다. 측정 → 원인 → 수정 → 재측정의 리듬이 팀 안에 자리 잡으면, 컨설팅이 끝나도 시스템은 계속 좋아집니다. 9회차의 진짜 산출물은 개선 몇 건이 아니라 이 리듬 자체입니다.

사례 업무관리시스템 · 9회차에 해당하는 활동

사례로 보기 — 업무관리시스템의 개선 리듬

이 리듬은 새로운 것이 아니다

업무관리시스템에서 데이터 기반 개선의 리듬은 오픈 후에 처음 시작된 것이 아닙니다 — 연결률 33% → 89%(별칭 규칙), 원천징수 "10원 절사" 발견(전수 대조), 멤버 테이블 병합(구조 결정) 같은 굵직한 개선 전부가 측정 → 원인 → 수정 → 재측정의 반복이었습니다. 오픈 이후 달라지는 것은 원료뿐입니다: 우리가 심은 테스트 데이터가 아니라 실사용 데이터가 다음 개선을 가리킵니다. "확인 필요" 큐(발행 누락 의심 자동 표시)처럼 시스템이 스스로 들어 올리는 관리 포인트가 백로그의 첫 줄이 됩니다.

기록은 계속된다. 결정 로그가 D1~D46으로 배포까지를 기록했듯, 오픈 이후의 개선도 같은 로그에 같은 리듬으로 쌓입니다. 번호가 이어지는 한 시스템은 살아 있는 것입니다 — 10회차의 개발 히스토리는 이 로그의 마지막 페이지까지를 정리하는 일입니다.
9회차 자가 점검
  • 이슈와 실사용 데이터가 하나의 개선 백로그로 통합되어 있고, 빈도 × 심각도로 우선순위가 매겨져 있다.
  • 개선마다 하네스를 재실행해 기존 품질이 유지됨을 확인했다.
  • 핵심 지표의 주 단위 추세 기록이 있다.
  • 릴리즈 리듬(반영 주기)이 정해져 있고, 반영 시 사용자에게 공지된다.
9회차 산출물 (md / html)
  • 개선 백로그 — 출처·빈도·심각도·우선순위·상태
  • 지표 추세 기록 — 주 단위 시계열
  • 개선 리포트 — 반영된 개선과 Before/After

10회차 — 최종 시스템 완성, 효과 정량화, 그리고 최종 발표

Learning Objectives
  • 최종 코드를 완성하고, 활용 효과를 정량화된 숫자로 평가할 수 있다.
  • 개발 히스토리를 정리하고, 시스템 설명서·사용자 매뉴얼을 실사용에 맞게 개정(revision)할 수 있다.
  • Lessons Learned를 조직 자산 형태로 정리하고, 최종 발표를 구성할 수 있다.

마지막 회차는 새 기능을 만드는 회차가 아니라 마무리하고, 증명하고, 물려주는 회차입니다. 여섯 가지 활동 — ① 최종 코드 완성 ② 활용 효과 평가·정량화 ③ 개발 히스토리 정리 ④ 시스템 설명서·사용자 매뉴얼 revision ⑤ Lessons Learned ⑥ 최종 발표 — 을 순서대로 진행합니다.

실습

최종 코드 완성과 효과 정량화

학습 안내마감 작업. 이슈 로그의 잔여 건을 처리(수정 또는 "알려진 한계"로 명시)하고, 효과를 산식과 함께 숫자로 만듭니다. 완료 기준: 효과 평가표의 모든 숫자에 산식과 근거가 붙어 있는가.

최종 코드 완성은 "이슈 0"이 아니라 "남은 이슈가 무엇인지 아는 상태"입니다. 베타 이슈 로그에서 고칠 것은 고치고, 이번 범위 밖의 것은 "알려진 한계"로 OVERVIEW.md에 명시합니다. 마지막으로 하네스와 안정화 점검을 한 번씩 다시 돌려 최종 상태를 확정합니다.

효과 정량화는 산식이 생명입니다. 인상이 아니라 계산으로 말하십시오.

효과 유형산식 예근거 데이터
시간 절감(기존 건당 시간 − 현재 건당 시간) × 월 건수 × 인원Before/After 실측, 처리 건수 로그
품질 개선지표 변화 — 오류율·누락률·재작업률의 Before → After3회차 지표 정의서 · 9회차 지표 추세 기록
비용 절감외주·인력 비용의 감소분기존 외주 단가 × 대체된 물량
새로 보이게 된 것기존 방식에서는 아무도 계산하지 못하던 숫자가 상시 가시화됨대시보드 캡처, 발견 사례

기준선은 1회차 기획서에 적었던 목표와 대조합니다 — "작성 시간 70% 단축", "분석 3~4주 → 3~5일" 같은 목표 수치를 세웠던 과제라면, 달성 여부를 정면으로 보고하십시오. 미달이어도 원인과 함께 보고하는 것이 신뢰를 만듭니다.

실습

히스토리 정리, 문서·매뉴얼 revision, Lessons Learned

학습 안내작성. 결정 로그를 원료로 히스토리를 완성하고, 7회차에 만든 문서·매뉴얼을 개정합니다. 완료 기준: 문서의 내용이 오늘의 시스템과 일치하는가.

개발 히스토리는 2회차부터 쌓아 온 결정 로그(D번호)를 시간순으로 훑으며 "무엇을 왜 그렇게 결정했는지"의 흐름으로 정리합니다. 처음부터 쓰려면 큰일이지만, 로그가 있다면 반나절 작업입니다. 시스템 문서 4종(OVERVIEW.md·설계·운영·사용자 매뉴얼)은 7회차에 초판을 만들었습니다 — 10회차의 일은 revision입니다. 8·9회차의 실사용과 개선으로 시스템은 초판 문서와 달라져 있습니다. 아래 네 가지를 점검해 개정하십시오.

Revision 점검내용
바뀐 기능오픈베타 이후 추가·변경된 기능이 설명서·매뉴얼에 반영되었는가
알려진 한계남겨 두기로 한 이슈가 "알려진 한계"로 정직하게 적혀 있는가
화면 캡처매뉴얼의 그림이 현재 화면과 같은가 — 낡은 캡처는 없느니만 못합니다
버전 표기문서에 버전·개정일이 적혀 있는가, 게시 위치의 문서가 최신본인가

Lessons Learned는 "소감문"이 아니라 다음 과제가 재사용할 수 있는 형태로 만듭니다. 세 가지 형식을 권장합니다.

1잘된 결정 / 다시 한다면

결정 로그에서 "효과가 컸던 결정"과 "다시 한다면 다르게 할 결정"을 각각 3~5개씩 뽑아 이유와 함께 적습니다.

2프롬프트 패턴집

이번 개발에서 반복적으로 효과를 낸 프롬프트(검증 요구, 불편 묘사, 비교 후 추천 등)를 패턴 이름과 예문으로 정리합니다.

3함정 사전

실제로 빠졌던 함정("거의 같은 계산", "다 됐습니다 믿기", 구조 결정 미루기)과 회피법을 목록으로 만듭니다. 다음 조가 같은 곳에서 넘어지지 않게.

실습

최종 발표 — 10회차의 스토리를 15분에

학습 안내구성 후 리허설. 아래 6부 구성으로 발표를 만들고, 시연은 반드시 사전 리허설합니다. 완료 기준: 시연 시나리오가 이번 주에 실제로 돌려 본 경로인가.

유일한 발표입니다. 10회 동안의 산출물이 곧 발표 재료이므로 새로 만들 것은 거의 없습니다 — 모으고 편집하는 일입니다.

순서내용재료가 되는 산출물
1문제와 범위 — 무엇을 왜 자동화했나1회차 문제 정의문 · SIPOC
2Before / After — 프로세스가 어떻게 바뀌었나1회차 휴먼/프로그램 프로세스 대비표
3시연 — 실제로 돌아가는 모습운영 중인 시스템 (대표 사이클 1개)
4품질 — 지표와 개선의 스토리3회차 지표 정의서 · 9회차 지표 추세
5효과 — 정량화된 숫자10회차 효과 평가표 (산식 포함)
6Lessons Learned — 물려줄 것프롬프트 패턴집 · 함정 사전
시연이 발표의 심장입니다. 슬라이드 20장보다 실제로 도는 화면 3분이 강합니다. 다만 시연은 반드시 리허설한 경로로 — 발표 당일에 처음 눌러 보는 버튼은 반드시 그날 처음으로 고장 납니다.
사례 업무관리시스템 · 10회차에 해당하는 활동

사례로 보기 — 업무관리시스템의 마무리와 자산화

기록이 교재가 되다 — Lessons Learned의 완성형

마무리 단계의 산출물은 개발 중에 쌓인 기록에서 그대로 나왔습니다. 결정 로그(DEV-LOG.md)가 시간순 개발 히스토리가 되었고, 7회차에 초판을 만든 문서 체계(OVERVIEW.md·DESIGN·AGENTS)는 실사용을 반영해 개정됐습니다. 나아가 이 기록 전체가 프롬프트 패턴 사전 8종·함정 사전 8종을 부록으로 갖춘 교육용 교재 한 권으로 재구성되었습니다 — Lessons Learned의 극단적 완성형입니다. 다음 과제를 맡을 팀이 같은 길을 반나절에 따라올 수 있게 하는 것, 그것이 자산화입니다.

효과의 백미 — 아무도 몰랐던 숫자가 보인다

업무관리시스템의 효과 평가에서 가장 힘 있는 항목은 시간 절감이 아니었습니다. 대시보드의 "미청구 금액 = 계약총액 − 발행완료 계산서 합계" — 시트와 엑셀 시절에는 아무도 계산하지 않아서 어디서 돈이 새는지 몰랐던 숫자가, 시스템에서는 항상 화면에 떠 있습니다. 이중 입력 소멸, 수작업 집계 소멸과 함께 "기존 방식에서는 보이지 않던 것이 보이게 된 것"이 정량 효과의 축이 되었습니다. 여러분의 효과 평가에서도 이 항목을 찾아보십시오 — 거의 모든 과제에 하나씩은 있습니다.

대시보드 — 업무관리시스템 계약총액 19.1억 전 프로젝트 합계 매출 (발행완료) 발행완료 계산서 공급가액 합 미수금 발행 후 미수금 계산서 합 ★ 미청구 자동 계산 · 상시 표시 시트 시절엔 없던 숫자 미청구 = 계약총액 − 발행완료 계산서 합계 — 어디서 돈이 새는지 항상 화면에 보인다
효과의 백미 — 기존 방식에서는 아무도 계산하지 않던 "미청구"가 대시보드에 상시 가시화됩니다.
완성의 정의. 사례 교재의 마지막 문장은 이렇습니다 — "시스템은 완성되지 않는다. 정의·질문·제작·검증·기록의 리듬을 반복할 뿐이다." 10회차의 끝은 시스템의 끝이 아니라, 여러분 팀이 이 리듬을 스스로 돌릴 수 있게 된 시점입니다.
10회차 자가 점검
  • 잔여 이슈가 처리되었거나 "알려진 한계"로 문서에 명시되었다.
  • 효과 평가표의 모든 숫자에 산식과 근거 데이터가 붙어 있고, 1회차 목표와 대조했다.
  • 개발 히스토리(결정 로그 기반)가 완성되었고, 문서·매뉴얼이 실사용을 반영해 개정되었다(revision).
  • Lessons Learned가 재사용 가능한 형태(잘된 결정·프롬프트 패턴·함정 사전)로 정리되었다.
  • 최종 발표를 6부 구성으로 만들었고, 시연 경로를 리허설했다.
10회차 산출물 (md / html)
  • 최종 코드 + 최종 OVERVIEW.md — 알려진 한계 포함
  • 활용 효과 평가서 — 산식·근거 포함 정량화
  • 개발 히스토리 — 결정 로그 기반
  • 개정된 시스템 문서·매뉴얼 — revision 반영
  • Lessons Learned — 프롬프트 패턴집 · 함정 사전 포함
  • 최종 발표 자료

부록 — 회차별 산출물 총괄표

10회차 동안 제출할 산출물의 전체 목록입니다. 모든 문서는 md 또는 html이 기본이고, 코드 산출물에는 항상 OVERVIEW.md가 따라갑니다. 회차가 끝날 때마다 이 표에서 자기 조의 진도를 확인하십시오.

시점산출물비고
착수 전기존 기획서·개발 코드의 OVERVIEW.md진행분이 있는 과제 — 제출 권장
1회차개발계획서.md (SIPOC · 프로세스 플로우차트 · 데이터 템플릿 · 테이블 정의서 · 화면/저장 기획)이후 모든 회차의 기준 문서
2회차MVP 범위표 / MVP 코드 + OVERVIEW.md / 자동화 가능성 실험 기록 / 결정 로그 시작핵심 사이클 관통이 기준
3회차테스트 하네스 / 품질 지표 정의서 / 측정·개선 리포트(Before/After)하네스는 이후 회차에서 재사용
4회차기능 확인 결과표 / 데이터 검증 보고(전수 대조) / 기능 완성 코드기능 목록 100% 구현
5회차고도화 내역서 / 연계 설계서(데이터 계약·실패 처리) / 고도화·연계 코드변경마다 하네스 재실행
6회차운영 URL / 배포 구성 문서(환경변수·절차) / 보안 점검 보고정문·뒷문 모두 차단
7회차안정화 점검 보고 / 시스템 설명서 / 사용자 매뉴얼(게시 위치 포함)문서도 배포까지
8회차오픈베타 공지·전환 계획 / 실사용 데이터 추적 설계 / 이슈 로그 / 분석·개선 기록전환일 명시
9회차개선 백로그 / 지표 추세 기록 / 개선 리포트데이터가 우선순위를 정한다
10회차최종 코드 / 효과 평가서 / 개발 히스토리 / 개정된 문서·매뉴얼(revision) / Lessons Learned / 최종 발표발표는 10회차 1회뿐
매 회차 공통 — 컨설팅 데이 전 체크
  • 지난 회차 산출물이 md/html로 정리되어 공유 가능한 상태다.
  • 회차 사이에 한 작업이 결정 로그에 기록되어 있다.
  • 막힌 곳·질문을 구체적인 문장으로 준비했다 ("안 돼요"가 아니라 "무엇을 했더니 무엇이 됐다").
  • 시스템이 컨설팅 자리에서 바로 시연 가능한 상태다.