번외 2. 브렌치 운용 전략
브렌치 전략의 핵심은 어렵지 않습니다. 작업을 작게 나누고, 빨리 합치는 것입니다.
팀마다 이름은 다를 수 있지만, 실제로는 이 공통 원칙 위에 Git Flow, GitHub Flow, GitLab Flow, TBD 같은 운영 규칙을 얹어서 쓰는 경우가 많습니다.
모든 전략에 깔린 기본 습관
- 기준 길(main)을 항상 안정적으로 유지한다.
- 작업마다 짧은 브렌치를 하나씩 만든다.
- 완료되면 빠르게 main으로 합친다.
- 긴급 수정은 별도 브렌치에서 바로 처리한다.
어떤 전략을 고르더라도, 브렌치가 너무 오래 열려 있으면 결국 서로 다른 방향으로 멀어지고 다시 합칠 때 비용이 커집니다. 아래 두 패턴은 많은 팀이 공통으로 지키려는 기본 습관입니다.
GitHub Flow와 TBD는 이 습관이 더 직접적으로 드러나는 편이고, Git Flow도 브렌치 종류가 더 많을 뿐 안쪽 운영 감각은 크게 다르지 않습니다.
그림 B2-1. 짧은 작업 브렌치를 빠르게 합치는 패턴
브렌치가 오래 열려 있지 않으면 충돌 위험이 크게 줄어듭니다.
그림 B2-2. 긴급 수정 브렌치 운영
긴급 수정은 짧게 처리하고 main으로 먼저 반영한 뒤, 필요한 길에 다시 나눠 보냅니다.
대표 전략 비교
아래 전략들은 정답 경쟁이 아니라, 팀의 배포 속도와 검수 방식에 따라 무게가 달라지는 운영 방식입니다. 탭을 눌러 각 전략의 설명과 그래프 예시를 같이 확인해 보세요.
Git Flow
main과 develop처럼 오래 유지되는 기준 길을 두고, 기능 작업은 develop 쪽으로 모은 뒤 배포 직전에 release로 다듬는 방식입니다.
- 배포 주기가 분명하고, 아트 검수나 QA 기간을 따로 두는 팀에 잘 맞습니다.
- 기능 작업, 배포 준비, 긴급 수정의 길이 명확히 나뉘어 있어 역할 구분이 쉽습니다.
- 대신 브렌치 수가 많아져서 작은 팀이나 빠른 반복 작업에는 다소 무겁게 느껴질 수 있습니다.
그림 B2-3. Git Flow 예시
feature는 develop으로, release는 배포 준비용으로, hotfix는 main 기준 긴급 수정용으로 따로 움직입니다.
GitHub Flow
main 하나를 중심으로 짧은 작업 브렌치를 만들고, 리뷰가 가능한 한 묶음으로 정리한 뒤 PR을 거쳐 main으로 합치는 방식입니다.
- 핵심은 브렌치 하나가 리뷰 가능한 작업 묶음이 된다는 점입니다.
- 작고 자주 합치는 팀, 배포를 자주 하는 팀, 도구가 main 중심으로 맞춰진 팀에 잘 맞습니다.
- 대신 main이 늘 배포 가능한 상태에 가깝도록 관리해야 하고, 리뷰가 너무 늦어지면 브렌치가 쉽게 길어집니다.
그림 B2-4. GitHub Flow 예시
feature 브렌치가 리뷰 한 묶음 동안 살아 있다가, PR이 끝나면 main으로 합쳐지는 패턴입니다.
GitLab Flow
main에서 작업을 모으되, staging이나 production 같은 환경 브렌치를 따로 두고 어느 결과가 검수 중인지, 어느 결과가 실제 서비스 중인지 구분해서 운영하는 방식입니다.
- 핵심은 작업 브렌치뿐 아니라 배포 환경 자체도 브렌치로 추적한다는 점입니다.
- 내부 검수 빌드와 실제 운영 빌드를 분리해야 하는 팀, 환경별 승인 절차가 있는 팀에 잘 맞습니다.
- 대신 환경 브렌치끼리 무엇이 먼저 올라갔는지 규칙이 흐트러지면 관리가 금방 복잡해질 수 있습니다.
그림 B2-5. GitLab Flow 예시
feature를 main에 모은 뒤, staging으로 검수 빌드를 만들고, 확인이 끝나면 production으로 올리는 패턴입니다.
TBD
TBD는 Trunk Based Development의 줄임말입니다. 앞에서 본 기본 습관을 가장 강하게 적용해서, trunk(main)에 아주 자주 다시 합치는 방식입니다.
- 핵심은 브렌치를 거의 머물지 않는 임시 통로처럼 쓰거나, 팀에 따라 아예 생략할 수도 있다는 점입니다.
- 작업을 매우 작게 쪼개고 하루 안에 여러 번 trunk로 돌아올 수 있는 팀에 잘 맞습니다.
- 대신 미완성 작업을 그대로 드러내지 않도록 노출 조절과 빠른 검증 습관이 함께 있어야 합니다.
그림 B2-6. TBD 예시
한두 개 커밋 단위의 아주 짧은 작업이 몇 시간 안에 main으로 돌아오는 흐름입니다.