Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Journey of Dash's release-cycle

Buzzvil
January 28, 2022

Journey of Dash's release-cycle

By Luke

Buzzvil

January 28, 2022
Tweet

More Decks by Buzzvil

Other Decks in Programming

Transcript

  1. Journey of dash’s release-cycle
    With Trunk base development(TBD)
    Copyright ⓒ All Right Reserved by Buzzvil

    View Slide

  2. Copyright ⓒ All Right Reserved by Buzzvil
    Once upon a time

    View Slide

  3. Copyright ⓒ All Right Reserved by Buzzvil

    View Slide

  4. Copyright ⓒ All Right Reserved by Buzzvil
    Speed

    View Slide

  5. Copyright ⓒ All Right Reserved by Buzzvil
    Feature branch -> PR -> master -> staging ->
    production

    View Slide

  6. Copyright ⓒ All Right Reserved by Buzzvil

    View Slide

  7. Copyright ⓒ All Right Reserved by Buzzvil
    문제점들
    - 피쳐단위로 QA를 진행해야 하기 때문에 리그레이션 테스트를 진행하기 어려움
    - 새로추가되는 기능들에 대한 커뮤니케이션의 어려움
    - QA를 하긴했지만 테스트가 부족한 기능들.

    View Slide

  8. Copyright ⓒ All Right Reserved by Buzzvil
    Release cycle

    View Slide

  9. Copyright ⓒ All Right Reserved by Buzzvil
    Release cycle 도입으로 얻고 싶었던점들
    - 스프린트와 맞물려서 돌아가는 릴리즈 주기
    - 산발적으로 일어나는 QA 요청을 릴리즈 주기에 맞추어 QA리소스 최적화를
    하고 싶었음
    - 주기적인 배포를 통한 커뮤니케이션 비용 최소화
    - + 너무 어렵지 않은 워크 프로세스야 한다.

    View Slide

  10. Copyright ⓒ All Right Reserved by Buzzvil
    Trunk base development에서 제시하는 개발 스타일
    - Committing straight to the trunk
    - Short-Lived Feature Branches
    - Patch Review System

    View Slide

  11. Copyright ⓒ All Right Reserved by Buzzvil
    Committing straight to the trunk
    - 작은 팀에게 어울림
    - 코드 리뷰 시스템보단 페어프로그래밍으로 코드를 검증하는 방식을 추천
    - 누군가 빌드를 깰수도 있는 커밋을 푸시할 수도 있음

    View Slide

  12. Copyright ⓒ All Right Reserved by Buzzvil
    Short-Lived Feature Branches
    - 기존에 사용하던 익숙한 방식
    - 가능한 작은 단위의 피쳐 브랜치를 생성 후 Pull request 리뷰를 통해 마스터로
    머지된다.

    View Slide

  13. Copyright ⓒ All Right Reserved by Buzzvil
    Patch Review System (Continuous code review)
    - 엔터프라이즈급에 어울림
    - Gerrit, Rietveld, Phabricator 와 같은 서비스를 이용

    View Slide

  14. Copyright ⓒ All Right Reserved by Buzzvil
    배포 방법
    - Release from trunk
    - Branch for release

    View Slide

  15. Copyright ⓒ All Right Reserved by Buzzvil
    Release from trunk
    Trunk에서 직접 배포하는 방법
    릴리즈 주기가 짧은팀에게 적합

    View Slide

  16. Copyright ⓒ All Right Reserved by Buzzvil
    Branch for release
    - 릴리즈 브랜치를 사용하는 방법

    View Slide

  17. Copyright ⓒ All Right Reserved by Buzzvil
    Observed habits
    - No Code Freeze
    - Quick Reviews
    - Chasing HEAD
    - Running the build locally
    - Always Release Ready

    View Slide

  18. 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

    View Slide

  19. Copyright ⓒ All Right Reserved by Buzzvil
    Current dash release cycle
    릴리즈 브랜치
    생성

    View Slide

  20. Copyright ⓒ All Right Reserved by Buzzvil
    Dash versioning
    대시에서는 SemVer(Semantic versioning) 의 포멧을 저희
    유즈케이스에 맞게 변경해서 사용하고 있습니다.
    2.32.0-beta.1
    Major.Minor.Patch-Pre releasetag.deploy_number

    View Slide

  21. Thank you!
    Please contact design team if any question!
    Copyright ⓒ All Right Reserved by Buzzvil

    View Slide