Skip to main content

Git Flow vs Trunk-Based for CI/CD

CI/CD 워크플로우에서 Git Flow와 Trunk-Based 개발의 차이점을 비교하고 강점과 약점을 강조합니다.

마틴 도나디유

마틴 도나디유

Content Marketer

Git Flow vs Trunk-Based for CI/CD

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_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 통합

Capgo Live Update 대시보드 인터페이스

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 액션 통합 구현 세부 사항을 위해.

Capacitor 앱에 대한 실시간 업데이트

웹层 버그가 활성화된 경우 Capgo를 통해修정 내용을 배포하는 대신 앱 스토어 승인까지 며칠 기다리지 마세요. 사용자는 배경에서 업데이트를 받으면서 네이티브 변경 사항은 일반적인 검토 경로를 유지합니다.

시작하기

블로그에서 최신 뉴스

Capgo은 전문적인 모바일 앱을 만들기 위해 필요한 최고의洞察력을 제공합니다.