협업을 위한 깃 : Trunk Based Development 전략!

data_jeong·2024년 2월 9일
0
post-thumbnail

Trunk Based Development (TBD)는 소프트웨어 개발에서 사용되는 소스 코드 버전 관리 전략 중 하나로, 빠르고 효율적인 개발 사이클을 가능하게 해주는 방법.

Trunk Based Development란?

Trunk Based Development는 모든 개발자가 하나의 공통된 코드 라인(일반적으로 'trunk' 또는 'master'라고 불림)에서 작업을 진행하는 개발 방식을 말합니다. 이 방식은 큰 기능 개발이나 수정 사항이 있을 때, 장기간 동안 분리된 브랜치에서 작업하는 대신, 짧은 주기의 브랜치를 만들어 빠르게 trunk에 병합(merge)하는 것을 목표로 합니다.

Trunk Based Development의 장점

  1. 통합의 단순화: 모든 개발자가 하나의 코드 라인에서 작업하기 때문에, 코드 통합 과정이 간소화되고 충돌 해결이 용이합니다.
  2. 지속적인 배포 준비: 코드 베이스가 항상 최신 상태로 유지되기 때문에, 언제든지 배포할 준비가 되어 있습니다.
  3. 피드백 주기 단축: 신속한 브랜치 병합을 통해, 변경 사항에 대한 팀 내부의 피드백을 빠르게 받을 수 있습니다.
  4. 팀 협업 강화: 공통된 목표를 가진 코드 라인에서 작업함으로써, 팀 내 협업이 강화됩니다.

깃헙에서 Trunk Based Development 사용하기

  1. 프로젝트 설정: 깃헙에서 새로운 저장소(repository)를 생성하고, main 브랜치를 기본 브랜치로 설정합니다. 이 main 브랜치가 'trunk' 역할을 하게 됩니다.
  2. 짧은 생명 주기 브랜치: 새 기능이나 버그 수정을 위해 작업할 때는, main 브랜치로부터 짧은 생명 주기를 가진 브랜치를 생성합니다. 예를 들어, feature/login-update 또는 bugfix/header-fix와 같은 이름으로 브랜치를 만듭니다.
  3. 자주 커밋하고 병합하기: 작업이 완료되면, 작업한 브랜치를 main에 자주 커밋하고 병합(merge)합니다. 이 과정에서 충돌이 발생할 수 있는데, 이를 신속하게 해결하여 코드 베이스를 최신 상태로 유지해야 합니다.
  4. 코드 리뷰: 병합하기 전에, 깃헙의 Pull Request(PR) 기능을 사용하여 코드 리뷰를 진행합니다. 동료 개발자가 코드를 검토하고, 피드백을 제공할 수 있습니다.

예시 사용법

1단계: 깃헙 저장소 설정하기

  1. GitHub에서 새 저장소를 생성합니다.

2단계: 개발 환경 준비하기

  • 깃 클라이언트를 사용하여 새 저장소를 로컬 시스템에 복제(clone)합니다.

3단계: 기능별 브랜치 작업 시작하기

  • 헤더 섹션 추가: main 브랜치에서 feature/header-section이라는 브랜치를 생성합니다. HTML과 CSS를 사용하여 사이트의 헤더를 개발한 후, 작업이 완료되면 main 브랜치로 병합(merge)합니다.
    git checkout -b feature/header-section
    # 헤더 섹션 작업 후
    git add .
    git commit -m "헤더 섹션 추가"
    git checkout main
    git merge feature/header-section
    
  • 포트폴리오 섹션 추가: 비슷한 방식으로 feature/portfolio-section 브랜치를 만들어 포트폴리오 섹션을 추가합니다.
  • 연락처 섹션 추가: feature/contact-section 브랜치를 통해 연락처 정보를 추가합니다.

4단계: Pull Request를 통한 코드 리뷰

  • 각 기능 브랜치에서 작업을 마치고 main 브랜치로 병합하기 전에, GitHub의 Pull Request(PR) 기능을 사용하여 코드 리뷰를 요청합니다.
  • 동료 개발자 또는 멘토에게 리뷰를 요청하고, 피드백을 받아 개선합니다.

5단계: 최종 병합과 배포

  • 모든 리뷰가 완료되고, 코드에 문제가 없다면 main 브랜치로 최종 병합합니다.
  • GitHub Pages 등을 사용하여 웹사이트를 배포합니다.

예시 시나리오!

데이터 분석 프로젝트 시나리오

프로젝트: 고객 이탈률 분석

팀 구성:

  • 팀장: 지훈
  • 데이터 분석가: 민지, 성민
  • 데이터 엔지니어: 현우

시나리오:

  1. 프로젝트 계획 수립:
    • 지훈(팀장)은 프로젝트 kick-off 미팅을 주재하여, 고객 이탈률 분석의 목표와 각 팀원의 역할을 명확히 합니다. Trunk Based Development 방식을 사용하여 데이터 분석 파이프라인을 구축할 것임을 공지합니다.
  2. 데이터 준비 및 전처리:
    • 현우(데이터 엔지니어)는 feature/data-preparation 브랜치를 생성하여 데이터 수집 및 전처리 작업을 시작합니다. 작업 완료 후 main 브랜치로 병합하기 전에 Pull Request를 생성하고, 민지와 성민(데이터 분석가)에게 코드 리뷰를 요청합니다.
  3. 모델 개발:
    • 민지와 성민은 각각 feature/model-development-minjifeature/model-development-seongmin 브랜치를 생성하여, 고객 이탈 예측 모델을 개발합니다. 서로 다른 모델링 기법을 시도한 후, 가장 성능이 좋은 모델을 선정하기 위해 코드 리뷰 세션을 가집니다.
  4. 모델 평가 및 선택:
    • 지훈(팀장)은 모델 평가 미팅을 주재하여, 팀원들이 개발한 모델의 성능을 비교 분석합니다. 결정된 최종 모델을 main 브랜치로 병합하고, 프로젝트의 다음 단계를 계획합니다.
  5. 배포 및 모니터링:
    • 현우는 feature/deployment 브랜치를 생성하여 모델 배포 준비를 합니다. 배포가 완료되면, 지훈은 프로젝트 회고 미팅을 통해 팀원들과 프로젝트 전반에 대한 피드백을 공유하고, TBD 전략의 효과성을 평가합니다.
profile
데이터를 주력으로 하는 잡부입니다!

0개의 댓글