반응형

버전 관리 시스템 개요

버전 관리 시스템은 (aka VCS) 문서나 설계도, 소스 코드등의 변경점을 관리해주는 소프트웨어 입니다.

소프트웨어를 개발할 때 변경점을 관리하는것은 매우 중요한 일입니다. 우리가 예전에 겪었을만한

졸업논문 작성할때도 그랬었죠.

 

이렇게 버전 관리 없이 문서를 저장할 경우, 어떤 파일이 정말 마지막으로 저장되었는지도

나중에는 알기 힘들고, 사고로 내용이 날아간 경우에도 복구할 수 없습니다.

우리는 이러한 일들을 해소하고자 버전관리를 해야합니다.

정리하자면 우리가 버전관리를 함으로써 얻을 수 있는것들은

  • 프로젝트를 진행 중 과거의 어떤 시점으로 돌아갈 수 있게 하기 위함입니다.
  • 특정 시점에 꼬리표를 달아 버전을 표시해주고, 동시에 여러 버전을 개발할 수 있게 해줍니다.
  • 여러사람이 같은 프로젝트에 참여할 경우 같이 일하는 모든 사람들에게 수정사항을 쉽게 공유할 수 있습니다.
  • 무언가가 잘못 되었을때, 복구를 돕기 위해서 사용할 수 있습니다.

버전 관리 시스템 종류

로컬 VCS

  • 서버 없이 로컬 컴퓨터 내에서 버전을 관리할 수 있습니다.
  • 매우 간단하게 사용할 수 있다.
  • 로컬 컴퓨터 내에서 관리하기 때문에 협업에서 사용하기엔 힘듭니다.
  • 실수로 디렉토리를 지우거나 컴퓨터 고장시에 파일들을 복구할 수 없습니다.

중앙집중식 VCS 

  • 프로젝트를 진행하다 보면 다른 개발자와 함께 작업을 해야하는 경우가 있는데 이럴때 생기는 문제를 해결하기 위하여 중앙집중식 VCS가 개발되었습니다.
  • 파일을 관리하는 서버에 최종본 한 개가 있으며, 사용자가 중앙서버에서 파일을 다운받아 사용합니다.
  • 사용자 중 누가 무엇을 하고 있는지 알 수 있습니다.
  • 서버가 다운될 경우 그동안 아무도 다른사람과 협업할 수 없고 사람들이 하는 일도 백업할 수 없습니다.
  • 중앙 데이터베이스가 있는 하드디스크에 문제가 생기면 프로젝트의 모든 히스토리를 잃을 수 있습니다.
  • 대표적으로 Subversion(SVN)이 있습니다.

분산 VCS 

  • 파일을 저장하는 서버가 있는것은 중앙집중식 VCS와 동일하지만 수정을 위해 프로젝트 전체를 로컬에 다운 받은뒤 수정하게 됩니다.
  • 서버가 다운되더라도 사용자들은 작업을 할 수 있고 프로젝트 전체를 로컬에 다운 받은 뒤 수정하기 때문에 서버가 날아가도 복구가 가능합니다.
  • 수정할 때에도 소스코드를 수정하고 있는 사람이 1사람이기 때문에 충돌을 피해 수정이 가능합니다.
  • 대표적으로 GIT이 있습니다.

버전 관리 시스템이 없다면?

만약 VCS, 즉 버전관리 시스템이 없다면 우리는 협업할 인원이 5명이라고 가정한다면,

5명중 누가 언제 얼만큼동안 소스코드를 작업할지 정하고 작업을 해야할 것 입니다.

5명중 1명이 작업하는동안 남은 4명은 다른 1명을 계속 기다려야하고

어찌어찌 어느정도 완성이되고 몇가지 수정사항이 있어 수정을 했는데 시스템오류가 난다면

누구의 잘못인지 찾기도 힘들뿐더러 시스템오류전에 저장했던 파일을 또 열심히 찾고...

엄청나게 시간을 허비했을 것 입니다.

반응형

+ Recent posts