Skip to main content
개발 기술 Updates

Git Flow vs Trunk-Based for CI/CD

CI/CD 워크플로우를 효과적으로 구축하기 위해 Git Flow와 Trunk-Based Development의 차이점을 살펴보며 강점과 약점을 비교합니다.

Martin Donadieu

Martin Donadieu

Content Marketer

Git Flow vs Trunk-Based for CI/CD

CI/CD 워크플로우에 큰 영향을 미치는 Git Flow와 Trunk-Based Development(TBD) 사이의 선택은 다음과 같이 간단하게 요약됩니다. Git Flow Trunk-Based Development (TBD)과 Git Flow 사이의 선택은 CI/CD 워크플로우에 큰 영향을 미칠 수 있습니다. 여기서 간단한 요약을 제공합니다.

  • Git Flow: __CAPGO_KEEP_0__에 적합한 환경은 구조화된 버전 관리 환경입니다. 여러 branch를 사용합니다. 예를 들어, , 등이 있습니다. 대규모 팀, 느린 릴리스 주기, 엄격한 QA 프로세스가 필요한 경우에 적합합니다. main, develop, feature, release, and hotfix. Git Flow
  • Git FlowTrunk-Based Development

: __CAPGO_KEEP_0__은 단일 메인 branch에 중점을 두고, 짧은 라이브 feature branch를 사용합니다. 작은 팀, 빠른 릴리스 주기, 강력한 자동화 테스트가 필요한 경우에 적합합니다.

Quick Comparison:AspectBranch Complexity
Git FlowTrunk-Based DevelopmentMultiple long-lived branches
릴리스 주기예약 릴리스연속 릴리스
팀 크기대규모 팀중소규모 팀
테스트릴리스 종료 시점 테스트자동 테스트
배포 위험도스테이징 릴리스로 인한 낮은 위험빈번한 업데이트로 인한 높은 위험
롤백느린빠른

주요 내용Git Flow를 사용하여 구조화된, 느린 워크플로우와 TBD를 사용하여 속도와 유연성을 위해.

성공하기 위해 두 가지 모두가 강력한 CI/CD pipeline이 필요합니다.

YouTube 동영상 플레이어 Git Flow

워크플로우 기본

Git Flow Git Flow는 다섯 가지 branch 유형을 사용하여 개발을 조직합니다:, 개발, 기능, 릴리즈, 핫픽스. 이 구조는 릴리즈 관리 및 병렬 개발을 효과적으로 관리하는 데 도움이 됩니다.

Git Flow Branch Structure

Branch TypePurposeMerge Target
메인생산 준비가 완료된 codeN/A
개발기능을 통합; 기능 branch의 기본으로 작용한다N/A
기능개별 기능을 구축하는 데 사용; develop에서 생성develop
릴리스최종 테스트 및 버전화에 대비; develop에서 생성main & develop
핫픽스프로덕션 문제를 빠르게 수정; main에서 생성main & 개발

Git Flow의 이점

  • 여러 기능을 동시에 개발할 수 있어 충돌이 발생하지 않습니다.
  • 릴리즈 브랜치에서는 최종 테스트 및 버전 준비를 위한 전용 공간을 제공하여 개발 중인 develop branch를 계속 진행할 수 있도록 합니다.
  • Hotfix 브랜치에서는 프로덕션 문제를 신속하게 해결할 수 있어 다른 개발 작업에 방해받지 않습니다.

Git Flow의 단점

  • 여러 활성 브랜지를 관리하는 것은 병합이 더 어려울 수 있습니다.: 여러 활성 브랜지를 관리하는 것은 병합이 더 어려울 수 있습니다.
  • 배포 속도 저하: formal release 프로세스는 단순한 워크플로우보다 배포를 늦출 수 있습니다.
  • Increased Maintenance: 각 branch는 독자적인 pipeline 설정이 필요하여 유지보수 작업 부담이 증가합니다.

This workflow는 프로젝트가 엄격한 버전 관리, 여러 릴리스 트랙, 규제 준수와 같은 요구 사항이 있는 경우 가장 잘 작동합니다. 다음으로, 우리는 이가 트렁크 기반 개발의 스트리밍된 접근 방식과 어떻게 비교되는지 살펴보겠습니다.

Trunk-Based Development Basics

Trunk-Based Development (TBD)는 주로 트렁크 또는 메인이라고 불리는 단일 메인 branch를 중심으로 revolves합니다. 이 접근 방식은 DevOps 관행과 지속적 통합과 밀접하게 연관되어 있습니다.

Trunk-Based Branch Structure

일반적인 TBD 워크플로우에서, 다음 branch 유형을 만날 수 있습니다:

Branch Type목적수명
Main/Trunkcode를 위한 중앙 branch영구
기능 branch개별 변경 사항을 위한 임시 branch단기적
릴리즈 branch릴리즈 전에 최종 조정을 위한 branch임시

개발자들은 주로 일일 basis로 작은 incremental 변경 사항을 main branch에 merge한다. 이로 인해 지속적인 테스트와 빠른 conflict 해결이 가능하다.

트렁크 베이스드 이점

TBD는 CI/CD 및 DevOps를 위한 팀에게 다음과 같은 이점을 제공한다.

  • 병합 conflict가 적다: Regular merges keep conflicts manageable.
  • 빠른 피드백: Automated builds run with every merge, catching bugs early.
  • 간소화된 PIPELINE: A single branch reduces the complexity of CI/CD setups.
  • 팀 협업이 더 쉬워진다: A shared trunk ensures everyone stays aligned.

트리크 기반의 구조

이 구조는 Git Flow와의 비교를 위해 다음 섹션에서 준비된 스트리밍 워크플로를 만든다.

트리크 기반의 제한

TBD는 강점이 있지만 팀이 해결해야 하는 문제점도 있다.문제점__CAPGO_KEEP_0__
Code Stability주요 버전 업데이트로 인한 변경 사항의 위험강력한 자동화 테스트 사용
팀 협력중복 작업이 팀의 혼란을 일으킬 수 있습니다.기능 플래그를 사용하고 자주, 작은 커밋을 사용하여
학습 곡선긴 수명 branch에서 전환하는 경우훈련 제공 및 점진적으로 도입
확장성 문제큰 팀에서 자주 병합하는 것은 혼란을 일으킬 수 있습니다.code 검증을 철저히 강제하세요

성공적인 TBD 도입을 위해서는 팀 내에서 자동화된 테스트와 열린 의사소통이 필수입니다.

Git Flow vs. Trunk-Based: 직접적인 비교

Git Flow와 Trunk-Based Development의 주요 영역에서 어떻게 비교되는지 알아보세요.

기능 비교 표

영역Git FlowTrunk-Based Development
Branch Complexity여러 개의 장기 운영 중인 branch단일 메인 branch와 짧은 운영 중인 branch
릴리즈 주기__CAPGO_KEEP_0__정기적인 릴리스
연속적인 배포팀 크기큰 팀에 적합합니다.
Code Review Process__CAPGO_KEEP_0__ 리뷰 프로세스branch merge 시 공식적인 리뷰
작은 크기, 빈번한 변경 사항에 대한 지속적인 리뷰테스트 요구 사항주기적인 테스트
자동화된 테스트에 의존하는 경우입니다. ','학습 곡선다중 branch로 인한 복잡성강력한 테스트가 필요하지만 workflow가 단순합니다
배포 위험단계별 릴리스로 인한 낮은 위험빈번한 업데이트로 인한 높은 위험
복구 시간롤백 프로세스가 느립니다빠른 복원 기능

각 워크플로우 사용하는 시점

Git Flow 기업급 프로젝트에 적합한 구조화된 버전 릴리스가 필요할 때 ideal합니다. 다수의 지원 버전 및 공식 QA 또는 규정 준수 요구가 있는 프로젝트를 관리하는 팀에게 적합합니다.

트렁크 기반 개발 works best for teams and projects that prioritize speed and flexibility, such as:

  • SaaS 플랫폼이 빠른 업데이트를 필요로 할 때
  • 강력한 CI/CD PIPELINE을 보유한 팀
  • 신뢰할 수 있는 자동화된 테스트에 의해 지원되는 프로젝트
  • 연속적인 배포 워크플로우 또는 빈번한 릴리스
  • 모바일 앱 프로젝트가 정기적인 업데이트를 필요로 할 때

일부 팀은 두 가지 방법을 결합하기도 합니다: 코어 서비스에 Trunk-Based Development를 사용하고, 공식 릴리스 트랙을 가진 프로젝트에 Git Flow를 사용합니다.

다음으로: CI/CD PIPELINE을 설정하는 방법을 알아보겠습니다.

CI/CD PIPELINE 설정

Git Flow CI/CD PIPELINE 설정

  • 개발 Branch PIPELINE: 단위 테스트, 통합 테스트, code 품질 검사, 빌드 검증, 개발 환경에 배포합니다.
  • 릴리스 branch pipeline: 전체 테스트 스위트, 보안 스캔, 릴리스 후보 생성 및 스테이징 환경에 배포합니다.
  • 메인 branch pipeline: 유효성 검사 테스트, 버전 관리, 프로덕션 빌드 생성, 프로덕션에 배포, 및 릴리스 태그를 생성합니다.

트렁크 기반 CI/CD 설정

  • : 빠른 단위 테스트, __CAPGO_KEEP_0__ 스타일 체크, 빌드 확인 및 미리보기 환경에 배포합니다.: Focuses on quick unit tests, code style checks, build verification, and deployment to a preview environment.
  • :彻底한 자동화 테스트, 보안 스캔, 프로덕션 빌드 생성, 점진적 배포 및 자동 롤백 기능을 제공합니다.__CAPGO_KEEP_0__

Capgo __CAPGO_KEEP_0__ Live Update Dashboard 인터페이스

Capgo Live Update Dashboard Interface

To Capgo을 CI/CD 설정에 실시간으로 업데이트를 추가하려면 Capgo을 다음과 같이 통합할 수 있습니다:

Capgo은 GitHub Actions, GitLab CI, Jenkins 실시간 업데이트, 단계별 출시, 즉시 롤백을 Git Flow 및 Trunk-Based pipeline 모두에서 활성화하려면 __CAPGO_KEEP_0__을 사용할 수 있습니다. 또한 Apple 및 Google의 요구 사항을 충족하며 cloud 및 self-hosted 배포를 모두 지원합니다. [1].

요약 및 권장 사항

팀의 규모와 CI/CD 성숙도에 따라 아래 표에 나열된 워크플로우를 선택하세요.

시나리오Git Flow트렁크 기반
팀 크기50명 이상의 개발자50명 미만의 개발자
릴리즈 주기주간 또는 월간일주일 또는 다중 일주일
테스트 및 QA전통 QA 주기자동화 테스트에 집중
배포 모델다중 버전, 전통클라우드 네이티브, 컨테이너화
__CAPGO_KEEP_0__conservative한 규제 설정빠른 feedback를 위한 진보적인 설정
  • 작은 팀에서 Trunk-Based Development을 시작하고, 그룹을 확장하세요. CI/CD pipeline이 완전히 자동화되기 전에 전환하세요.
  • 일관적인 code 리뷰를 유지하고, 두 가지 워크플로우 모두에서 기능 토글을 사용하세요. pipeline 설정을 워크플로우와 일치시키세요.

일부 팀은 이러한 접근 방식을 혼합할 수 있습니다 - Git Flow를 사용하여 주요 릴리스를 관리하는 동안 Trunk-Based Development를 사용하여 기능 배포를 관리할 수 있습니다. CI/CD를 적절하게 통합하고 테스트를 자동화하고 팀을 같은 페이지에 유지하는 것이 성공의 핵심입니다.

Git Flow vs Trunk-Based Development CI/CD

만약 __CAPGO_KEEP_0__를 사용하고 있다면 Git Flow vs Trunk-Based Development CI/CD CI/CD 자동화 계획을 위해 연결하세요. __CAPGO_KEEP_0__ CI/CD Capgo CI/CD for the product workflow in Capgo CI/CD, Capgo Native Builds Capgo Native Builds를 위한 제품 워크플로우 Capgo Integrations Capgo Integrations를 위한 제품 워크플로우 CI/CD Integration CI/CD Integration의 구현 세부 사항, 그리고 GitHub Actions Integration GitHub Actions Integration의 구현 세부 사항.

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

웹 레이어 버그가 실시간으로 활성화되었을 때, 앱 스토어 승인까지 며칠 기다리지 않고 Capgo를 통해 패치를 배포하세요. 사용자는 배경에서 업데이트를 받으면서 네이티브 변경 사항은 일반적인 리뷰 경로를 유지합니다.

시작하기

최신 블로그 게시물

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