메인 콘텐츠로 건너뛰기

CI/CD를 위한 Git Flow와 트렁크 기반 개발

CI/CD를 위한 Git Flow와 트렁크 기반 개발의 차이점을 비교하고 강점과 약점을 강조합니다.

CI/CD를 위한 Git Flow와 트렁크 기반 개발

Git Flow와 트렁크 기반 개발을 선택하는 것 Git Flow Git Flow와 트렁크 기반 개발(TBD)은 CI/CD 워크플로에 큰 영향을 줄 수 있습니다. 여기서 빠른 요약을 제공합니다.

  • Git Flow: 구조화된 버전 관리 환경에 적합합니다. 여러 가지 branch를 사용합니다. main, develop, feature, release, 그리고 hotfix. 큰 팀, 느린 릴리스 주기 및 엄격한 QA 프로세스에 적합합니다.
  • 트렁크 기반 개발: 단일 메인 branch에 짧은 라이브 기능 branch를 사용합니다. 작은 팀, 빠른 릴리스, 강력한 자동화 테스트에 적합합니다.

빠른 비교:

Aspect Git Flow 트렁크 기반 개발
Branch Complexity 다양한 장기적인 branch 단일 branch, 짧은 branch
릴리즈 주기 예약된 릴리즈 연속적인 배포
팀 크기 대형 팀 작은 팀
테스트 주기 테스트 자동화 테스트
배포 위험 낙관적 릴리스 낙관적 릴리스
되돌리기 컨텍스트: Capgo 솔루션 마케팅 페이지. 역할: 짧은 UI 레이블 또는 네비게이션 아이템. 느린

빠른주요 점

: 구조화된 느린 워크플로우를 위해 Git Flow를 사용하고 속도와 유연성을 위해 TBD를 사용하십시오. 두 경우 모두 성공하기 위해 강력한 CI/CD pipeline이 필요합니다.

유튜브 비디오 플레이어 Git Flow

워크플로 기본 사항들

Git Flow는 개발을 위해 다섯 가지 branch 유형을 사용합니다: main, develop, feature, release, 그리고 hotfix. 이 구조는 릴리스 관리 및 병렬 개발을 효과적으로 관리하는 데 도움이 됩니다.

Git Flow Branch 구조

Branch 유형 목적 병합 대상
메인 code이 프로덕션 준비 완료 N/A
개발 __CAPGO_KEEP_0__에서 기능을 통합하고 기능 branch의 기본으로 사용 N/A
기능 __CAPGO_KEEP_0__에서 생성된 개별 기능을 구축하기 위해 사용 __CAPGO_KEEP_0__
릴리즈 __CAPGO_KEEP_0__에서 최종 테스트 및 버전화 준비; __CAPGO_KEEP_0__에서 생성 main & develop
production 문제를 빠르게 해결하는 방법; main에서 생성 main & develop Git Flow의 장점

여러 기능을 동시에 개발할 수 있어 충돌이 발생하지 않습니다.

  • release branch는 최종 테스트 및 버전 준비를 위한 전용 공간을 제공하여 develop branch는 진행 중인 작업을 위해 열어둡니다.
  • develop production 문제를 해결하기 위한 branch로 production 문제를 빠르게 해결할 수 있습니다. 개발 작업을 중단하지 않고 다른 개발 작업을 진행할 수 있습니다.
  • Git Flow의 단점 branch 관리의 복잡성

Hotfix

  • Fixes production issues quickly; created from mainGit Flow와 트렁크 기반 개발의 차이점
  • 배포 속도 저하형식적인 릴리즈 프로세스는 더 단순한 워크플로우보다 배포 속도를 늦추는 경향이 있습니다.
  • 유지 보수 증가각 브랜치에는 전용 PIPELINE 설정이 필요하여 유지 보수 부담이 증가합니다.

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

트렁크 기반 개발의 기초

트렁크 기반 개발(TBD)은 주로 트렁크 또는 메인이라고 불리는 단일 메인 브랜치에 초점을 맞추고 있습니다. 이 접근 방식은 DevOps 관행과 지속적인 통합과 밀접하게 관련이 있습니다.

트렁크 기반 브랜치 구조

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

브랜치 유형 목적 수명
메인/트렁크 생산 준비가 된 중앙 branch code 영구
기능 branch 개별 변경 사항을 위한 임시 branch 단기
릴리즈 branch 릴리즈 전에 최종 조정을 위한 branch 임시

개발자들은 주로 일일로 여러 번 메인 branch에 작은 incremental 변경 사항을 병합합니다. 이로 인해 지속적인 테스트가 촉진되고, 충돌을 신속하게 해결할 수 있습니다.

트렁크 기반 이점

CI/CD 및 DevOps 작업을 하는 팀에게 TBD는 다음과 같은 이점을 제공합니다:

  • 병합 충돌이 적다: 정기적인 병합으로 충돌을 관리할 수 있습니다.
  • 빠른 피드백: 자동화된 빌드는 매 병합 시 버그를 빠르게 잡습니다.
  • 간단한 PIPELINE: 단일 branch는 CI/CD 설정의 복잡성을 줄입니다.
  • 팀 협업: 공유된 트렁크는 팀이 일치하는 것을 보장합니다.

이 구조는 단순화된 워크플로를 만듭니다. 다음 섹션에서 Git Flow와의 비교를 위해 단계를 설정합니다.

트렁크 기반 제한 사항

TBD는 강점이 있지만 팀이 해결해야 하는 제약 사항도 있습니다:

Challenge 영향 해결 방법
Code 안정성 main에 영향을 미치는 변경 사항의 위험 강력한 자동화 테스트 사용
팀 협력 중복 작업이 장애를 일으킬 수 있음 기능 플래그와 작은 커밋을 빈번하게 사용
학습 곡선 긴 수명 branch에서 전환 훈련 제공하고 점진적으로 도입
규모 증대 문제 대규모 팀에서 빈번한 병합이 팀을 압도할 수 있다 code 검토를 철저히 강제하라

팀 내에서 열린 의사소통과 자동화된 테스트가-solid 하다면 TBD를 성공적으로 채택할 수 있다

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

Git Flow와 Trunk-Based 개발이 주요 영역에서 어떻게 비교되는지 알아보자

기능 비교 표

영역 Git Flow Trunk-Based 개발
Branch 복잡도 여러 개의 장기 운영 중인 branch 단일 메인 branch와 짧은 branch
릴리즈 주기 예약된 릴리즈 연속적인 배포
팀 크기 큰 팀에 적합 __CAPGO_KEEP_0__ 리뷰 프로세스
Code Review Process 작은, 빈번한 변경 사항에 대한 지속적인 리뷰 테스트 요구 사항
사이클 종료 시 테스트에 집중 __CAPGO_KEEP_0__ 자동화 테스트에 의존하는 정도가 높습니다.
학습 곡선 여러 branch로 인해 더 복잡합니다. 단순한 워크플로우지만 강력한 테스트가 필요합니다.
배포 위험 단계별 릴리즈로 인해 낮은 위험 빈번한 업데이트로 인해 높은 위험
복구 시간 느린 롤백 프로세스 빠른 복원 기능

각 워크플로우 사용 시기

Git Flow 기업급 프로젝트에 적합한 버전 관리 방식입니다. 여러 버전을 관리하고 공식 QA 또는 규정 준수 요구가 있는 프로젝트에 적합합니다.

트렁크 기반 개발 속도와 유연성을 우선하는 팀과 프로젝트에 적합합니다.

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

두 가지 방법을结合하여 사용하는 팀도 있습니다. 공식 릴리스 트랙이 있는 프로젝트에 Git Flow를 사용하고, 코어 서비스에 트렁크 기반 개발을 사용하는 팀이 있습니다.

다음 글: CI/CD PIPELINE을 설정하는 방법

CI/CD PIPELINE 설정

Git Flow CI/CD PIPELINE 설정

  • 개발 Branch Pipeline: 단위 테스트, 통합 테스트, code 품질 검사, 빌드 검증, 개발 환경에 배포합니다.
  • Release Branch Pipeline: 전체 테스트套件 실행, 보안 스캔, 릴리스 후보생성, 스테이징 환경에 배포합니다.
  • Main Branch Pipeline: 유효성 테스트, 버전 관리, 프로덕션 빌드 생성, 프로덕션에 배포, 릴리스 태그합니다.

트렁크 기반 CI/CD 설정

  • 기능 Branch Pipeline: 빠른 단위 테스트, code 스타일 검사, 빌드 검증, 미리보기 환경에 배포합니다.
  • Main Branch Pipeline: 완전한 자동화 테스트, 보안 스캔, 프로덕션 빌드 생성, 점진적 배포, 자동 롤백 기능을 제공합니다.

Capgo CI/CD 통합

Capgo Live Update Dashboard Interface

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

Capgo는 Capgo와 함께 작동합니다. GitHub 액션, GitLab CI그리고 Jenkins 실시간 업데이트, 단계별 롤아웃 및 즉시 롤백을 Git Flow 및 트렁크 기반 PIPELINE 모두에서 활성화하려면 __CAPGO_KEEP_0__를 사용할 수 있습니다. 또한 Apple 및 Google의 요구 사항을 충족시키며 cloud 및 self-hosted 배포를 지원합니다. [1].

결과 요약 및 추천 사항

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

시나리오 Git Flow 트렁크 기반
팀 크기 50명 이상의 개발자 50명 미만의 개발자
릴리즈 주기 주간 또는 월간 일주일 또는 일일
테스트 및 QA 기존 QA 주기 자동화 테스트에 집중
배포 모델 다중 버전, 전통적인 클라우드 네이티브, 컨테이너화
위험 수용도 보수적, 규제된 환경 진보적, 빠른 피드백
  • 작은 팀에서부터 트렁크 기반 개발을 시작하고, 그룹을 확장할 때까지. CI/CD PIPELINE이 완전히 자동화되기 전에 전환하세요.
  • code 검토를 일관되게 유지하고, 두 가지 워크플로우 모두에서 기능 토글을 사용하세요. 선택한 워크플로우에 맞춰 PIPELINE 설정을 조정하세요.

일부 팀은 이러한 접근 방식을 혼합할 수 있습니다 - 주요 릴리스에 Git Flow를 사용하면서 기능 배달에 트렁크 기반 개발을 사용합니다. 어떤 경로를 선택하더라도 CI/CD가 적절하게 통합되고, 테스트가 자동화되고, 팀이 동일한 페이지에 있도록 유지되면 성공할 수 있습니다.

Git Flow vs Trunk-Based for CI/CD에서 계속

Git Flow vs Trunk-Based for CI/CD를 사용하여 CI/CD 자동화 계획을 수립하고, 그것을 Git Flow vs Trunk-Based for CI/CD Git Flow vs Trunk-Based for CI/CD Capgo CI/CD Capgo CI/CD Capgo Native Builds Capgo Native Builds Capgo Integrations Capgo Integrations CI/CD 통합 __CAPGO_KEEP_0__ CI/CD GitHub Actions 통합 for the implementation detail in GitHub Actions Integration.

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

웹 레이어 버그가 실시간으로 실행 중일 때, 앱 스토어 승인 대기 없이 Capgo를 통해 패치를 배포합니다. 사용자는 배경에서 업데이트를 받으며 네이티브 변경 사항은 일반적인 검토 경로에 남아 있습니다.

마틴의 인간 지원

시작하기

최신 블로그

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