“우리 팀은 어떤 브랜치 전략을 써야 할까요?”
기술 면접에서 자주 나오는 질문이기도 하고, 팀이 새로 꾸려질 때마다 반드시 논의하는 주제입니다. 13년 동안 스타트업부터 대기업 SI까지 다양한 조직에서 일하면서 Git Flow, GitHub Flow, Trunk-based Development를 모두 써봤습니다. 각각 잘 맞는 환경이 있고, 억지로 적용하면 오히려 팀 속도를 죽입니다.
이 글에서는 세 전략을 실무 관점에서 비교하고, 상황별 선택 기준을 정리합니다.
Git Flow — 체계적인 릴리즈 관리 #
Vincent Driessen이 2010년에 제안한 모델입니다. 한국 개발팀에서 가장 오래, 가장 많이 쓰인 전략이기도 합니다.
브랜치 구조 #
Git Flow에는 두 개의 영구 브랜치와 세 가지 임시 브랜치가 있습니다.
영구 브랜치:
main(또는master): 항상 프로덕션 배포 상태develop: 다음 릴리즈를 위한 통합 브랜치
임시 브랜치:
feature/*: 새 기능 개발.develop에서 분기,develop으로 병합release/*: 출시 준비.develop에서 분기,main과develop으로 병합hotfix/*: 긴급 패치.main에서 분기,main과develop으로 병합
|
|
언제 Git Flow가 맞는가 #
Git Flow는 버전 릴리즈 사이클이 명확한 제품에 적합합니다.
- 앱스토어에 배포하는 모바일 앱 (v1.0, v1.1, v2.0)
- 분기별/월별 릴리즈를 하는 B2B SaaS
- 동시에 여러 버전을 유지해야 하는 라이브러리/SDK
- 엄격한 QA 프로세스가 있는 금융, 의료 소프트웨어
Git Flow의 단점 #
브랜치가 많아서 복잡합니다. 특히 hotfix를 main과 develop 양쪽에 모두 반영해야 한다는 게 실수가 잦은 포인트입니다. CI/CD가 없거나 약한 팀에서는 브랜치 관리 자체가 부담이 됩니다.
당근마켓, 화해 등 국내 유명 스타트업들이 Git Flow에서 다른 전략으로 전환한 이유도 이 복잡도 때문입니다.
GitHub Flow — 단순하고 빠른 배포 #
GitHub이 자체적으로 사용하고 공개한 모델입니다. 규칙이 단 하나입니다: main은 항상 배포 가능한 상태여야 한다.
워크플로우 #
|
|
PR이 main에 병합되는 순간 자동으로 프로덕션에 배포됩니다. 그렇기 때문에 CI/CD 파이프라인이 탄탄해야 합니다.
GitHub Flow가 맞는 환경 #
- 하루에 여러 번 배포하는 팀 (웹 서비스, SaaS)
- 소수 정예 팀 (5명 이하)
- 다버전 유지가 필요 없는 서비스
- CI/CD가 이미 잘 갖춰진 팀
주의할 점 #
feature 브랜치에서 main으로 바로 가기 때문에, 미완성 기능이 main에 들어가면 문제가 됩니다. 이를 해결하는 기법이 Feature Flag입니다.
|
|
코드는 main에 있지만 플래그로 비활성화해두고, 준비가 되면 플래그만 켜는 방식입니다.
Trunk-based Development — 대규모 팀의 선택 #
Google, Facebook, Netflix 같은 빅테크가 사용하는 방식입니다. main(trunk) 브랜치 하나만 운영하고, 모든 개발자가 자주 (하루에 최소 1번) 직접 커밋하거나, 1~2일 내로 병합하는 짧은 feature 브랜치를 사용합니다.
핵심 원칙 #
- 작은 단위로 자주 커밋: 큰 PR 대신 작은 커밋을 매일
- 브랜치 수명 최소화: feature 브랜치는 이틀을 넘기지 않는다
- 강력한 CI: 모든 커밋에 자동 테스트 실행
- Feature Flag 적극 활용: 미완성 코드도 trunk에 병합 가능
|
|
Trunk-based가 맞는 환경 #
- 대규모 팀 (10명 이상 개발자)
- CI/CD 성숙도가 높은 조직
- 하루에 수십 번 배포하는 팀
- 강력한 자동화 테스트 커버리지가 있는 경우
가장 어려운 점 #
팀 규율이 필요합니다. “이 커밋이 trunk에 들어가도 안전한가?“를 항상 고민해야 합니다. 테스트 커버리지가 낮은 상태에서 Trunk-based를 도입하면 프로덕션 장애가 잦아집니다.
실무에서의 선택 기준 #
| 상황 | 추천 전략 |
|---|---|
| 모바일 앱, 버전 관리 필요 | Git Flow |
| 스타트업 웹 서비스 | GitHub Flow |
| 대규모 팀, 빠른 배포 | Trunk-based |
| CI/CD 없음 | Git Flow |
| 1인 개발 | GitHub Flow (단순하게) |
브랜치 이름 컨벤션 #
어떤 전략을 쓰든 일관된 이름 규칙이 필요합니다.
|
|
커밋 메시지 컨벤션 #
Conventional Commits를 사용하면 자동으로 CHANGELOG를 생성할 수 있습니다.
|
|
결론: 완벽한 전략은 없다 #
브랜치 전략을 바꾸는 것만으로 팀 생산성이 마법처럼 올라가지 않습니다. 중요한 것은 팀이 합의한 규칙을 일관되게 지키는 것입니다.
작은 팀이라면 GitHub Flow로 시작하는 걸 권장합니다. 규칙이 단순해서 온보딩이 쉽고, CI/CD를 잘 갖추면 빠른 배포가 가능합니다. 팀이 커지고 배포 빈도가 올라가면 그때 Trunk-based로 전환을 고려하면 됩니다.
Git Flow는 앱스토어 배포처럼 릴리즈 사이클이 명확할 때 여전히 유효합니다. 무조건 나쁜 전략이 아닙니다. 맞는 환경이 있을 뿐입니다.