소프트 스킬 · 심화
Trunk-based Development란 무엇이며, Git Flow와 어떻게 다른가요?
힌트 · 짧은 브랜치 수명, Feature Flag로 미완성 기능 숨기기, 지속적 통합(CI)과의 궁합을 설명해보세요.
TrunkContinuous IntegrationFeature Toggle짧은 생명 주기 브랜치배포 빈도
모범답안
Trunk-based Development는 모든 개발자가 'trunk'라는 단일 메인 브랜치에 직접 또는 매우 짧은 수명 주기의 피처 브랜치를 통해 자주 커밋하는 개발 방식입니다. 이를 통해 지속적인 통합(CI)을 극대화하고, 작은 단위의 변경 사항을 빠르게 배포할 수 있습니다.
Git Flow와 가장 큰 차이점은 브랜치 전략입니다. Git Flow는 develop, feature, release, hotfix 등 여러 개의 영구적인 브랜치를 사용하여 복잡한 릴리스 관리를 하지만, Trunk-based Development는 'trunk' 브랜치 하나에 집중합니다. 미완성 기능은 Feature Flag(또는 Feature Toggle)를 사용하여 'trunk'에 병합하더라도 사용자에게 노출되지 않도록 관리합니다. 이 방식은 배포 빈도를 높이고 통합 문제를 조기에 발견하는 데 유리합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 Git / 협업 면접 질문
- git tag와 Release 관리 방법을 설명해주세요.
- git bisect를 이용한 버그 원인 커밋 찾기 방법을 설명해주세요.
- 모노레포(Monorepo)와 멀티레포(Multi-repo)의 차이와 장단점을 설명해주세요.
- GitHub Actions를 이용한 CI/CD 파이프라인 구성 방법을 설명해주세요.
- Git의 객체 데이터베이스를 구성하는 blob, tree, commit 객체가 각각 무엇을 저장하며 서로 어떻게 참조하는지 설명해주세요. 동일한 내용의 파일이 여러 디렉터리에 존재할 때 blob 객체는 어떻게 처리되나요?
- git add를 실행했을 때 Git 내부적으로 어떤 일이 일어나는지 인덱스(index) 파일과 blob 객체 생성 관점에서 설명해주세요. 작업 디렉터리, 인덱스, 마지막 커밋 트리 세 가지 상태를 git이 어떻게 비교하나요?