[GitHub 100일 챌린지] Day 75 - GitHub Projects 고급 관리
100일 챌린지 Day 75 - 커스텀 필드, 다양한 뷰, 인사이트로 프로젝트 관리를 최적화합니다.
⏱️ 예상 학습 시간: 45-50분 📚 난이도: ⭐⭐⭐ (중급)
배울 내용
- 커스텀 필드로 정보 확장하기
- Board, Table, Roadmap 뷰 활용
- 그룹화와 필터링으로 집중하기
- Insights로 진행 상황 분석
- 고급 자동화 워크플로우
시작하기 전에
이 내용은 다음 개념을 알고 있다면 더 쉽게 이해할 수 있습니다:
- ✅ [Day 74 - GitHub Projects 기본 사용법]
- ✅ 칸반 보드 사용 경험
- ✅ 애자일/스크럼 용어 (Story Points, Sprint 등)
Day 74에서 프로젝트 보드를 만들어봤다면, 이번엔 그것을 더 강력하게 활용하는 방법을 배웁니다!
1. 커스텀 필드 (Custom Fields)
필드란?
정의: 각 항목에 추가 정보를 저장하는 사용자 정의 속성
1
2
3
4
5
6
7
8
9
10
기본 필드:
- Title (제목)
- Assignees (담당자)
- Status (상태)
커스텀 필드로 확장:
+ Priority (우선순위)
+ Size (작업 크기)
+ Sprint (스프린트)
+ Estimate (예상 시간)
필드 타입
| 타입 | 설명 | 예시 |
|---|---|---|
| Text | 짧은 텍스트 | 팀명, 태그 |
| Number | 숫자 | 스토리 포인트, 우선순위 |
| Date | 날짜 | 마감일, 시작일 |
| Single select | 단일 선택 | Priority (High/Medium/Low) |
| Iteration | 반복 주기 | Sprint 1, Sprint 2 |
Single Select 필드 만들기
Priority 필드 예시:
1
2
3
4
5
6
7
8
9
10
1. Project Settings → Custom fields
2. New field 클릭
3. 이름: Priority
4. Type: Single select
5. Options 추가:
- 🔴 Critical
- 🟠 High
- 🟡 Medium
- 🟢 Low
- ⚪ None
활용:
1
2
3
4
5
6
7
Issue #123
├─ Title: 로그인 버그 수정
├─ Status: In Progress
├─ Assignee: @developer
└─ Priority: 🔴 Critical
→ 우선순위별로 필터링 및 정렬 가능
Number 필드: Story Points
애자일 개발에 유용:
1
2
3
4
5
6
7
8
9
10
11
필드 설정:
이름: Story Points
타입: Number
범위: 1-13 (피보나치 수열)
사용 예시:
#123: 로그인 기능 → 5 points
#124: 회원가입 → 8 points
#125: UI 수정 → 3 points
→ Sprint 계획 시 capacity 계산
Date 필드: 마감일 관리
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
필드: Due Date
타입: Date
활용:
┌─────────────────────────────┐
│ Issue #123 │
│ Due Date: 2024-12-31 │
│ │
│ 상태: │
│ ⚠️ 3일 남음 │
│ 🔴 마감일 지남 │
│ ✅ 완료됨 │
└─────────────────────────────┘
→ 마감일 기준으로 정렬 및 알림
Iteration 필드: 스프린트
스프린트 기반 개발:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
필드 생성:
이름: Sprint
타입: Iteration
기간: 2주
시작: 2024-01-01
자동 생성:
- Sprint 1 (01/01 - 01/14)
- Sprint 2 (01/15 - 01/28)
- Sprint 3 (01/29 - 02/11)
활용:
Issue를 현재 Sprint에 할당
→ Sprint별로 그룹화
→ Burndown 차트 생성
실전 예시: 완벽한 필드 조합
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
프로젝트: E-commerce Redesign
커스텀 필드:
1. Priority (Single select)
- Critical, High, Medium, Low
2. Size (Single select)
- XS (1일), S (2-3일), M (1주), L (2주), XL (1달+)
3. Sprint (Iteration)
- 2주 단위
4. Story Points (Number)
- 1, 2, 3, 5, 8, 13
5. Due Date (Date)
- 마감일
6. Team (Single select)
- Frontend, Backend, Design, QA
활용:
┌─────────────────────────────────────────┐
│ #123: 결제 시스템 구현 │
├─────────────────────────────────────────┤
│ Status: In Progress │
│ Priority: 🔴 Critical │
│ Size: L (2주) │
│ Sprint: Sprint 3 │
│ Story Points: 13 │
│ Due Date: 2024-02-15 │
│ Team: Backend │
│ Assignees: @john, @jane │
└─────────────────────────────────────────┘
2. 다양한 뷰 활용
Board View (칸반 보드)
언제 사용?
- 작업 흐름 시각화
- 진행 상태 한눈에 파악
- 팀 스탠드업 미팅
설정:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Group by: Status
Columns:
┌──────┬─────────────┬─────────┬─────────┐
│ Todo │ In Progress │ Review │ Done │
├──────┼─────────────┼─────────┼─────────┤
│ #101 │ #103 │ #105 │ #107 │
│ #102 │ #104 │ #106 │ #108 │
│ │ │ │ #109 │
└──────┴─────────────┴─────────┴─────────┘
카드 표시:
- Title (항상)
- Assignees (옵션)
- Priority (옵션)
- Labels (옵션)
Group by 옵션:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Status별:
Todo → In Progress → Done
Assignee별:
@john @jane @bob Unassigned
#101 #103 #105 #107
#102 #104 #106
Priority별:
Critical High Medium Low
#101 #103 #105 #107
#102 #104 #106
Sprint별:
Sprint 1 Sprint 2 Sprint 3 Backlog
#101 #103 #105 #107
#102 #104 #106
Table View (스프레드시트)
언제 사용?
- 데이터 중심 관리
- 대량 편집
- 필터링과 정렬
구성:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
┌────────┬──────────────┬──────────┬──────────┬────────┬───────┐
│ Title │ Status │ Assignee │ Priority │ Size │ Sprint│
├────────┼──────────────┼──────────┼──────────┼────────┼───────┤
│ #123 │ In Progress │ @john │ Critical │ L │ Spr 1 │
│ #124 │ Todo │ @jane │ High │ M │ Spr 1 │
│ #125 │ Done │ @bob │ Medium │ S │ Spr 1 │
│ #126 │ Review │ @alice │ High │ L │ Spr 2 │
└────────┴──────────────┴──────────┴──────────┴────────┴───────┘
기능:
- 셀 직접 편집 (인라인 편집)
- 다중 정렬 (Priority → Size)
- 고급 필터 (Priority:Critical AND Size:L)
- CSV 내보내기
컬럼 커스터마이징:
1
2
3
4
5
6
7
8
9
10
11
12
표시할 컬럼 선택:
☑ Title
☑ Status
☑ Assignees
☑ Priority
☑ Story Points
☐ Labels (숨김)
☐ Milestone (숨김)
☐ Repository (숨김)
컬럼 순서:
드래그로 재배치 가능
Roadmap View (타임라인)
언제 사용?
- 장기 계획
- 마일스톤 관리
- 팀 간 조율
구성:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2024 Q1 Q2 Q3 Q4
│ │ │ │
├─ v1.0 ────────┤ │ │
│ #101-#110 │ │ │
│ ├─ v1.5 ─────┤ │
│ │ #111-#120 │ │
│ │ ├─ v2.0 ─────┤
│ │ │ #121-#130 │
각 항목:
┌─────────────────────────────┐
│ v1.0 Release │
│ ████████████░░░░░░░░ 65% │
│ Start: 2024-01-01 │
│ End: 2024-03-31 │
│ Items: 10 (6 done, 4 open) │
└─────────────────────────────┘
설정:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
X축: 날짜 (자동)
Y축: 그룹화
- No grouping (기본)
- Status
- Assignee
- Milestone
필수 필드:
- Start date
- End date (또는 Duration)
옵션:
- Zoom: 주/월/분기/년
- Markers: 중요 날짜 표시
- Dependencies: 의존성 표시 (곧 지원 예정)
실전 예시: 뷰별 활용
아침 스탠드업: Board View
1
2
3
4
5
6
7
8
9
10
11
12
Group by: Assignee
@john @jane @bob
┌──────┐ ┌──────┐ ┌──────┐
│ #101 │ │ #103 │ │ #105 │
│ #102 │ │ #104 │ │ │
└──────┘ └──────┘ └──────┘
각자 진행 상황 공유:
- 어제 한 일 (Done으로 이동)
- 오늘 할 일 (In Progress)
- 블로커 (Blocked 라벨)
Sprint 계획: Table View
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Filter: Sprint = "Sprint 3"
Sort by: Priority (High → Low), Story Points
┌─────┬──────────┬────────┬───────┐
│ # │ Priority │ Points │ Team │
├─────┼──────────┼────────┼───────┤
│ 123 │ Critical │ 13 │ Back │
│ 124 │ High │ 8 │ Front │
│ 125 │ High │ 5 │ Front │
│ 126 │ Medium │ 3 │ Back │
└─────┴──────────┴────────┴───────┘
Total Points: 29
Team Capacity: 30
→ Sprint 계획 완료!
분기 계획: Roadmap View
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Zoom: Quarter
Group by: Team
Frontend Team:
├─ Homepage Redesign ──────┤
├─ Mobile App ─────────────────┤
Backend Team:
├─ API v2 ──────────┤
├─ Database Migration ─────────┤
DevOps Team:
├─ K8s Migration ──────────────────┤
→ 팀 간 일정 조율 및 리소스 배분
3. 필터링과 정렬
고급 필터
필터 생성:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Filters → Add filter
예시 1: 긴급 작업
is:open
priority:"Critical"
assignee:@me
예시 2: 리뷰 대기 중인 작업
is:open
status:"Review"
-assignee:@me
예시 3: 이번 Sprint 백로그
sprint:"Sprint 3"
status:"Todo"
no:assignee
다중 정렬
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Primary sort: Priority (High → Low)
Secondary sort: Story Points (High → Low)
Tertiary sort: Updated (Recent → Old)
결과:
┌─────┬──────────┬────────┬────────────┐
│ # │ Priority │ Points │ Updated │
├─────┼──────────┼────────┼────────────┤
│ 123 │ Critical │ 13 │ 1 hour ago │
│ 124 │ Critical │ 8 │ 2 hours ago│
│ 125 │ High │ 13 │ 1 day ago │
│ 126 │ High │ 8 │ 2 days ago │
│ 127 │ Medium │ 5 │ 3 days ago │
└─────┴──────────┴────────┴────────────┘
Saved Views (저장된 뷰)
자주 사용하는 뷰 저장:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
뷰 1: My Work (내 작업)
Type: Board
Filter: assignee:@me
Group by: Status
뷰 2: Sprint Planning (스프린트 계획)
Type: Table
Filter: sprint:"Current"
Sort: Priority, Points
Columns: Title, Priority, Points, Assignee, Size
뷰 3: Roadmap 2024 (로드맵)
Type: Roadmap
Filter: created:>2024-01-01
Group by: Team
Zoom: Quarter
뷰 4: Bugs (버그만)
Type: Board
Filter: label:bug is:open
Group by: Priority
4. Insights와 리포트
Insights 개요
목적: 프로젝트 진행 상황을 시각적으로 분석
1
2
3
4
5
6
7
Project → Insights 탭
차트 종류:
1. Burnup (번업)
2. Burndown (번다운)
3. Velocity (속도)
4. Cumulative Flow (누적 흐름)
Burndown Chart (번다운 차트)
Sprint 진행률 추적:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
세로축: 남은 작업 (Story Points)
가로축: 시간 (Sprint 기간)
│
30 │●
│ ●
20 │ ●●
│ ●●
10 │ ●●
│ ●●●
0 │___________●●
Day1 Day7 Day14
이상적 선(Ideal Line): 균등하게 감소
실제 선(Actual Line): 실제 작업 완료
분석:
- 실제 > 이상 → 진행 느림 (빨강)
- 실제 < 이상 → 진행 빠름 (초록)
- 평평한 구간 → 블로커 발생
Velocity Chart (속도 차트)
Sprint별 생산성:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
세로축: 완료한 Story Points
가로축: Sprint
│
30 │ ████
│ ████████
20 │ ████████ ████
│ ████████ ████ ████
10 │ ████████ ████ ████
│ ████████ ████ ████
0 │──────────────────────
Sprint1 Spr2 Spr3
분석:
Sprint 1: 25 points (팀 적응 중)
Sprint 2: 30 points (안정화)
Sprint 3: 30 points (일정한 속도)
평균 Velocity: 28.3 points/sprint
→ 다음 Sprint 계획 시 참고
Cumulative Flow Diagram
작업 흐름 분석:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
세로축: 항목 수
가로축: 시간
│
40 │ ╱╱╱╱╱ Done
│ ╱╱╱╱╱╱╱
30 │ ╱╱╱╱╱╱╱╱╱ Review
│ ╱╱╱╱╱╱╱╱╱╱╱
20 │ ╱╱╱╱╱╱╱╱╱╱╱╱╱ In Progress
│╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱
10 │╱╱╱╱╱╱╱╱╱╱╱╱╱╱╱ Todo
│───────────────────
Week1 Week2 Week3
색상별 영역:
- 초록 (Done): 완료된 작업
- 파랑 (Review): 리뷰 중
- 노랑 (In Progress): 진행 중
- 회색 (Todo): 대기 중
분석:
- In Progress 너비 → WIP 제한 확인
- Review 구간 늘어남 → 리뷰 병목
- Done 기울기 → 완료 속도
Custom Charts
커스텀 차트 만들기:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
예시 1: Priority 분포
Type: Pie Chart
Field: Priority
Filter: is:open
결과:
Critical: 15% (3개)
High: 35% (7개)
Medium: 40% (8개)
Low: 10% (2개)
예시 2: Team별 작업량
Type: Bar Chart
Field: Team
Value: Story Points
결과:
Frontend: ████████████ 30 pts
Backend: ████████████████ 40 pts
DevOps: ████████ 20 pts
💡 초보자 팁 Insights는 처음엔 복잡해 보일 수 있습니다. 가장 유용한 것은 Burndown 차트입니다! Sprint가 끝날 때마다 Burndown을 확인하여 팀이 계획대로 진행했는지 체크하세요. Story Points가 없어도 괜찮습니다. Issue 개수로도 충분히 유용한 차트를 만들 수 있습니다.
5. 고급 자동화
워크플로우 자동화
자동화 규칙 추가:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Project Settings → Workflows
규칙 1: Issue 생성 시 Todo에 추가
Trigger: Item added to project
Condition: type:issue
Action: Set Status to "Todo"
규칙 2: PR 생성 시 In Progress로
Trigger: Item added to project
Condition: type:pull_request
Action: Set Status to "In Progress"
규칙 3: PR 머지 시 Done으로
Trigger: Pull request merged
Action: Set Status to "Done"
규칙 4: Issue 닫힘 시 Archived로
Trigger: Item closed
Action: Set Status to "Archived"
고급 워크플로우 예시
Sprint 자동화:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
규칙 1: 새 Issue는 Backlog에
Trigger: Item added
Condition: no:sprint
Action: Set Status to "Backlog"
규칙 2: Sprint 할당 시 Todo로
Trigger: Sprint field updated
Condition: sprint:is_set
Action: Set Status to "Todo"
규칙 3: 담당자 할당 시 Ready로
Trigger: Assignee added
Condition: status:"Todo"
Action: Set Status to "Ready"
규칙 4: 작업 시작 시 Sprint에 추가
Trigger: Status changed to "In Progress"
Condition: no:sprint
Action: Set Sprint to "Current Sprint"
6. 실전 워크플로우
애자일 스크럼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
프로젝트 설정:
Views:
- Product Backlog (Table)
- Sprint Board (Board)
- Sprint Planning (Table)
- Roadmap (Roadmap)
Fields:
- Story Points
- Sprint (Iteration: 2주)
- Priority
- Size
워크플로우:
1. Product Owner가 Backlog 정리
2. Sprint Planning 회의
- Team Capacity 계산
- Story Points 할당
- Sprint 항목 선택
3. Daily Standup
- Board View로 진행 상황 공유
4. Sprint Review
- Velocity 차트 확인
5. Sprint Retrospective
- Done 항목 Archive
- 다음 Sprint 준비
칸반 방식
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
프로젝트 설정:
Views:
- Main Board (Board)
Fields:
- Priority
- Size
- WIP Limit (각 컬럼별)
워크플로우:
Backlog → Todo → In Progress → Review → Done
(WIP: 5)
규칙:
1. WIP 제한 준수 (In Progress 최대 5개)
2. Pull System (Done 이동 후 새 작업 시작)
3. 블로커 즉시 해결
4. 주간 회의로 우선순위 조정
직접 해보기 (30-40분)
실습을 통해 배운 내용을 체화해봅시다!
📝 실습 1: 커스텀 필드 추가하기 (10분)
1
2
3
4
5
- [ ] 1. Day 74에서 만든 프로젝트 열기
- [ ] 2. Priority 필드 추가 (Single select: Critical, High, Medium, Low)
- [ ] 3. Story Points 필드 추가 (Number: 1-13)
- [ ] 4. Due Date 필드 추가 (Date)
- [ ] 5. 기존 Issue들에 필드 값 설정하기
📝 실습 2: 다양한 뷰 만들기 (10분)
1
2
3
4
5
- [ ] 1. "My Work" 뷰 생성 (Board, assignee:@me)
- [ ] 2. "Sprint Planning" 뷰 생성 (Table, 모든 필드 표시)
- [ ] 3. Priority별로 그룹화해보기
- [ ] 4. Story Points로 정렬해보기
- [ ] 5. 각 뷰를 저장하고 전환해보기
📝 실습 3: 필터링 마스터하기 (5분)
1
2
3
4
- [ ] 1. "label:bug priority:Critical" 필터 적용
- [ ] 2. "assignee:@me is:open" 필터 적용
- [ ] 3. "no:assignee status:Todo" 필터 적용
- [ ] 4. 자주 쓰는 필터를 Saved View로 저장
📝 실습 4: Insights 확인하기 (5분)
1
2
3
4
- [ ] 1. Insights 탭 열기
- [ ] 2. Burndown 차트 생성
- [ ] 3. Story Points 기반으로 설정
- [ ] 4. 차트 해석해보기
📝 실습 5: 자동화 설정하기 (10분)
1
2
3
4
- [ ] 1. Workflows 설정 열기
- [ ] 2. "Issue 생성 시 Todo로" 자동화 추가
- [ ] 3. "PR 머지 시 Done으로" 자동화 추가
- [ ] 4. 테스트 Issue 만들어서 자동화 확인
실습 완료 후: 이제 프로페셔널한 프로젝트 관리 도구를 갖추게 되었습니다!
😰 어려우시다면
이 내용이 어렵게 느껴진다면:
- 커스텀 필드가 너무 많은 경우
- 처음엔 Priority 하나만 추가하세요
- 필요할 때 하나씩 추가하는 것이 좋습니다
- 모든 필드를 다 사용할 필요는 없습니다
- 어떤 뷰를 사용할지 모르겠는 경우
- 일상 업무: Board View
- 데이터 분석/일괄 수정: Table View
- 장기 계획: Roadmap View
- 상황에 맞게 선택하세요
- Insights 차트가 어려운 경우
- Burndown 하나만 사용해도 충분합니다
- Story Points 없이 Issue 개수로 시작하세요
- 팀이 익숙해지면 다른 차트 시도
- Story Points를 어떻게 정할지 모르겠는 경우
- 피보나치 수열 사용 (1, 2, 3, 5, 8, 13)
- 상대적 크기만 중요합니다 (절대값 X)
- Planning Poker로 팀과 함께 결정
- 처음엔 대충 정해도 됩니다 (조정 가능)
- 자동화가 복잡한 경우
- 2-3개 간단한 자동화만 시작하세요
- “PR 머지 → Done” 하나면 충분합니다
- 수동 관리도 나쁘지 않습니다
- 복습이 필요하다면
- Day 74: Projects 기본 복습
- 애자일 용어 검색 (Story Points, Sprint 등)
- GitHub Projects 공식 문서의 예시 참고
꼭 기억하세요: 고급 기능들은 팀이 성장하면서 필요할 때 추가하면 됩니다. 처음부터 완벽하게 설정하려고 하지 마세요!
정리
완료 체크:
- 커스텀 필드를 생성하고 활용할 수 있다
- Board, Table, Roadmap 뷰를 목적에 맞게 사용할 수 있다
- 필터와 정렬로 원하는 정보를 찾을 수 있다
- Insights 차트로 진행 상황을 분석할 수 있다
- 자동화 워크플로우를 설정할 수 있다
- 실제 프로젝트에 적용할 수 있다
- 직접 실습을 완료했다
핵심 요약:
- 커스텀 필드: Single select, Number, Date, Iteration으로 정보 확장
- 다양한 뷰: Board(시각화), Table(데이터), Roadmap(계획)
- 필터링: 고급 쿼리로 필요한 항목만 표시
- Insights: Burndown, Velocity, Cumulative Flow로 분석
- 자동화: 반복 작업 자동화로 효율 극대화
실전 팁:
- ✅ Priority와 Story Points는 필수 필드
- ✅ Sprint마다 Velocity 측정하여 계획 정확도 향상
- ✅ Table View에서 일괄 편집으로 시간 절약
- ✅ Roadmap View로 팀 간 일정 조율
- ✅ 자동화는 단순한 것부터 시작
- ✅ 주간 Insights 리뷰로 병목 지점 파악
- ✅ Saved Views로 자주 쓰는 뷰 저장
- ✅ WIP 제한으로 집중도 향상 (In Progress 5개 이내)
다음: Day 76 - GitHub Wiki →
