Journey of dash’s release-cycle
With Trunk base development(TBD)
Copyright ⓒ All Right Reserved by Buzzvil
Slide 2
Slide 2 text
Copyright ⓒ All Right Reserved by Buzzvil
Once upon a time
Slide 3
Slide 3 text
Copyright ⓒ All Right Reserved by Buzzvil
Slide 4
Slide 4 text
Copyright ⓒ All Right Reserved by Buzzvil
Speed
Slide 5
Slide 5 text
Copyright ⓒ All Right Reserved by Buzzvil
Feature branch -> PR -> master -> staging ->
production
Slide 6
Slide 6 text
Copyright ⓒ All Right Reserved by Buzzvil
Slide 7
Slide 7 text
Copyright ⓒ All Right Reserved by Buzzvil
문제점들
- 피쳐단위로 QA를 진행해야 하기 때문에 리그레이션 테스트를 진행하기 어려움
- 새로추가되는 기능들에 대한 커뮤니케이션의 어려움
- QA를 하긴했지만 테스트가 부족한 기능들.
Slide 8
Slide 8 text
Copyright ⓒ All Right Reserved by Buzzvil
Release cycle
Slide 9
Slide 9 text
Copyright ⓒ All Right Reserved by Buzzvil
Release cycle 도입으로 얻고 싶었던점들
- 스프린트와 맞물려서 돌아가는 릴리즈 주기
- 산발적으로 일어나는 QA 요청을 릴리즈 주기에 맞추어 QA리소스 최적화를
하고 싶었음
- 주기적인 배포를 통한 커뮤니케이션 비용 최소화
- + 너무 어렵지 않은 워크 프로세스야 한다.
Slide 10
Slide 10 text
Copyright ⓒ All Right Reserved by Buzzvil
Trunk base development에서 제시하는 개발 스타일
- Committing straight to the trunk
- Short-Lived Feature Branches
- Patch Review System
Slide 11
Slide 11 text
Copyright ⓒ All Right Reserved by Buzzvil
Committing straight to the trunk
- 작은 팀에게 어울림
- 코드 리뷰 시스템보단 페어프로그래밍으로 코드를 검증하는 방식을 추천
- 누군가 빌드를 깰수도 있는 커밋을 푸시할 수도 있음
Slide 12
Slide 12 text
Copyright ⓒ All Right Reserved by Buzzvil
Short-Lived Feature Branches
- 기존에 사용하던 익숙한 방식
- 가능한 작은 단위의 피쳐 브랜치를 생성 후 Pull request 리뷰를 통해 마스터로
머지된다.
Slide 13
Slide 13 text
Copyright ⓒ All Right Reserved by Buzzvil
Patch Review System (Continuous code review)
- 엔터프라이즈급에 어울림
- Gerrit, Rietveld, Phabricator 와 같은 서비스를 이용
Slide 14
Slide 14 text
Copyright ⓒ All Right Reserved by Buzzvil
배포 방법
- Release from trunk
- Branch for release
Slide 15
Slide 15 text
Copyright ⓒ All Right Reserved by Buzzvil
Release from trunk
Trunk에서 직접 배포하는 방법
릴리즈 주기가 짧은팀에게 적합
Slide 16
Slide 16 text
Copyright ⓒ All Right Reserved by Buzzvil
Branch for release
- 릴리즈 브랜치를 사용하는 방법
Slide 17
Slide 17 text
Copyright ⓒ All Right Reserved by Buzzvil
Observed habits
- No Code Freeze
- Quick Reviews
- Chasing HEAD
- Running the build locally
- Always Release Ready
Slide 18
Slide 18 text
Copyright ⓒ All Right Reserved by Buzzvil
You're doing it wrong
- Cherry-pick of bug fixes from release branches to the trunk
- Merging rather than cherry-pick to/from a release branch
- Duration of ‘short-lived’ feature branches
- Numbers of developers on ‘short-lived’ feature branches
- Keeping a single release branch
- Merge from one release branch to another release branch
- Merge everything back from a release branch at the end of the
release branch
Slide 19
Slide 19 text
Copyright ⓒ All Right Reserved by Buzzvil
Current dash release cycle
릴리즈 브랜치
생성
Slide 20
Slide 20 text
Copyright ⓒ All Right Reserved by Buzzvil
Dash versioning
대시에서는 SemVer(Semantic versioning) 의 포멧을 저희
유즈케이스에 맞게 변경해서 사용하고 있습니다.
2.32.0-beta.1
Major.Minor.Patch-Pre releasetag.deploy_number
Slide 21
Slide 21 text
Thank you!
Please contact design team if any question!
Copyright ⓒ All Right Reserved by Buzzvil