들어가며
“이제와서 시작하는 GitHub 마스터하기” 시리즈의 일곱 번째 시간입니다. 이번에는 GitHub Projects를 활용하여 프로젝트를 시각적으로 관리하는 방법을 알아보겠습니다. Projects는 이슈와 PR을 칸반 보드, 테이블, 로드맵 등 다양한 뷰로 관리할 수 있는 강력한 도구입니다.
1. GitHub Projects란?
GitHub Projects는 프로젝트 관리를 위한 유연하고 맞춤형 도구입니다. 2022년에 출시된 새로운 Projects는 다음과 같은 특징을 가집니다:
- 다양한 뷰: 테이블, 보드, 로드맵 뷰 지원
- 커스텀 필드: 프로젝트에 맞는 메타데이터 추가
- 자동화: 워크플로우 자동화 지원
- 인사이트: 차트와 분석 기능
- 통합: Issues, PR과 완벽한 통합
2. Project 생성하기 (2025년 최신)
새 프로젝트 만들기
- GitHub 프로필 → Projects 탭
- “New project” 클릭
- 템플릿 선택 또는 빈 프로젝트 시작
프로젝트 템플릿
1
2
3
4
5
6
7
| 기본 제공 템플릿:
- Team backlog: 스프린트 관리
- Feature planning: 기능 개발 계획
- Bug tracker: 버그 추적
- Roadmap: 로드맵 관리
- Kanban: 기본 칸반 보드
- Team retrospective: 회고 관리 (2025년 최신)
|
프로젝트 설정
1
2
3
4
5
6
| 프로젝트 이름: Product Development
설명: 제품 개발 진행 상황 관리
접근 권한:
- Private: 팀 멤버만
- Public: 모든 사람이 볼 수 있음
README: 프로젝트 가이드라인 작성
|
3. Views (뷰) 활용하기
뷰 타입별 특징 (2025년 최신)
| 뷰 타입 | 용도 | 주요 기능 | 새로운 기능 |
| Table | 데이터 관리 | 정렬, 필터, 그룹화 | 열 고정, 일괄 편집 |
| Board | 워크플로우 시각화 | 드래그 앤 드롭 | 스윔레인, WIP 제한 |
| Roadmap | 일정 관리 | 타임라인 뷰 | 의존성 표시 |
| Timeline | 간트 차트 | 기간 설정 | 마일스톤 연결 |
Table View (테이블 뷰)
스프레드시트 형태로 데이터를 관리:
1
2
3
4
5
6
7
8
| 열 구성 예시:
- Title: 이슈/PR 제목
- Status: Todo, In Progress, Done
- Assignees: 담당자
- Priority: High, Medium, Low
- Sprint: Sprint 1, Sprint 2
- Estimate: Story Points
- Labels: 라벨
|
Board View (보드 뷰)
칸반 스타일의 시각적 관리:
1
2
3
4
5
6
7
| ┌─────────────┬─────────────┬─────────────┬─────────────┐
│ Backlog │ Todo │ In Progress │ Done │
├─────────────┼─────────────┼─────────────┼─────────────┤
│ ○ Issue #1 │ ○ Issue #3 │ ○ Issue #5 │ ✓ Issue #7 │
│ ○ Issue #2 │ ○ Issue #4 │ ○ PR #6 │ ✓ Issue #8 │
│ │ │ │ ✓ PR #9 │
└─────────────┴─────────────┴─────────────┴─────────────┘
|
Roadmap View (로드맵 뷰)
타임라인 기반 계획 관리:
1
2
3
4
5
6
| 2025 Q1 ─────────────────────────────────────────────────►
Jan Feb Mar
│ │ │
Feature A ████████████░░░░░░░░░░░░░
Feature B ██████████████░░░░░
Feature C ████████████████
|
4. Custom Fields (커스텀 필드)
2025년 신규 필드 타입
1
2
3
4
5
6
7
8
9
10
11
| Checkbox: 체크박스 (2025년 최신)
type: checkbox
description: 작업 완료 여부 체크
Formula: 계산 필드 (2025년 최신)
type: formula
expression: "story_points * complexity"
User: GitHub 사용자 선택 (2025년 최신)
type: user
multiple: true
|
필드 타입
1
2
3
4
5
| Text: 자유 텍스트 입력
Number: 숫자 값
Date: 날짜 선택
Single select: 드롭다운 선택
Iteration: 스프린트/반복 주기
|
커스텀 필드 예시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| # 개발 프로젝트용 필드
Priority:
type: single_select
options: [🔴 Critical, 🟠 High, 🟡 Medium, 🟢 Low]
Story Points:
type: number
description: 작업 복잡도 (1-13)
Sprint:
type: iteration
duration: 2 weeks
Component:
type: single_select
options: [Frontend, Backend, Database, DevOps]
Review Status:
type: single_select
options: [Pending, In Review, Approved, Changes Requested]
|
5. 워크플로우 자동화 (2025년 강화)
GraphQL API 활용
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
35
36
37
| // 2025년 최신 GraphQL API 사용
const { graphql } = require('@octokit/graphql');
const updateProjectItem = async (itemId, fieldId, value) => {
const mutation = `
mutation($projectId: ID!, $itemId: ID!, $fieldId: ID!, $value: ProjectV2FieldValue!) {
updateProjectV2ItemFieldValue(
input: {
projectId: $projectId
itemId: $itemId
fieldId: $fieldId
value: $value
}
) {
projectV2Item {
id
content {
... on Issue {
title
number
}
}
}
}
}
`;
return await graphql(mutation, {
projectId: process.env.PROJECT_ID,
itemId,
fieldId,
value,
headers: {
authorization: `token ${process.env.GITHUB_TOKEN}`
}
});
};
|
기본 자동화
Projects 설정에서 활성화:
1
2
3
4
5
| 자동화 규칙:
- Item added to project → Set status to "Todo"
- Item closed → Set status to "Done"
- Pull request merged → Set status to "Done"
- Item reopened → Set status to "In Progress"
|
GitHub Actions와 연동
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
35
36
37
38
39
| # .github/workflows/project-automation.yml
name: Project Card Automation
on:
issues:
types: [opened, closed, assigned]
pull_request:
types: [opened, closed, review_requested]
jobs:
update-project:
runs-on: ubuntu-latest
steps:
- name: Update project card
uses: actions/github-script@v6
with:
script: |
const projectNumber = 1;
const fieldName = 'Status';
if (context.payload.action === 'opened') {
// 새 이슈/PR을 Todo로 설정
await github.graphql(`
mutation {
updateProjectV2ItemFieldValue(
input: {
projectId: "PROJECT_ID"
itemId: "ITEM_ID"
fieldId: "FIELD_ID"
value: { singleSelectOptionId: "TODO_OPTION_ID" }
}
) {
projectV2Item {
id
}
}
}
`);
}
|
6. 프로젝트 관리 전략
AI 기반 자동화 (2025년 최신)
🤖 AI 기반 프로젝트 자동화 프로세스
- 🆕 Issue 생성: 새로운 이슈가 만들어짐
- 🤖 AI 분석:
- 자동 라벨링
- 우선순위 제안
- 스토리 포인트 추정
- 📋 프로젝트 자동 할당: AI가 분석한 정보 기반으로 할당
- 👥 담당자 추천: 적합한 팀원 제안
📊 AI 자동화 흐름도 (클릭하여 펼치기)
graph TD
A[Issue 생성] --> B[AI 분석]
B --> C[자동 라벨링]
B --> D[우선순위 제안]
B --> E[스토리 포인트 추정]
C --> F[프로젝트 자동 할당]
D --> F
E --> F
F --> G[담당자 추천]
스프린트 기반 관리
1
2
3
4
5
6
7
8
9
10
11
12
| Sprint 1 (2025-01-15 ~ 2025-01-29):
Todo:
- [ ] 사용자 인증 API
- [ ] 로그인 UI
- [ ] 테스트 작성
In Progress:
- [ ] 데이터베이스 설계
Done:
- [x] 요구사항 분석
Velocity: 21 points
Burndown: ▓▓▓▓▓▓▓░░░░░░░
|
칸반 플로우
1
2
3
4
5
6
7
8
9
10
11
| WIP Limits:
Todo: ∞
In Progress: 3 per person
Review: 5 total
Done: Archive after sprint
Flow Rules:
- One assignee per card
- Move to Review when PR created
- Require approval before Done
- Daily standup review
|
7. 필터와 그룹화
고급 필터 문법 (2025년 최신)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| # AI 추천 작업
label:"ai-suggested" assignee:@me
# 멘션된 작업
mentions:@me -author:@me
# 리뷰 요청 받은 PR
is:pr review-requested:@me
# 특정 날짜 범위
created:2025-01-01..2025-01-31
# 복합 조건
(label:bug OR label:critical) AND milestone:"v2.0"
|
필터링 예시
1
2
3
4
5
6
7
8
9
10
11
| # 내가 담당한 진행 중인 작업
assignee:@me status:"In Progress"
# 이번 스프린트의 높은 우선순위
sprint:"Sprint 3" priority:"High"
# 리뷰 대기 중인 PR
is:pr status:"Review"
# 기한이 지난 작업
status:!"Done" due:<@today
|
그룹화 옵션
1
2
3
4
5
6
| Group by:
- Status: 진행 상태별 그룹
- Assignee: 담당자별 그룹
- Priority: 우선순위별 그룹
- Sprint: 스프린트별 그룹
- Repository: 저장소별 그룹
|
8. Insights와 분석 (2025년 강화)
새로운 차트 타입
📊 2025년 Insights 기능
데이터 분석 프로세스:
- 📈 데이터 수집: 프로젝트 메트릭 수집
- 🤖 AI 분석: 패턴 및 트렌드 분석
- 🔮 예측 모델 생성:
- 📋 실시간 대시보드: 모든 인사이트 시각화
📊 분석 프로세스 다이어그램 (클릭하여 펼치기)
graph LR
A[데이터 수집] --> B[AI 분석]
B --> C[예측 모델]
C --> D[번다운 예측]
C --> E[리소스 최적화]
C --> F[병목 지점 발견]
G[실시간 대시보드]
D --> G
E --> G
F --> G
예측 분석 기능
1
2
3
4
5
| 예측 메트릭:
- 예상 완료일: AI 기반 예측
- 리스크 스코어: 지연 가능성 평가
- 팀 부하 지수: 작업 분배 최적화
- 품질 예측: 버그 발생 가능성
|
번다운 차트
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| Story Points
40 │\
35 │ \
30 │ \____
25 │ \___
20 │ \
15 │ \___
10 │ \
5 │ \__
0 └─────────────────────►
Day 1 5 10 14
이상적 번다운 ----
실제 번다운 ────
|
벨로시티 차트
1
2
3
4
5
6
7
8
9
10
11
| Points Completed
30 │ ┌─┐
25 │ ┌─┐│ │ ┌─┐
20 │ │ ││ │┌─┐│ │
15 │ │ ││ ││ ││ │
10 │ │ ││ ││ ││ │
5 │ │ ││ ││ ││ │
0 └─┴─┴┴─┴┴─┴┴─┴─
S1 S2 S3 S4 S5
평균 벨로시티: 22 points
|
9. 팀 협업 시나리오
GitHub Copilot 통합 (2025년 최신)
1
2
3
4
5
6
7
8
9
10
11
| Copilot for Projects:
자동 생성:
- 작업 설명 개선
- 체크리스트 생성
- 관련 이슈 연결
- 시간 추정
스마트 제안:
- 유사 작업 찾기
- 해결 방법 제안
- 코드 스니펫 연결
|
시나리오 1: 스프린트 플래닝
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| ## Sprint Planning Meeting
1. **백로그 리뷰**
- Projects의 Backlog 컬럼 확인
- 우선순위 기준 정렬
2. **스토리 포인트 추정**
- 각 이슈에 Story Points 필드 설정
- Planning Poker 진행
3. **스프린트 할당**
- Sprint 필드를 현재 스프린트로 설정
- Todo 컬럼으로 이동
4. **담당자 지정**
- Assignee 설정
- 작업 부하 확인
5. **스프린트 시작**
- 스프린트 기간 설정
- 번다운 차트 초기화
|
시나리오 2: 일일 스탠드업
1
2
3
4
5
6
7
8
9
| Daily Standup View:
Filter: sprint:current
Group by: Assignee
Sort: Updated (newest first)
각 팀원별 확인사항:
- Yesterday: Done 컬럼의 작업
- Today: In Progress 컬럼의 작업
- Blockers: Blocked 라벨이 있는 작업
|
10. 프로젝트 템플릿 만들기
커스텀 템플릿 생성
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
35
36
37
38
| name: Product Development Template
description: 제품 개발을 위한 표준 템플릿
views:
- name: Sprint Board
type: board
group_by: Status
- name: Planning Table
type: table
fields: [Title, Status, Priority, Sprint, Points, Assignee]
- name: Roadmap
type: roadmap
date_field: Target Date
fields:
- name: Status
type: single_select
options: [Backlog, Todo, In Progress, Review, Done]
- name: Priority
type: single_select
options: [Critical, High, Medium, Low]
- name: Story Points
type: number
- name: Sprint
type: iteration
duration: 2 weeks
automation:
- when: item_added
set: status = "Backlog"
- when: item_closed
set: status = "Done"
|
템플릿 공유
1
2
3
4
5
6
7
8
9
| # 프로젝트 설정 내보내기
1. Project settings → Menu → Export
2. JSON 파일 다운로드
3. 팀과 공유
# 템플릿으로 새 프로젝트 생성
1. New project → Import
2. JSON 파일 업로드
3. 프로젝트 이름 설정
|
11. 모범 사례
2025년 권장 사항
| 영역 | 기존 방식 | 2025년 권장 방식 |
| 자동화 | 수동 워크플로우 | AI 기반 자동화 |
| 추정 | 팀 회의 | ML 모델 예측 + 검증 |
| 리뷰 | 정기 회의 | 실시간 대시보드 |
| 할당 | 수동 지정 | 스킬 기반 자동 매칭 |
프로젝트 구조화
1
2
3
4
5
6
7
8
9
10
11
12
13
| 프로젝트 계층:
Organization Projects:
- Company Roadmap (전체 로드맵)
- Product Development (제품 개발)
Team Projects:
- Frontend Team Board
- Backend Team Board
- DevOps Pipeline
Personal Projects:
- My Tasks
- Learning Goals
|
효과적인 운영 팁
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| 1. **명확한 정의**
- Done의 정의 문서화
- 각 상태의 의미 명확화
2. **정기적인 정리**
- 완료된 작업 아카이브
- 오래된 이슈 검토
3. **일관성 유지**
- 필드 사용 규칙 준수
- 네이밍 컨벤션 통일
4. **자동화 활용**
- 반복 작업 자동화
- 알림 설정
5. **지속적 개선**
- 회고를 통한 프로세스 개선
- 메트릭 기반 의사결정
|
마무리
GitHub Projects는 단순한 작업 관리를 넘어 팀의 전체적인 개발 프로세스를 시각화하고 최적화할 수 있는 강력한 도구입니다. 2025년 최신 업데이트로 AI 기반 자동화와 예측 분석이 추가되어 더욱 스마트한 프로젝트 관리가 가능해졌습니다.
핵심은:
- 팀에 맞는 워크플로우 설계
- 적절한 자동화 활용
- 지속적인 프로세스 개선
- 데이터 기반 의사결정
다음 편에서는 코드 리뷰 문화와 효과적인 PR 리뷰 방법에 대해 알아보겠습니다.
📚 GitHub 마스터하기 시리즈
🌱 기초편 (입문자)
- GitHub 시작하기
- Repository 기초
- Git 기본 명령어
- Branch와 Merge
- Fork와 Pull Request
💼 실전편 (중급자)
- Issues 활용법
- [Projects로 프로젝트 관리] (현재 글)(/posts/github-practical-02-projects-kanban/)
- Code Review 잘하기
- GitHub Discussions
- Team 협업 설정
- GitHub Pages
🚀 고급편 (전문가)
- GitHub Actions 입문
- Actions 고급 활용
- Webhooks와 API
- GitHub Apps 개발
- 보안 기능
- GitHub Packages
- Codespaces
- GitHub CLI
- 통계와 인사이트
🏆 심화편 (전문가+)
- Git Submodules & Subtree
- Git 내부 동작 원리
- 고급 브랜치 전략과 릴리스 관리
- GitHub GraphQL API
-