메인 콘텐츠로 바로가기

Git Flow vs Trunk-Based CI/CD

Git Flow와 Trunk-Based 개발의 차이점을 비교하여 CI/CD 워크플로우의 효율성을 높이는 방법을 알아보세요. 이 두 가지 개발 방법의 장단점을 살펴보세요.

마틴 도나디우

마틴 도나디우

콘텐츠 마케터

Git Flow vs Trunk-Based CI/CD

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

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 branchmain & 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 TypePurpose수명
주/본관생산 준비 완료된 중앙 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 실시간 업데이트 대시보드 인터페이스

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를 적절하게 통합하고, 테스트를 자동화하고, 팀이 같은 페이지에 있도록 유지하는 것이 성공의 핵심입니다.

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

Capgo를 통해 웹层 버그가 활성화된 경우 앱 스토어 승인 대기 없이 바로 픽스를 배포하세요. 사용자는 배경에서 업데이트를 받으며 네이티브 변경 사항은 일반적인 리뷰 경로에 남아 있습니다.

시작하기

블로그에서 최신 뉴스

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