프로젝트 관리
GitFlow와 이를 기반으로하는 방법론들과 TBD에 대해 알아보자.
GitFlow 및 GitFlow 기반의 방법론과 TBD는 지향하는 바가 다르다.
상이한 관점과 모든 방법론에서 동일하게 이루어져야할 개발 방향에 대해 알아보자.
Git Flow
- Main
- 배포 대상
- Develop
- 개발 브랜치
- Feature
- 단위 개발, 단기 개발
- Release
- main 병합 이전, 테스팅과 수정 진행
- Hotfix
- 긴급한 버그 수정
- main, develop에 병합한다.
- 안정적 / 역할 구분 명확 / 복잡한 구조 / 관리가 어려움
GitLab Flow
- Main
- 배포 대상
- 항상 최신 안정 버전일 것
- Develop
- 개발 브랜치
- Feature
- 단기 기능 개발용
- github gitflow 그 사이
GitHub Flow
- Master
- 배포 대상
- 항상 최신 안정 버전일 것
- Feature
- 기능 개발
Trunk-based development (TBD)
TBD는 GitFlow 기반 방법론과는 목적이 달리 한다.
Main 브랜치에 대한 관점이 상이하다.
- Trunk(Main)
- flag / toggle
- branch 사용 지양
- 목적
- 병합 충돌 최소화
- 빠른 피드백 (CI/CD)
- 코드베이스 일관성
- 주의사항
- 작은 단위의 커밋을 지향, 자주 병합할 것
GitHub Flow / TBD 차이점
- GitHub Flow는 main 브랜치가 항상 배포 가능한 상태여야하나, TBD는 미완성 기능 또한 병합한다.
즉, GitFlow와 이를 기반으로하는 방법론들은 Main의 안정성을 목표로 한다. 반면 TBD는 빠른 피드백 및 CI/CD를 목적으로 한다.
공통적 개발 방법
Commit
- 커밋은 커뮤니케이션과 같다. 즉, 짧게 자주 이루어져야할 것
분할정복
- Divide and Conquer,
- 모든 개발은 분해되어야 하고 Agile하게 이루어저야 할 것