CI/CD 워크플로우를 효과적으로 구축하기 위해 Git Flow와 Trunk-Based 개발을 선택하는 방법을 알아보세요. Git Flow CI/CD 워크플로에 __CAPGO_KEEP_0__과 트렁크 기반 개발(TBD)이 크게 영향을 줄 수 있습니다. 여기서 빠른 요약을 제공합니다.
- Git Flow: 구조화된 버전 관리 환경에 적합합니다. 여러 branch를 사용합니다.
main,develop,feature,release트렁크 기반 개발hotfix: 단기적인 기능 branch를 사용하는 단일 메인 branch에 집중합니다. 작은 팀, 빠른 릴리스, 강력한 자동화 테스트에 적합합니다. - 빠른 비교:Aspect
Git Flow
| 트렁크 기반 개발 | branch 복잡도 | __CAPGO_KEEP_0__ |
|---|---|---|
| __CAPGO_KEEP_0__ | __CAPGO_KEEP_0__ | __CAPGO_KEEP_0__ |
| 릴리스 주기 | 예약된 릴리스 | 지속적인 배포 |
| 팀 크기 | 대형 팀 | 소규모 팀 |
| 테스트 | 주기 테스트 | 자동화 테스트 |
| 배포 위험 | 스테이징 릴리즈와 함께 낮은 | 자주 업데이트와 함께 높은 |
| 롤백 | 느린 | 빠른 |
주요 결론: 구조화된, 느린 워크플로우를 위한 Git Flow를 사용하고, 속도와 유연성을 위한 TBD를 사용하세요. 두 가지 모두 성공하기 위해坚固한 CI/CD pipeline이 필요합니다.
29 - GitFlow vs. Trunk-Based Development: …
Git Flow 워크플로우 기본

Git Flow는 개발을 위해 다섯 가지 branch 유형을 사용하여 개발을 조직합니다.: __CAPGO_KEEP_0__, __CAPGO_KEEP_0__, __CAPGO_KEEP_0__, __CAPGO_KEEP_0____CAPGO_KEEP_0__ 이 구조는 릴리스 관리 및 병렬 개발을 효과적으로 관리하는 데 도움이 됩니다.Git Flow Branch Structure
Branch Type
| 목적 | 병합 대상 | 이 구조는 릴리스 관리 및 병렬 개발을 효과적으로 관리하는 데 도움이 됩니다. |
|---|---|---|
| 메인 | code을 생산 준비 상태로 유지합니다. | N/A |
| 개발 | 기능을 통합하며 기능 branch의 기본으로 사용됩니다. | N/A |
| 기능 | 개별 기능을 구축하기 위해 사용하며 develop branch에서 생성됩니다. | develop |
| 릴리즈 | 최종 테스트 및 버전화 준비를 위해 develop branch에서 생성됩니다. main 및 develop branch | main & develop |
| Hotfix | 생산 문제를 빠르게 해결; main에서 생성 | main & develop |
Git Flow 이점
- 여러 기능을 동시에 개발할 수 있어 충돌이 발생하지 않습니다.
- 릴리즈 브랜치에서는 최종 테스트 및 버전 준비를 위해 전용 공간을 제공하여 개발을 진행하는 develop branch를 계속 진행할 수 있도록 합니다.
- Hotfix 브랜치로 생산 문제를 해결할 수 있어 다른 개발 작업을 중단하지 않습니다.
Git Flow 단점
- Branch 관리 복잡성: 여러 활성 branch를 관리하는 것은 병합이 더 어려워질 수 있습니다.
- Slower Deployment: formal release 프로세스는 더 단순한 워크플로우와 비교하여 배포가 느려질 수 있습니다.
- Increased Maintenance: 각 branch는 자신의 pipeline 구성이 필요하여 유지 관리 작업을 더 많이 추가합니다.
This workflow works best for projects that need strict version control, multiple release tracks, or compliance with regulations. Up next, we’ll explore how this compares to the streamlined approach of trunk-based development.
Trunk-Based Development Basics
Trunk-Based Development (TBD)는 주로 트렁크 또는 메인이라고 불리는 단일 메인 branch를 중심으로 revolves합니다. 이 접근 방식은 DevOps practices와 continuous integration에 가깝습니다.
Trunk-Based Branch Structure
일반적인 TBD 워크플로우에서, 다음 branch 유형을 만날 수 있습니다:
| Branch Type | Purpose | 수명 |
|---|---|---|
| 주/본관 | 생산 준비 완료된 중앙 branch code | 영구 |
| 기능 branch | 개별 변경에 대한 임시 branch | 단기 |
| 릴리즈 branch | 릴리즈 전에 최종 조정을 위해 사용 | 임시 |
개발자들은 주로 일일이 여러 번 작은 incremental 변경을 main branch에 merge합니다. 이로 인해 지속적인 테스트가 촉진되고, 충돌을 신속하게 해결할 수 있습니다.
트렁크 기반의 이점
TBD는 CI/CD 및 DevOps와 함께 작업하는 팀에게 다음과 같은 이점을 제공합니다:
- 병합 충돌이 적다: 정기적인 병합은 충돌을 관리할 수 있게 해줍니다.
- 빠른 피드백: 자동 빌드는 매 병합 시에 실행되어 초기에 버그를 잡을 수 있습니다.
- 간단한 PIPELINE: 단일 branch는 CI/CD 설정의 복잡성을 줄입니다.
- 팀 협업: 공유된 트렁크는 팀이 일치할 수 있도록 합니다.
이 구조는 Git Flow와의 비교를 위한 단계를 설정하는 스트리밍 워크플로를 만듭니다.
트렁크 기반 제한
TBD는 또한 팀이 해결해야 하는 제약이 있습니다:
| Challenge | 영향 | 해결 방법 |
|---|---|---|
| Code 안정성 | 기본 버전에 영향을 미치는 변경 사항의 위험 | 강력한 자동화 테스트를 사용 |
| 팀 협력 | 중복 작업이 장애를 일으킬 수 있습니다 | 기능 플래그와 자주, 작은 커밋을 사용 |
| 학습 곡선 | 긴 수명 branch에서 전환 | 훈련을 제공하고 점진적으로 도입 |
| Scaling Issues | 큰 팀에서 자주 병합하는 것은 혼란을 일으킬 수 있습니다. | 엄격한 code 검토를 강제하세요. |
TBD를 성공적으로 채택하려면 팀 내에서 열린 의사소통과 자동화된 테스트가 필요합니다.
Git Flow vs. Trunk-Based: 직접적인 비교
Git Flow와 Trunk-Based Development은 다음 항목에서 어떻게 비교되는지 살펴보겠습니다.
기능 비교 표
| 영역 | Git Flow | 트렁크 기반 개발 |
|---|---|---|
| branch 복잡도 | 여러 개의 장기적인 branch | 단일 메인 branch와 짧은 branch |
| 릴리즈 주기 | 예약된 릴리즈 | 연속적인 배포 |
| 팀 크기 | 큰 팀에 적합합니다. | 작은 팀에 더 적합합니다. |
| Code 리뷰 프로세스 | branch merge 시 공식적인 리뷰 | 작은, 빈번한 변경 사항에 대한 지속적인 리뷰 |
| 테스트 요구 사항 | 사이클 종료 시 테스트에 집중 | __CAPGO_KEEP_0__ |
| 학습 곡선 | __CAPGO_KEEP_1__ | 단순한 워크플로우, 그러나 강력한 테스트가 필요 |
| __CAPGO_KEEP_2__ | 단계별 릴리즈로 인한 낮은 위험 | __CAPGO_KEEP_3__ |
| 빈번한 업데이트로 인한 높은 위험 | __CAPGO_KEEP_4__ | 느린 롤백 프로세스 |
__CAPGO_KEEP_5__
빠른 복원 기능을 가진 워크플로우 사용 시기 __CAPGO_KEEP_0__은 대규모 프로젝트에 적합한 버전 관리 방식입니다. 여러 버전과 프로젝트를 관리하는 팀 및 프로젝트에 적합합니다.
__CAPGO_KEEP_1__ __CAPGO_KEEP_0__은 팀과 프로젝트가 속도와 유연성을 우선하는 경우에 적합합니다. 예를 들어:
- __CAPGO_KEEP_0__
- __CAPGO_KEEP_0__
- __CAPGO_KEEP_0__
- __CAPGO_KEEP_0__
- __CAPGO_KEEP_0__
__CAPGO_KEEP_0__
__CAPGO_KEEP_0__
__CAPGO_KEEP_0__
__CAPGO_KEEP_0__
- 개발 Branch Pipeline: 단위 테스트, 통합 테스트, code 품질 검사, 빌드 검증, 개발 환경에 배포합니다.
- Release Branch Pipeline: 전체 테스트套件을 실행하고, 보안 스캔, 릴리스 후보를 빌드하고, 스테이징 환경에 배포합니다.
- Main Branch Pipeline: 유효성 검사 테스트, 버전 관리, 프로덕션 빌드 생성, 프로덕션에 배포, 릴리스 태그를 생성합니다.
트렁크 기반 CI/CD 설정
- Feature Branch Pipeline: 빠른 단위 테스트, code 스타일 검사, 빌드 검증, 미리보기 환경에 배포합니다.
- Main Branch Pipeline: 완전한 자동화 테스트, 보안 스캔, 프로덕션 빌드 생성, 진행적 배포, 자동 롤백 기능을 포함합니다.
Capgo CI/CD 통합

Capgo를 CI/CD 설정에 추가하여 실시간 오버-더-에어 업데이트 기능을 추가하려면:
Capgo는 GitHub 액션, GitLab CI, Jenkins Git Flow와 Trunk-Based pipeline 모두에서 실시간 업데이트, 단계별 롤아웃 및 즉시 롤백을 활성화하기 위해 사용할 수 있습니다. 또한 Apple 및 Google 요구 사항을 충족하며 클라우드 및 자체 호스팅 배포 모두를 지원합니다. [1].
요약 및 추천
팀의 규모와 CI/CD 성숙도 수준에 따라 아래 표에 따라 워크플로우를 선택하세요.
| 사례 | Git Flow | 트렁크 기반 |
|---|---|---|
| 팀 크기 | 50명 이상의 개발자 | 50명 미만의 개발자 |
| 릴리즈 주기 | 주간 또는 월간 | 일주일 또는 다중 일주일 |
| 테스트 및 QA | 전통 QA 주기 | 자동화 테스트에 집중 |
| 배포 모델 | 다중 버전, 전통적인 | Cloud-native, 컨테이너화된 |
| 위험 수용도 | conservative, 규제된 설정 | 진보적, 빠른 feedback |
- 작은 팀에서 Trunk-Based Development을 시작하고, 그룹을 확장하기 전에 CI/CD pipeline이 완전히 자동화되도록 하세요.
- 일관적인 code 리뷰를 유지하고, 두 가지 워크플로우 모두에서 기능 토글을 사용하세요. 선택한 워크플로우와 일치하는 pipeline 설정을 유지하세요.
일부 팀은 이러한 접근 방식을 혼합할 수 있습니다 - Git Flow를 주요 릴리스에 사용하면서 기능 배달에 Trunk-Based Development을 사용합니다. 어떤 경로를 선택하더라도 CI/CD를 적절하게 통합하고, 테스트를 자동화하고, 팀이 같은 페이지에 있도록 유지하는 것이 성공의 핵심입니다.