Trunk based
Trunk based 전략이란?
브랜치 하나를 기본으로 두고 이를 기준으로 작은 단위의 커밋을 하고 잦은 병합을 하는 버젼 관리 기법입니다.
트렁크 기반 개발은 모든 개발자가 기본 코드에 액세스할 수 있으므로 보다 개방적인 모델입니다.
이를 통해 팀은 빠르게 반복하고 CI/CD를 구현할 수 있습니다 .
조건
- 소규모 배치 작업
- 모든 개발자가 main 브랜치에 접근할 수 있다.
- 브랜치 커밋시 CI와 테스트 코드가 동작해야한다.(실패하면 롤백)
- 브랜치 개수 3개 이하
- 하루에 한번 이상 메인 병합
- 빌드 & CI 프로세스가 수 분 안으로 실행되어야한다.
장점
- 병합 충돌이 적게 난다.
- 작은 단위의 커밋은 코드 리뷰 하기 좋다.
- main에는 항상 배포 가능한 코드가 존재한다.
한계
- 작업을 충분히 작게 나누기 어렵다.
- 코드 검토 프로세스가 너무 많고 어렵다.
- 코드 리뷰가 동시 다발적으로 이뤄진다. => 리뷰어 파악 불가 => 오랜 기간 대기
소규모 배치 작업
- Independent(독립적). 작업 배치를 다른 배치와 가능한 한 독립적으로 만들어서 팀이 다른 작업 배치와 독립적으로 해당 배치를 배포하고 검증할 수 있도록 합니다.
- Negotiable(절충 가능). 각 작업 배치는 반복 가능하며 피드백이 수신되면 절충할 수 있습니다.
- Valuable(가치 있는). 개별 작업 배치가 유용하며 이해관계자에게 가치를 제공합니다.
- Estimable(추정 가능한). 범위를 쉽게 추정할 수 있는 작업 배치에 대한 충분한 정보가 있습니다.
- Small(소규모). 스프린트 중에 몇 시간에서 며칠을 의미하는 작은 시간 단위로 작업 배치를 완료할 수 있어야 합니다.
- Testable(테스트 가능). 각 작업 배치를 사용자가 기대하는 방식으로 작업하면서 테스트, 모니터링, 검증할 수 있습니다.
작은 작업의 기준 = 1시간 이내로 테스트 후 배포