dev-sohee 님의 블로그
Git Flow: 소프트웨어 개발의 새로운 표준 본문
Git Flow는 Git을 기반으로 한 브랜치 관리 모델로, 소프트웨어 개발에서 효율적인 버전 관리와 협업을 위해 등장했습니다. Git이 등장하기 전의 버전 관리 시스템(VCS)은 여러 개발자가 동시에 작업하는 데 제한이 있었고, 분기 관리가 불편했습니다. 소프트웨어 개발이 복잡해짐에 따라 여러 기능을 동시에 개발하고, 버그를 수정하며, 릴리스를 관리하는 일이 점점 더 어려워졌습니다. 팀원들이 동시에 작업할 때 충돌을 방지하고 체계적으로 관리할 수 있는 방법이 필요했습니다. Git Flow는 이러한 요구를 충족하기 위해 만들어졌습니다.
Git Flow에서는 총 5개의 브랜치를 사용합니다. 각 브랜치에 대해 간단하게 알아보도록 하겠습니다.
**브랜치란? : Git에서 코드의 독립적인 작업을 수행할 수 있도록 만들어진 분기점입니다. Git은 버전 관리 시스템으로, 브랜치를 사용하여 여러 개발자가 동시에 작업하면서도 서로의 변경 사항에 영향을 주지 않도록 합니다.
- master: 항상 배포 가능한 상태를 유지하며 실제 제품이 배포되는 브랜치입니다. master에 머지가 된다는 것은 프로덕트에 적용하는 것을 의미합니다.
- develop: 다음 릴리스를 위한 통합 브랜치입니다. 모든 기능 개발이 완료되면 이 브랜치에 머지됩니다.
- feature: 새 기능을 개발하는 브랜치입니다.
- release: 실제 프로덕트로 배포하기 전에, 최종 점검을 하기 위한 브랜치입니다.
- hotfix: 배포된 버전에서 발생한 긴급한 버그를 수정하기 위한 브랜치입니다.
위의 그림으로는 각 브랜치의 기능과 전체적인 흐름에 대한 감이 잘 안올 수 있습니다. 아래 그림은 기존에 있는 레포지터리에 새 기능을 추가할 때 사용하는 Git Flow 시나리오입니다.
develop에서 feature 브랜치를 생성하고, 기능 개발이 끝나면 develop에 머지합니다. 그 이후에 develop을 베이스 브랜치로 release 브랜치를 생성하게 되는데 만약 QA 과정 중에 버그가 발생한다면 release 브랜치에서 fix한 후 커밋합니다. 그 이후 QA가 종료되면 release를 master, develop으로 각각 머지합니다. 그 이후에 master에서 버전을 태깅하고 배포합니다.
다음은 버그 수정에 대한 시나리오입니다. 프로덕션에서 버그가 발생되어 버그를 수정하는 경우에는 hotfix 브랜치를 사용합니다.
master에서 hotfix 브랜치를 생성하고, 해당 브랜치에서 버그를 픽스한 후에 master, develop으로 각각 머지합니다. 그 이후에 master에서 버전을 태깅하고 배포합니다.
Git Flow의 가치
- 구조적이고 명확한 브랜치 관리: Git Flow는 기능 개발, 릴리스 준비, 긴급 수정 등 각 작업의 목적에 맞게 브랜치를 나누어 관리할 수 있도록 해줍니다. 이는 작업 흐름을 명확히 하고 혼란을 줄입니다.
- 효율적인 협업: 여러 개발자가 독립적으로 작업할 수 있어, 팀원 간의 충돌을 최소화합니다. 각자 작업한 내용을 쉽게 통합할 수 있습니다.
- 릴리스 및 버전 관리의 용이성: 릴리스를 준비하고 버그를 수정하는 과정이 체계화되어 있어, 배포 준비와 안정성을 높일 수 있습니다. 특정 버전의 기능과 수정 사항을 명확히 관리할 수 있습니다.
- 재사용성과 확장성: Git Flow는 기존에 작업한 브랜치를 기반으로 새로운 기능이나 수정 작업을 쉽게 진행할 수 있게 해주며, 팀이 성장함에 따라 프로세스를 확장할 수 있습니다.
- 문서화와 기록 유지: 각 브랜치는 특정 목적과 이력을 가지고 있으므로, 프로젝트의 변화 과정을 명확히 기록할 수 있습니다. 이를 통해 문제 발생 시 원인을 추적하고 해결하기 용이합니다.
Git Flow는 브랜치 관리에 대한 명확한 구조를 제공하여, 복잡한 프로젝트에서도 각 작업의 목적을 분명히 할 수 있다는 점과 새로운 기능이나 버그를 수정할 때, 기존의 작업 흐름을 방해하지 않고 안전하게 개발할 수 있다는 점이 가장 큰 장점입니다. 이를 통해 프로젝트의 진행 상황을 쉽게 파악할 수 있고 문제 발생 시 빠르게 원인을 찾는 데 큰 도움이 됩니다. 보통 머지할 때는 Request를 만들어서 개발자들간에 코드 리뷰를 하는데 코드 리뷰와 관련된 팁들도 추후에 알아보겠습니다.
'CS' 카테고리의 다른 글
문자 인코딩의 진화, ASCII, 유니코드, UTF-8, UTF-16 (0) | 2024.07.19 |
---|