이 장에서 배우는 것 작업을 어디까지 쪼개는지, 왜 크기보다 독립성이 중요한지, 그리고 의존성을 끊는다는 게 실제로 무슨 뜻인지.
작업을 더 이상 쪼갤 수 없는 단위까지 내립니다.
각각이 하나의 스프린트입니다. 분 단위로 끝날 수 있습니다.
여기서 오해가 자주 생깁니다. "백로그를 잘게 쪼개면 되는 것 아닌가?"
쪼개는 것만으로는 부족합니다. 쪼갠 조각들이 서로 의존하면 결국 순서대로 처리해야 하고, 병렬성이 안 나옵니다.
flowchart LR
subgraph S1["쪼갰지만 의존적 (직렬 대기)"]
direction TB
A1["1. DB 스키마 변경"] --> A2["2. API 수정"] --> A3["3. 화면 연결"]
end
subgraph S2["독립적 (병렬 실행)"]
direction TB
B1["사진 업로드"]
B2["비밀번호 재설정"]
B3["탈퇴 마스킹"]
end
S1 -.->|"독립 단위 분할"| S2왼쪽은 세 조각이지만 한 줄로 서 있습니다. 1이 끝나야 2를 시작합니다. 쪼갠 의미가 없습니다.
오른쪽은 셋이 서로를 안 기다립니다. 동시에 진행됩니다.
| 성질 | 결과 |
|---|---|
| 병렬 실행 | 서로 안 기다리니 10개를 동시에 |
| 실패 범위가 작음 | 하나가 틀려도 그 하나만 다시 |
| 대기 시간 0 | 스프린트 경계에서 모두가 모일 이유가 없음 |
| 컨텍스트가 깨끗함 | 각자 자기 컨텍스트만 |
마지막이 실무에서 큽니다. 큰 작업 하나를 통째로 맡기면 컨텍스트가 차서 일관성이 깨지지만, 원자 단위로 나누면 각자 깨끗한 상태에서 시작합니다.
그러면 "DB 스키마 → API → 화면"이나 "조사 → 기획서 작성 → 디자인"처럼 원래 순서가 있는 일은 어떻게 합니까?
세 가지 방법이 있습니다.
기획 따로, 디자인 따로, 개발 따로처럼 단계별·계층별로 쪼개면 앞사람이 끝날 때까지 뒷사람이 계속 기다려야 합니다.
대신 하나의 작은 결과물을 처음부터 끝까지 혼자 완성할 수 있는 '독립 완결 단위'로 쪼갭니다. (개발에서는 이를 전통적으로 '세로 자르기, Vertical Slice'라고도 부르지만, 본질은 방향이 아니라 남을 기다리지 않고 혼자서 끝까지 완성할 수 있는가입니다.)
각 조각이 다른 팀원의 다음 단계 작업을 기다릴 필요 없이 혼자서 끝까지 완성됩니다. 에이전트들이 서로를 기다리지 않고 동시에 병렬로 진행할 수 있습니다.
graph TD
subgraph "단계별 직렬 분할: 앞 작업 대기 발생"
L1["1단계: 전체 기초 조사 / DB"] --> L2["2단계: 전체 문서 작성 / API"] --> L3["3단계: 전체 디자인 / 화면 UI"]
end
subgraph "독립 완결 단위 분할: 동시 병렬 실행"
F1["완결 일감 1: 핵심 요약 제안서<br/>[조사 + 작성 + 검토 완결]"]
F2["완결 일감 2: 경쟁사 가격 비교표<br/>[조사 + 작성 + 검토 완결]"]
F3["완결 일감 3: 고객 FAQ 세트<br/>[조사 + 작성 + 검토 완결]"]
end
L3 -.->|"독립 완결 단위로 전환"| F1 & F2 & F3정말 순서가 있어 나눠야 한다면, 작업을 시작하기 전에 주고받을 형식과 규칙(규격)을 먼저 확정합니다.
형식과 규격이 미리 정해져 있으면 앞 단계 작업이 완전히 끝날 때까지 기다릴 필요가 없습니다.
억지로 나누지 마세요. 데이터베이스 마이그레이션이나 필수 법적 승인처럼 본질적으로 순차인 작업이 있습니다. 그건 하나의 마이크로 스프린트로 묶습니다.
모든 것을 병렬로 만들려고 하지 마세요. 병렬이 가능한 것을 병렬로 하는 게 목적이지, 억지로 나누는 게 목적이 아닙니다.
작업을 앞에 두고 이렇게 물어보세요.
세 번째(따로 배포·공유하여 바로 쓸 수 있는가)가 가장 강한 기준입니다. 독립적으로 쓸 수 있으면 확실히 원자 단위입니다.
| 이 정도면 | 판단 |
|---|---|
| 한 문장으로 설명된다 | 적당 |
| "그리고"가 들어간다 | 아직 큼. 나눌 수 있음 |
| 테스트를 2~3개로 표현할 수 있다 | 적당 |
| 여러 팀이 관여한다 | 큼 |
"그리고"가 신호입니다. "사진을 업로드하고 썸네일을 만든다"는 두 개입니다.
사람이 관리하면 그렇습니다. 스프린트 10개를 사람이 추적하면 그게 일입니다. 그런데 추적을 자동화하면 개수는 문제가 안 됩니다. 원자 단위가 성립하는 것은 관리 비용이 낮아졌기 때문입니다.
큰 그림은 의도에 있습니다. 마이크로 스프린트는 실행 단위이지 계획 단위가 아닙니다. "회원 관리를 개선한다"는 목표는 그대로 두고, 실행만 원자 단위로 합니다.
1. 백로그를 잘게 쪼개기만 해서는 왜 부족합니까?
쪼갠 조각들이 서로 의존하면 결국 순서대로 처리해야 하기 때문입니다. 세 조각으로 나눠도 한 줄로 서 있으면 병렬성이 안 나옵니다. 크기가 아니라 독립성이 핵심입니다.
2. "단계별로 나누지 말고 독립 완결 단위로 나누라"는 게 무슨 뜻입니까?
기획·디자인·개발처럼 단계별·계층별로 나누면 앞 단계가 끝날 때까지 뒷사람이 계속 기다려야 합니다. 반면 하나의 기능을 처음부터 끝까지 혼자 완성할 수 있는 독립 완결 단위로 쪼개면(전통적 용어로 세로 자르기), 다른 작업을 기다리지 않고 여러 사람이(또는 여러 AI 에이전트가) 동시에 병렬로 작업할 수 있습니다.
3. 독립성을 판정하는 가장 강한 기준은?
따로 배포할 수 있는가입니다. 따로 완료·테스트·배포가 가능하면 확실히 독립적입니다.
이제 우리 백로그로 직접 해봅니다. 40분짜리 실습입니다 → 우리 백로그를 쪼개보기
✗ "회원 관리 기능" ← 기능 단위✓ "프로필 사진 업로드 버튼 추가" ← 원자 단위✓ "비밀번호 재설정 메일 발송" ← 원자 단위✓ "탈퇴 시 개인정보 마스킹" ← 원자 단위✗ 단계별 직렬 대기 (기존 가로 분할): [전체 DB 작업] → [전체 API 작업] → [전체 화면 UI 작업]✓ 독립 완결 단위 (세로 관통 분할): [사진 업로드: DB+API+화면 완결] · [비밀번호: DB+API+화면 완결]✗ 단계별 직렬 대기: [전체 시장 조사 3일] → [전체 기획서 작성 3일] → [전체 디자인 요청 3일]✓ 독립 완결 단위 : [1페이지 제안 요약서 완결] · [경쟁사 가격비교표 완결] · [고객 FAQ 5종 완결]개발 : 1단계로 API 데이터 입출력 형식을 먼저 확정 → 프론트엔드와 백엔드가 동시에 착수일반 업무: 1단계로 최종 보고서의 목차와 표 양식을 먼저 확정 → 여러 에이전트가 각 장을 동시에 작성□ 이것만 따로 완료할 수 있나?□ 이것만 따로 테스트·검토할 수 있나?□ 이것만 따로 배포·공유할 수 있나? (슬라이드 1장, FAQ 1세트 등)□ 다른 작업이 끝나야 시작할 수 있나? ← 예면 아직 안 나뉜 것