포스트

[이제와서 시작하는 GitHub 마스터하기 - 실전편 #2] Projects로 프로젝트 관리: 칸반 보드 활용하기

[이제와서 시작하는 GitHub 마스터하기 - 실전편 #2] Projects로 프로젝트 관리: 칸반 보드 활용하기

들어가며

“이제와서 시작하는 GitHub 마스터하기” 시리즈의 일곱 번째 시간입니다. 이번에는 GitHub Projects를 활용하여 프로젝트를 시각적으로 관리하는 방법을 알아보겠습니다. Projects는 이슈와 PR을 칸반 보드, 테이블, 로드맵 등 다양한 뷰로 관리할 수 있는 강력한 도구입니다.

1. GitHub Projects란?

GitHub Projects는 프로젝트 관리를 위한 유연하고 맞춤형 도구입니다. 2022년에 출시된 새로운 Projects는 다음과 같은 특징을 가집니다:

  • 다양한 뷰: 테이블, 보드, 로드맵 뷰 지원
  • 커스텀 필드: 프로젝트에 맞는 메타데이터 추가
  • 자동화: 워크플로우 자동화 지원
  • 인사이트: 차트와 분석 기능
  • 통합: Issues, PR과 완벽한 통합

2. Project 생성하기 (2025년 최신)

새 프로젝트 만들기

  1. GitHub 프로필 → Projects 탭
  2. “New project” 클릭
  3. 템플릿 선택 또는 빈 프로젝트 시작

프로젝트 템플릿

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 기반 프로젝트 자동화 프로세스

  1. 🆕 Issue 생성: 새로운 이슈가 만들어짐
  2. 🤖 AI 분석:
    • 자동 라벨링
    • 우선순위 제안
    • 스토리 포인트 추정
  3. 📋 프로젝트 자동 할당: AI가 분석한 정보 기반으로 할당
  4. 👥 담당자 추천: 적합한 팀원 제안
📊 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 기능

데이터 분석 프로세스:

  1. 📈 데이터 수집: 프로젝트 메트릭 수집
  2. 🤖 AI 분석: 패턴 및 트렌드 분석
  3. 🔮 예측 모델 생성:
    • 번다운 예측
    • 리소스 최적화
    • 병목 지점 발견
  4. 📋 실시간 대시보드: 모든 인사이트 시각화
📊 분석 프로세스 다이어그램 (클릭하여 펼치기)
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 마스터하기 시리즈

🌱 기초편 (입문자)

  1. GitHub 시작하기
  2. Repository 기초
  3. Git 기본 명령어
  4. Branch와 Merge
  5. Fork와 Pull Request

💼 실전편 (중급자)

  1. Issues 활용법
  2. [Projects로 프로젝트 관리] (현재 글)(/posts/github-practical-02-projects-kanban/)
  3. Code Review 잘하기
  4. GitHub Discussions
  5. Team 협업 설정
  6. GitHub Pages

🚀 고급편 (전문가)

  1. GitHub Actions 입문
  2. Actions 고급 활용
  3. Webhooks와 API
  4. GitHub Apps 개발
  5. 보안 기능
  6. GitHub Packages
  7. Codespaces
  8. GitHub CLI
  9. 통계와 인사이트

🏆 심화편 (전문가+)

  1. Git Submodules & Subtree
  2. Git 내부 동작 원리
  3. 고급 브랜치 전략과 릴리스 관리
  4. GitHub GraphQL API
  5. GitHub Copilot 완벽 활용

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.