버전 관리 (Version Control System)

정태경·2022년 5월 14일
0
post-thumbnail

버전관리 (Version Control System)

버전 관리 시스템은 문서나 설계도, 소스 코드 등의 변경점을 관리해 주는 소프트웨어이다. 다시 말해 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 불러올 수 있는 시스템을 의미한다.

버전 관리 시스템에 대해 이야기하면 가장 먼저 SVN, GIT 등을 소스 코드 형상관리를 떠올리겠지만 소스코드뿐만 아니라 테스트케이스라든지 정책, 기획서에서도 버전 관리는 반드시 필요하다고 생각한다.

그럼 버전 관리를 통해 얻을 수 있는 이점은 무엇이 있고, 버전 관리 방법에는 어떤 것들이 있는지 알아보자.

버전 관리의 장점

내가 생각하는 버전 관리의 이점은 크게 4가지로 분류할 수 있을 것 같다.

  • 변경 이력 관리 : 누가, 언제, 어떤 내용을 작성해서 어느 시점에 변경되었는지 파악할 수 있다.
  • 버전 관리 : 특정 시점에 문서나 소스코드에 태그를 달아 버전을 표시해 주고, 브랜치 등으로 동시에 병렬로 여러 버전을 개발할 수 있게 해준다.
  • 백업 & 복구: 무언가가 잘못되었을 때 다시 특정 시점으로 돌아가게 해주고 실수로 내용이 날아간 경우에도 복구할 수 있게 해준다.
  • 협업: 같이 일하는 사람들에게 수정 사항을 쉽게 공유할 수 있다.

버전 관리 시스템 종류

그럼 버전 관리는 어떤 종류가 있을까?

로컬 버전 관리

로컬 버전 관리는 서버 없이 로컬 컴퓨터 내에서 버전 관리를 하는 방식이다. 간단한 DB만으로도 구현이 가능하기 때문에 단순하고 개인적인 프로젝트에 적합한 방식이다. 로컬에서 버전 관리를 하다 보니 협업이 어렵고 하드웨어 고장 등의 상황에 백업 복구가 취약하다는 리스크가 있다.

중앙집중식 버전 관리(CVCS)

서버를 활용하는 버전 관리 시스템 중 하나이며 서버에 최종 버전이 하나 존재한다. 사용자들은 이 중 수정을 원하는 파일만 로컬에 받아와 수정한 후 다시 서버에 올리는 방식이다. 로컬 버전 관리 방식과 달리 협업에 용이하고 누가 어떤 일을 하는지 파악하기 쉽다는 장점이 있다. 다만 중앙 서버가 다운되면 전체 사용자가 작업할 수 없는 상황에 처하게 되고 협업 규모가 커지면 수정 충돌 등의 문제가 발생할 수 있다.

대표적으로 SVN이 있다.

분산 버전 관리 (DVCS)

서버를 활용하는 버전 관리 시스템 중 하나이며 중앙 집중식 버전 관리 시스템과 달리 프로젝트 전체를 로컬에 다운로드해 수정하는 방식이다. 중앙 서버가 다운되더라도 개별 사용자들은 작업이 가능하며 서버가 날아가도 로컬에 다운로드한 프로젝트가 남아 있기 때문에 가장 안정적인 방식 중 하나이다. 수정 시에도 현재 코드는 나 혼자 수정하고 있기 때문에 충돌의 염려가 없다.

대표적으로 Git, Mecurial, Bazaar 등이 있다.

profile
現 두나무 업비트 QA 엔지니어, 前 마이리얼트립 TQA 엔지니어

0개의 댓글