Choosing between Git Flow 와
- Trunk-Based Development (TBD)Git Flow
main,develop,feature,release: 구조화된 버전 관리 환경에 적합합니다. 여러 branch를 사용하여hotfix, 및 - 를 관리합니다. 대규모 팀, 느린 릴리스 주기 및 엄격한 QA 프로세스에 적합합니다.Trunk-Based Development
: 단일 메인 branch에 짧은 라이브러리 feature branch를 사용합니다. 작은 팀, 빠른 릴리스 주기 및 강력한 자동화 테스트에 적합합니다.
| __CAPGO_KEEP_0__ | __CAPGO_KEEP_1__ | __CAPGO_KEEP_2__ |
|---|---|---|
| __CAPGO_KEEP_3__ | __CAPGO_KEEP_4__ | __CAPGO_KEEP_5__ |
| __CAPGO_KEEP_6__ | __CAPGO_KEEP_7__ | __CAPGO_KEEP_8__ |
| __CAPGO_KEEP_9__ | __CAPGO_KEEP_10__ | __CAPGO_KEEP_11__ |
| 테스트 | 주기 테스트 | 자동화 테스트 |
| 배포 위험 | 스테이지 릴리즈로 낮아짐 | 자주 업데이트로 높아짐 |
| 롤백 | 느려짐 | 빠르짐 |
주요 결론: Git Flow를 사용하여 구조화된 느린 워크플로우와 TBD를 사용하여 속도와 유연성을 위해 사용하세요. 두 가지 모두 성공하기 위해坚固한 CI/CD pipeline이 필요합니다.
29 - GitFlow vs. Trunk-Based Development: …
__CAPGO_KEEP_1__ __CAPGO_KEEP_2__

__CAPGO_KEEP_1__ __CAPGO_KEEP_3__, __CAPGO_KEEP_4__, __CAPGO_KEEP_5__, __CAPGO_KEEP_6____CAPGO_KEEP_7__ __CAPGO_KEEP_8____CAPGO_KEEP_9__
Git Flow Branch Structure
| Branch Type | 목적 | 병합 대상 |
|---|---|---|
| Main | 운영 준비가 된 code | N/A |
| Develop | 기능 통합; 기능 branch의 기본이 되는 branch | N/A |
| Feature | 개별 기능 개발을 위한 branch; develop branch에서 생성 | develop |
| Release | __CAPGO_KEEP_0__ | main & develop |
| Hotfix | __CAPGO_KEEP_0__ | main & develop |
__CAPGO_KEEP_0__
- __CAPGO_KEEP_0__
- develop branch develop
- Hotfix production 문제를 빠르게 해결할 수 있도록 개발 작업을 중단하지 않고 쉽게 처리할 수 있는 branch의 장점입니다.
Git Flow의 단점
- Branch 관리의 복잡성: 여러 개의 활성 branch를 관리하면 병합이 더 어려워질 수 있습니다.
- 배포가 느려지는 것: 공식 릴리스 프로세스는 더 단순한 워크플로우보다 배포를 늦추는 경향이 있습니다.
- 유지 관리 증가: 각 branch는 자신의 pipeline 구성이 필요하여 유지 관리 부담이 증가합니다.
이 워크플로우는 엄격한 버전 관리, 여러 릴리스 트랙, 규제 준수와 같은 요구 사항이 있는 프로젝트에 가장 잘 작동합니다. 다음으로, 우리는 이가 트렁크 기반 개발의streamlined 접근 방식과 어떻게 비교되는지 살펴보겠습니다.
트렁크 기반 개발의 기초
트렁크 기반 개발(TBD)은 일반적으로 트렁크 또는 메인이라고 불리는 단일 메인 branch를 중심으로 revolves합니다. 이 접근 방식은 DevOps 관행과 지속적인 통합과 밀접하게 일치합니다.
트리크 베이스드 브랜치 구조
일반적인 TBD 워크플로우에서, 다음 브랜치 유형을 만날 수 있습니다:
| 브랜치 유형 | 목적 | 수명 |
|---|---|---|
| 메인/트리크 | code가 포함된 프로덕션 준비 완료 중앙 브랜치 | 영구 |
| 기능 브랜치 | 개별 변경에 대한 임시 브랜치 | 단기 |
| 릴리즈 브랜치 | 발행 전 최종 조정을 위해 사용 | __CAPGO_KEEP_0__ |
개발자들은 주로 일일이 여러 번 작은 incremental 변경 사항을 main branch에 merge합니다. 이로 인해 지속적인 테스트와 빠른 충돌 해결이 가능합니다.
트렁크 베이스드 이점
__CAPGO_KEEP_1__
- CI/CD 및 DevOps를 사용하는 팀에게 여러 이점이 있습니다:더 적은 충돌
- : 정기적인 merge로 충돌을 관리할 수 있습니다.빠른 피드백
- : 자동화된 빌드는 매 merge마다 버그를 빠르게 잡습니다.더 단순한 PIPELINES
- : 단일 branch로 CI/CD 설정의 복잡성이 줄어듭니다.__CAPGO_KEEP_0__ : 주 트렁크는 모든 팀원이 일치하는 것을 보장합니다.
이 구조는 Git Flow와 다음 섹션에서 비교할 수 있는 streamlined 워크플로를 만듭니다.
트렁크 기반 제한 사항
TBD는 강점이 있지만 팀이 해결해야 하는 문제도 있습니다.
| 문제 | 영향 | 해결 방법 |
|---|---|---|
| Code 안정성 | 메인에 영향을 미치는 변경 사항의 위험 | 강력한 자동화 테스트 사용 |
| 팀 협력 | 작업이 겹치면 문제가 발생할 수 있습니다. | 기능 플래그에 의존하고 자주, 작은 커밋을 사용하세요. |
| 학습 곡선 | 긴존재하는 branch에서 전환하는 것 | 교육을 제공하고 점진적으로 도입하세요. |
| 확장성 문제 | 큰 팀에서 자주 병합할 수 있는 커밋이 팀을 압도할 수 있습니다. | 엄격한 code 검토를 강제하세요. |
TBD를 성공적으로 채택하려면 팀 내에서 열린 의사소통과 자동화된 테스트가 필요합니다.
Git Flow vs. Trunk-Based: 직접 비교
Git Flow와 Trunk-Based 개발의 주요 영역에서 어떻게 비교되는지 알아보세요.
기능 비교 표
| 비교 항목 | __CAPGO_KEEP_0__ | Git Flow |
|---|---|---|
| 트렁크 기반 개발 | Branch Complexity | 여러 개의 오랜 기간 유지되는 branch |
| Single main branch with short-lived branches | Release Cadence | scheduled release |
| Continuous deployment | 팀 크기 | 큰 팀에 적합합니다. |
| Code Review Process | Branch 병합 시 공식적인 검토 | 작은, 빈번한 변경 사항에 대한 지속적인 검토 |
| 테스트 요구 사항 | 주기 테스트에 중점 | 자동 테스트에 의존하는 정도 |
| 학습 곡선 | 여러 branch로 인한 복잡성 | 강한 테스트가 필요하지만 단순한 워크플로우 |
| 배포 위험 | 단계별 릴리즈로 인한 낮은 위험 | 빈번한 업데이트로 인한 높은 위험 |
| 복구 시간 | 느린 롤백 프로세스 | 빠른 복원 기능 |
워크플로우 사용 시기
Git Flow __CAPGO_KEEP_0__ 기업급 프로젝트에 적합한 구조화된 버전 관리가 필요할 때 __CAPGO_KEEP_0__가 적합합니다. 여러 버전을 관리하는 팀과 공식 QA 또는 규정 준수 요구가 있는 프로젝트에 적합합니다.
트리크 기반 개발 __CAPGO_KEEP_0__ 팀과 프로젝트가 속도와 유연성을 우선시할 때 __CAPGO_KEEP_0__가 가장 적합합니다.
- SaaS 플랫폼이 빠른 업데이트를 필요로 하는 경우
- 강력한 CI/CD PIPELINE을 보유한 팀
- 자동화된 테스트에 의존하는 프로젝트
- 연속적인 배포 워크플로우 또는 빈번한 릴리스
- 모바일 앱 프로젝트가 정기적인 업데이트를 필요로 하는 경우
어떤 팀은 두 가지 방법을 결합하기도 합니다: 코어 서비스에 Trunk-Based Development를 사용하고, 공식 릴리스 트랙을 가진 프로젝트에 Git Flow를 사용합니다.
다음은 CI/CD pipeline을 설정하는 방법입니다.
CI/CD Pipeline 설정
Git Flow CI/CD 설정
- 개발 Branch Pipeline: 단위 테스트, 통합 테스트, code 품질 검사, 빌드 검증, 개발 환경에 배포합니다.
- Release Branch Pipeline: 전체 테스트 스위트를 실행하고, 보안 스캔을 수행하고, 릴리스 후보를 빌드하고, 스테이징 환경에 배포합니다.
- Main Branch Pipeline: 유효성 검사 테스트를 수행하고, 버전 관리를 처리하고, 프로덕션 빌드를 생성하고, 프로덕션에 배포하고, 릴리스를 태깅합니다.
Trunk-Based CI/CD 설정
- Feature Branch Pipeline: code에 초점을 맞추어 빠른 단위 테스트, code 스타일 체크, 빌드 검증 및 미리보기 환경으로의 배포를 지원합니다.
- 주요 Branch Pipeline: 완전한 자동화된 테스트, 보안 스캔, 프로덕션 빌드 생성, 프로그레시브 배포 및 자동 롤백 기능을 지원합니다.
Capgo CI/CD 통합

CI/CD 설정에 실시간으로 업데이트를 추가하기 위해, Capgo를 쉽게 통합할 수 있습니다.
Capgo는 GitHub 액션, GitLab CI, Jenkins To enable live updates, staged rollouts, and instant rollbacks in both Git Flow and Trunk-Based pipelines. It meets Apple and Google requirements while offering support for both cloud and self-hosted deployments. [1].
요약 및 추천
팀의 규모와 CI/CD 성숙도 수준에 따라 아래 표에 나열된 워크플로우를 선택하세요.
| 시나리오 | Git Flow | 트렁크 베이스드 |
|---|---|---|
| 팀 크기 | 50명 이상의 개발자 | 50명 미만의 개발자 |
| 릴리즈 주기 | 주간 또는 월간 | 일주일 또는 일일 |
| 테스트 & QA | 기존 QA 주기 | 자동 테스트에 집중 |
| 배포 모델 | 다중 버전, 기존 | Cloud-native, 컨테이너화 |
| 위험 수용도 | conservative, 규제된 환경 | progressive, 빠른 feedback |
- 작은 팀에서 Trunk-Based Development을 시작하고, 그룹을 확장하기 전에 CI/CD pipeline이 완전히 자동화되도록 하세요.
- 일관적인 code 리뷰를 유지하고, 두 가지 워크플로에서 기능 토글을 사용하세요. 선택한 워크플로와 일치하는 pipeline 구성으로 설정하세요.
일부 팀은 이러한 접근 방식을 혼합할 수 있습니다 - Git Flow를 주요 릴리스에 사용하면서 기능 배달을 위해 Trunk-Based Development을 사용할 수 있습니다. 어떤 경로를 선택하더라도 CI/CD를 적절하게 통합하고, 테스트를 자동화하고, 팀이 같은 페이지에 있도록 하세요.
Git Flow vs Trunk-Based for CI/CD를 계속 진행하세요.
__CAPGO_KEEP_0__ CI/CD를 사용하는 경우 Git Flow vs Trunk-Based for CI/CD를 사용하여 CI/CD 자동화 계획을 만들기 위해 연결하세요. Capgo CI/CD Capgo Native Builds Capgo Native Builds를 사용하여 Capgo Integrations Capgo Integrations를 사용하여 for the product workflow in Capgo Integrations, CI/CD 통합 구현 세부 사항을 위해. __CAPGO_KEEP_0__ CI/CD를 사용하여 GitHub 액션 통합 GitHub 액션 통합 구현 세부 사항을 위해.