Contents
- Intro
- Git-flow 전략
- Git Commit Convention
- Jira를 활용한 이슈 관리
- 마무리
Intro
팀 프로젝트동안 유용하게 사용했던 Git 협업 방식과 Jira를 활용한 이슈 관리 방법을 기록해본다.
Git은 버전 관리 시스템으로 널리 사용되지만, 더욱 효과적인 협업을 위해서는 일관된 전략과 규칙이 필요하다.
또한, Jira와 같은 이슈 트래킹 도구를 함께 사용하면 프로젝트 관리의 효율성을 크게 높일 수 있다.
이 글에서는 우리 팀이 채택했던 Git-flow 전략, 커밋 컨벤션, 그리고 Jira 활용 방법에 대해 설명하고자 한다.
1. Git-flow 전략
Git-flow는 브랜치 관리 전략이다. 이 전략은 프로젝트의 릴리즈를 체계적으로 관리할 수 있게 해준다.
- main : 최종 배포가 진행되는 branch
- develop : 다음 출시 버전을 준비하는 branch
- feature : develop를 위한 기능 개발 이루어지는 branch (fix가 이루어져도 됨)
- release: 이번 출시 버전을 준비하는 브랜치
- bugfix : develop 브랜치에서 기능 구현 후 버그 수정을 진행할 때
프로젝트 규모에 맞게 release 브랜치는 생략하고 develop을 default로 main으로 최종 머지하는 방식을 채택했다.
우리 팀은 이 기본 구조를 따르되, 프로젝트의 특성에 맞게 약간의 변형을 주었다:
1. feature 브랜치 명명 규칙: feature/[Jira-ticket-id]-간단한-설명
예: feature/PROJ-123-user-login
2. bugfix 브랜치 명명 규칙: bugfix/[Jira-ticket-id]-간단한-설명
예: bugfix/PROJ-456-fix-login-error
3. 코드 리뷰 프로세스:
feature 또는 bugfix 브랜치에서 작업 완료 후, develop 브랜치로 Pull Request(Merge Request)를 생성하고, 프론트 혹은 백 인원 전부(적어도 최소 1명 이상)의 팀원 리뷰를 받은 후 머지하도록 했다.
2. Git Commit Convention
일관된 커밋 메시지는 프로젝트 히스토리를 이해하기 쉽게 만들어준다.
우리 팀은 다음과 같은 커밋 컨벤션을 사용했다.
git commit -m "<ticket-id> <type>: <title> body
type
- feat: : 새로운 기능 추가 사항
- fix: : 버그 수정
- refactor: : 리팩토링
- design: : UI 디자인 변경 사항
- comment: : 필요한 주석 추가 및 변경
- style: : 비즈니스 로직에 영향을 주지 않는 코드 스타일 추가
- docs: : 문서 관련 변경 사항
- test: : 테스트 코드 관련 사항
- chore: : 기타 변경사항
- init: : 초기 생성 또는 마이그레이션
- rename: : 파일/폴더 이름 수정 또는 위치 변경
- remove: : 파일을 삭제하는 작업만 수행한 경우
title
- 최대한 한글로 작성한다.
- 만약 첫 문자가 영어라면, 대문자로 시작한다.
body(optional)
- done과 need 작성
- 커밋에 대한 업무 내용과 추후 업무를 기술한다. (대상과 이유 중심)
- done: 회원가입 form UI 완성 - done: API 연동 - need: 회원가입 form 유효성 검사
이러한 컨벤션을 통해 우리는 커밋 히스토리를 더 쉽게 관리하고 이해할 수 있었다.
특히, Jira 티켓 ID를 커밋 메시지에 포함시킴으로써 코드 변경사항과 이슈를 쉽게 연결할 수 있었다.
3. Jira를 활용한 이슈 관리
Jira는 프로젝트 및 이슈 트래킹을 위한 강력한 도구로, Git과 연동하여 사용하면 더욱 효과적인 협업이 가능하다.
우리 팀은 다음과 같은 방식으로 Jira를 활용했다.
스프린트 계획: 1주 단위의 스프린트를 설정하고, 각 스프린트 시작 전 팀 회의를 통해 해당 기간 동안 수행할 작업을 Jira에 등록했다.
이슈 유형 구분:
- 에픽: 큰 단위의 기능 묶음
- 스토리: 사용자 관점의 기능 요구사항
- 테스크: 개발 작업 단위
- 하위 작업: 세분화된 테스크
이슈 상태 관리:
- 할 일: 해야 할 작업
- 진행중: 진행 중인 작업
- 완료: 완료된 작업
Git 연동:
- 각 브랜치 이름에 Jira 티켓 ID를 포함 (예: feature/PROJ-123-user-login)
- 커밋 메시지에 Jira 티켓 ID를 포함 (예: PROJ-123 feat: 사용자 로그인 기능 구현)
이러한 Jira 활용 방식은 팀원들 간의 작업 현황 공유를 용이하게 했고, 프로젝트의 진행 상황을 한눈에 파악할 수 있게 해주었다.
마무리
Git-flow 전략, 일관된 커밋 컨벤션, 그리고 Jira를 활용한 이슈 관리를 통해 우리 팀은 더욱 효율적으로 협업할 수 있었다.
이는 코드 리뷰를 용이하게 만들었고, 버그 추적과 롤백을 더 쉽게 만들어주었다.
물론 이러한 방식이 모든 프로젝트에 적합한 것은 아니다.
팀의 규모, 프로젝트의 복잡성, 릴리스 주기 등에 따라 적절히 조정할 필요가 있다.
중요한 것은 팀원 모두가 동의하고 일관되게 따를 수 있는 전략을 선택하는 것이다.
앞으로의 프로젝트에서도 이러한 경험을 바탕으로 더 나은 협업 방식을 모색해 나갈 것이다.