SW의 이상적인 개발 프로세스는 'Waterfall' 방식입니다. 처음 설계한 완벽한 설계서를 기반으로 개발하는 프로세스입니다. 하지만 현실적으로 어려운 개발 모델이죠. 단순한 프로그램이 아닌 이상 소프트웨어의 요구사항은 매 번 바뀔 수 있습니다. 요구사항이 바뀌면 그 뒤의 모든 작업들이 변경되어야 하죠.
결국 소프트웨어 개발은 지속적으로 변경이 일어날 수밖에 없습니다. 요구사항의 변경이 있거나 혹은 운영 중에 버그가 발생한다면 개선을 위해 다시 전 프로세스를 돌아봐야 하죠. 결국 개발 프로세스는 [ 요구사항 - 디자인 - 이행 - 확인 - 유지 ] 이 반복되게 됩니다.
이러한 반복 작업에서 나타나는 변경점을 체계적으로 추적하고 관리하기 위해 '형상관리'가 필요합니다.
형상관리(SCM : Software Configuration Management)
: 소프트웨어의 개발 과정에서 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동
이러한 형상관리를 통해 프로젝트의 리스크를 최소화하고 소프트웨어의 품질을 확보할 수 있습니다. 이 때문에 형상관리의 중요성은 더욱더 높아지고 있습니다. 그렇다면 SW의 어떤 부분을 관리할까요?
SW형상관리는 SW 개발 모든 단계에서 발생하는 산출물을 대상으로 합니다. [서비스 정의서, 요구사항 명세서, 스토리보드, 와이어프레임, SW 설계문서, 소스코드, API 문서, 개발자 가이드 문서 등]이 있습니다.
산출물 중 소스코드를 관리하는 도구가 바로 'Git'입니다. 하지만 관리 도구가 'Git' 하나뿐은 아닙니다. [SVN, CVS, Git, Mercurial, BitKeeper, ClearCase 등] 여러 도구가 있는데요. 우리는 가장 대중적으로 이용되는 'Git'에 대해 알아보겠습니다.
'Git'은 여러 장점이 있습니다.
- 빠른 속도
- 단순한 구조
- 비선형적인 개발(수천 개 동시 다발적인 병렬 개발과 공유)
- 완벽한 분산(분산 집중형 버전 관리)
- Linux 커널과 같은 대규모 프로젝트에 유용
완벽한 분산? 이해하기가 좀 힘들 수 있어서 '분산'에 대해 알아보겠습니다.
형상관리 도구는 크게 2종류로 나뉘는데, '중앙 집중형 버전 관리'와 '분산 집중형 버전 관리'가 있습니다. 중앙 집중형 버전 관리 툴은 대표적으로 'SVN'이 있습니다.
중앙 집중형 버전 관리는 각각의 작업을 서버에 저장하는 방식입니다. 이러한 방식은 직관적이고 매우 간단합니다. 중요 정보가 서버에 저장되어 관리도 수월합니다. 하지만 네트워크가 끊기는 경우 협업이 불가능하며 서버에 문제가 발생 시 저장된 형상들에 문제가 생길 수 있습니다.
분산 집중형 버전 관리는 대표적으로 'Git'이 있습니다. 분산 집중형 또한 중앙 서버(원격 서버)는 존재합니다. 하지만 각각의 사용자에게도 서버에 저장된 형상들이 존재하죠. 이렇게 될 경우 중앙 집중형 방식의 단점을 극복할 수 있습니다. 네트워크가 없어도 사용자가 각각의 PC(혹은 서버)에서 작업을 할 수 있을뿐더러 중앙 서버에 문제가 발생하더라도 복구하는 것이 어렵지 않습니다. 그래서 많은 개발자들이 중앙 집중형 방식을 선호하고, 대표적인 형상 관리 툴 'Git'을 사용합니다.
'[개발] 프로그래밍 > Git' 카테고리의 다른 글
[Git] user 변경하기 (0) | 2021.12.29 |
---|---|
[Git] GitLab SSH Key 등록 (0) | 2021.09.10 |
[Git] Git 기본 용어 및 플로우의 이해 (0) | 2021.06.06 |
댓글