이번 시간에는 버전 관리의 정의와 종류에 대해서 알아보려고 한다.
버전 관리
버전 관리는 동일한 정보에 대한 여러 버전을 관리하는 것을 말한다.
단어 뜻 그대로 버전을 관리하는 일이다.
내가 배우고 잇는 소프트웨어 엔지니어링에서는 일반적으로 소스 코드만을 관리하는 내역을 주로 버전 관리라고 정의하게 된다.
버전 관리를 이용하는 이유에는 여러가지 이유가 있다.
- 무언가 잘못되었을 때 복구를 돕기 위해
- 프로젝트 진행 중 과거의 어떤 시점으로 돌아갈 수 있게 하기 위해
- 여러사람이 같은 프로젝트에 참여할 경우, 각자가 수정한 부분을 팀원 전체가 동기화하는 과정을 자동화하기 위해
등등 더 많은 이유가 존재하는데, 자세한 내용은 아래의 위키백과를 참고하자.
https://ko.wikipedia.org/wiki/%EB%B2%84%EC%A0%84_%EA%B4%80%EB%A6%AC
이러한 이유로 요즘 실무에서도 버전 관리는 널리 사용되고 있다.
종류
버전 관리의 종류에는 총 3가지로 로컬 버전 관리, 중앙집중식 버전 관리, 분산 버전 관리가 존재한다.
로컬 버전 관리
로컬 버전 관리는 디렉토리에 파일을 복사하는 방법이다. 이 방법은 간단하여 자주 사용되지만 무언가 잘못되기 쉽다. 왜나하면 디렉토리에 파일을 관리하면서 파일을 삭제하거나 수정하기 쉽고 만약 파일이 삭제되거나 수정되면 이를 전의 상태로 되돌리기가 쉽지 않다.
이런 이유로 로컬 VCS라는 걸 만들었고, 이 VCS는 간단한 데이터베이스를 사용해서 파일의 변경 정보를 관리한다.
중앙집중식 버전 관리
중앙집중식 버전 관리는 프로젝트를 진행하다 보면 다른 개발자와 함께 작업해야 하는 경우가 많은데 이 문제점을 해결하기 위해 개발되었다. 파일을 관리하는 서버가 별도로 있고 클라이언트가 중앙 서버에서 파일을 받아서 사용한다. 모든 클라이언트의 로컬 데이터베이스를 관리하는 것보다 관리하기 쉽지만 중앙 서버에 문제가 발생하면 그 동안 다름사람과 협업을 할 수 없고 사람들이 하는 일을 백업할 방법이 없어지는 단점이 있다. CVS, Subversion, Perforce가 이에 해당한다.
분산 버전 관리
분산 버전 관리는 각 개발자가 중앙 서버에 접속하지 않은 상태에서도 코드 작업을 할 수 있다. 이 시스템은 중앙집중식 버전 관리와 비교해서 중앙 서버에서도 파일들을 관리하지만 개발자들 각자의 환경에서도 개별적으로 파일을 관리하게 된다. 이에 개발자들은 네트워크가 안되거나 중앙 서버가 다운된 상태에서도 각자의 지역 저장소에서 버전을 관리할 수 있도록 도와준다. Git, Mecurial, Bazzar, Darcs가 이에 해당한다.
이상으로 오늘은 버전 관리에 대해 알아 보았다.
다음 시간에는 분산 버전 관리 중 하나인 Git에 대해서 포스트 해보려고 한다.
출처
Git - 버전 관리란?
위키 백과 - 버전 관리
https://ko.wikipedia.org/wiki/%EB%B2%84%EC%A0%84_%EA%B4%80%EB%A6%AC
'형상관리 > Git' 카테고리의 다른 글
Git & Github 연동 및 사용법 (0) | 2020.07.30 |
---|