Outdated/Column

[Computer Column] 버전 관리 시스템(VCS, Version Control System)

해달 2019. 3. 16. 17:35


버전

버전 관리 시스템을 알아보기 전에, 버전(version)이 무엇인지 알아보자. 영어사전에는 이렇게 나와있다.

Version의 의미

'어떤 것의 버전이라는 것은 이전 혹은 이후의 형태와 세부적인 것이 다른 특정한 형태이다.'

출처 : 네이버 영어사전

예를 들어, 한국대학교 컴퓨터공학부에 재학 중인 홍길동이라는 학생의 신원을 info.txt라는 파일에 기록했다고 해보자.

2019123123 홍길동 컴퓨터공학부

학교 생활을 하면서 길동이는 자기의 이름이 마음에 들지 않아 홍길순으로 개명을 했다. 이에 맞춰 info.txt 파일도 수정해주었다.

2019123123 홍길순 컴퓨터공학부

이번엔 홍길순이 컴퓨터공학부가 자기랑 맞지 않다고 생각해 산업경영학부로 전과했다. 이전과 마찬가지로 info.txt를 수정한다.

2019123123 홍길순 산업경영학부

자 그럼 여기까지 info.txt는 총 3개의 버전이 생긴 것이라 볼 수 있다.

버전 관리 시스템

자 그럼 버전 관리 시스템(version control system)이라는 것은 이 버전을 관리하는 것임을 알 수 있다. 다시 말해, 특정 파일의 변경사항을 기록하고 추적하는 것이다.

그럼 이 시스템을 왜 사용하는 것일까? 의미 있는 변경사항을 기록해 추후 오류가 발생했을 때나 회귀하고 싶을 때 쉽게 복구할 수도 있고, 무엇보다 협업할 때 유용하기 때문이다. 형상 관리 시스템은 추적하고 있는 파일에 대해 언제, 누가, 어떻게 수정했는지를 기록하며, 수정한 파일을 자동으로 동기화시켜, 항상 파일의 최신 상태를 유지하게 도와준다. 이 뿐만 아니라, 가지내기(branch) 및 병합(merge)을 통해 프로젝트에 영향을 최소화하며 새로운 부분을 개발할 수 있다.

버전 관리 시스템은 중앙형과 분산형으로 구분할 수 있다. 중앙형 버전 관리 시스템(centralized VCS)은 하나의 단독 서버가 파일의 기록 사항을 들고 있으며, 클라이언트는 수정하고자 하는 파일을 가져온 후 수정하고 서버에 반영하게 된다.

중앙형 버전 관리 시스템은 큰 단점이 있는데, 버전 기록을 하나의 서버가 가지고 있기 때문에, 이 서버가 다운되면 아무 작업도 못하게 된다. 중앙형 버전 관리 시스템에서는 Subversion, Perforce 등이 있다.

중앙형 버전 관리 시스템

출처 : https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control


분산형 버전 관리 시스템(distributed VCS)은 중앙형이 가지고 있던 단점을 극복하기 위해 개발된 모델로 서버뿐만 아니라 클라이언트도 버전 기록을 가지고 있는 것을 말한다. 이전처럼 치명적인 문제는 사라졌지만, 초기 체크아웃의 속도가 느리고, 버전 기록을 완전히 복사해오기 위해 모든 유저가 그만큼의 공간이 필요하다는 단점이 있다. 분산형 버전 관리 시스템으로는 Git 등이 있다.

분산형 버전 관리 시스템

출처 : https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control