Git Branch 전략이라고 하면 Git-flow, Github-flow, Gitlab-flow 전략들을 떠올리나, 최근 영어로 검색했을 때 trunk-based development에 대한 글들과 feautrue-based development를 나눠서 비교하는 아티클들이 꽤나 많이 보였다. 새롭게 떠오르는 trunk-based 전략에 대해 간략히 살펴보고자 한다.
Trunk-Based Development란
개발자가 핵심 trunk 또는 main branch와 같은 단일 브랜치에서 모든 작업을 수행하고 병합하는 버전 관리 방법

특징
짧은 개발 주기
- 개발자는 코드 변경 사항을 main branch에 바로 push 할 수 있다.
- 그렇기에 더 자주, 그리고 더 작은 단위로 코드를 변경할 수 있다.
- 빠른 테스트와 배포 가능
- 변경 사항 추적 용이
- 오랜 시간이 필요한 개발 건의 경우, main branch에서 새 branch를 checkout 받아 작업한 후 코드 리뷰를 거쳐 main branch로 merge 한다.
- checkout한 브랜치는 짧은 생명 주기를 가지며, 대개 2~3일 이내에 완료된다.
production-ready
- Trunk-based 전략을 사용 시 주 브랜치는 항상 production-ready 상태여야 한다.
- 오류가 있는 코드는 전체 빌드를 깨뜨릴 수 있기에 main branch로 push하기 전 철저히 테스트해야 한다.
CI
- 진정한 의미의 CI를 수행할 수 있다.
- 모든 코드 변경이 주 브랜치로 직접 통합되므로 코드 변경 사항을 컴파일하고 자동화된 테스트를 실행하여 변경 사항이 주 브랜치를 깨뜨리지 않는지 확인할 수 있다.
장점
지속적인 코드 통합
- 작은 단위의 변경을 main branch에 주기적으로 통합함으로써 실시간으로 빠르게 코드 변경이 통합될 수 있다. 개발 주기를 단축하고 새로운 기능을 신속하게 배포할 수 있습니다.
효율적인 코드 리뷰
- 생명 주기가 길고 코드 변경이 큰 feature branch에 비해 코드 리뷰가 더 효율적이고 용이하다.
연속적인 프로덕션 코드 배포
- 자동화된 테스트, 코드 커버리지 및 코드 리뷰를 통해 main branch를 언제든 배포할 준비가 되었음을 보장해준다. 따라서 빈번한 프로덕션 배포 및 릴리스에 도움이 된다.
CI/CD
- 지속적 통합과 함께 개발자의 commit 후 자동 테스트가 실행되는 것을 보장하여 프로젝트가 언제나 작동함을 보장한다.
적용 시 체크 사항
✅ CI/CD 구축
지속적 통합 및 지속적 배포 파이프라인을 구축하여 변경 사항이 자동으로 빌드되고 테스트되며, 프로덕션 환경에 안전하게 배포될 수 있도록 한다. 강력한 CI 문화를 구축하는 것은 Trunk-based development 전략에 있어 중요한 요소이다.
✅ 자동화된 테스트 프로세스 구축
자동화된 테스트 스위트를 통해 코드 변경이 안정적이며 예상대로 작동하는지 확인하고, 빠른 피드백을 얻어 빠른 수정이 가능하도록 한다. CI 실천을 위해 자동화된 테스트는 필수이다.
✅ Code Review 강화
코드 리뷰를 통해 코드 품질을 유지하고, 팀원 간 의사소통을 강화하여 통합 전 오류를 사전에 감지한다.
✅ Feature Flags 사용
새로운 기능을 코드에 통합하고, 그 기능을 활성화 또는 비활성화할 수 있는 feature flags를 도입하여 실제 배포 전에 기능을 숨기거나 활성화할 수 있다.
Reference
https://www.atlassian.com/continuous-delivery/continuous-integration/trunk-based-development
Trunk-based Development | Atlassian
Learn about trunk-based development, a version control management practice where developers merge small, frequent updates to a core “trunk” or main branch
www.atlassian.com
https://www.split.io/blog/a-complete-guide-to-trunk-based-development/
A Complete Guide to Trunk-Based Development
As the sector has expanded, so has the focus on trunk-based development, elevating it from a niche strategy to a favored industry approach.
www.split.io
'Etc.' 카테고리의 다른 글
[Sentry] Exception Handler를 거치기 전 Sentry로 에러 전달 및 Exception 필터링 (Spring Boot) (0) | 2023.08.09 |
---|---|
[Sentry] Sentry Slack 연동 및 Logging 레벨 설정 (Spring Boot) (0) | 2023.08.07 |
[Sentry] Spring Boot에 Sentry 적용하기 (0) | 2023.08.01 |