버전 관리 시스템(VCS, Version Control System)
파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 불러올 수 있는 시스템이다. VCS를 사용하면 선택한 파일을 이전 상태로 되돌릴 수 있고, 변경 사항을 비교하고, 변경한 사람 및 변경 시기를 추적할 수 있다.
VCS의 종류
1. 로컬 버전 관리(Local VCS)
간단히 로컬 컴퓨터의 데이터베이스를 사용해서 파일의 변경 정보를 관리하는 시스템이다. 대표적으로 RCS (Revision Control System)가 있다. RCS는 파일에서 변경되는 부분(patch)만 기억하여 용량 문제를 해결한다. RCS에서의 버전 변경은 해당 버전까지의 일련의 변화들(patch set)을 적용/해제하는 식으로 동작한다.
로컬 버전 관리 시스템은 이름 그대로 로컬에서만 동작한다. 다른 개발자와 협업을 해야 하는 상황에서는 로컬 버전 관리 시스템으로의 버전 관리가 쉽지 않다. 이에 고안된 것이 중앙 집중식 버전 관리 시스템(CVCS)이다.
2. 중앙 집중식 버전 관리(CVCS, Centralized VCS)
여러 사람과 함께 작업해서 생기는 문제를 해결하기 위해 개발되었다. 파일 및 변경 이력 등을 서버로 옮긴 것이다. 중앙의 서버가 파일들과 이들의 변경 이력을 관리하고, 각 클라이언트는 서버에 접속해서 특정 버전의 스냅샷(snapshot)을 받아서 사용하는 형태로 동작한다. 이렇게 클라이언트가 서버로부터 특정 버전의 스냅샷을 받아 사용하는 것을 checkout이라고 한다.
중앙 집중식 버전 관리 시스템에서는 모든 클라이언트들이 단 하나의 데이터베이스만을 바라보므로 동기화 문제가 없고, 관리가 편하다는 장점이 있다. 대표적으로 CVS(Concurrent Versions System), SVN (SubVersion), Perforce 등이 있다.
단점은 아래와 같다.
- 모든 버전 관리 관련 동작이 서버에서 처리되므로 서버의 부하가 크며, 이 때문에 속도가 느림
- 서버가 죽거나 장애가 발생하면 버전 관리가 이루어지지 않음
- 오프라인 상태에서 사용 불가
- 서버에서 데이터가 망가지거나 삭제되면 복구하기 어려움
이런 단점들을 해결하기 위해 분산식 버전 관리 시스템(DVCS)가 등장했다.
3. 분산 버전 관리 시스템(DVCS, Distributed VCS)
서버가 모든 파일 및 파일 변경 이력을 독점하는 중앙 집중식 버전 관리 시스템(CVCS)과 달리, 분산 버전 관리 시스템(DVCS)은 각 클라이언트들이 모두 서버의 백업 본을 가진다. 단순히 파일의 마지막 스냅샷을 checkout하지 않고 저장소를 히스토리와 더불어 전부 복제한다. 서버에 문제가 생기면 이 복제물로 다시 작업을 시작할 수 있고 클라이언트 중에서 아무거나 골라도 서버를 복원할 수도 있다. 많은 수의 리모트 저장소를 가질 수 있기 때문에 다양한 방법으로 협업할 수 있다. 대표적으로 Git, Mecurial, Bazaar, Darcs가 있다.
'웹_프론트엔드 > 로드맵 챌린지' 카테고리의 다른 글
VCS - GitHub (깃허브) (0) | 2022.01.10 |
---|---|
VCS - Git 기본 사용법 (0) | 2022.01.08 |
JavaScript - 호이스팅, 이벤트 버블링, 스코프, 프로토타입, Shadow Dom, strict mode (0) | 2022.01.06 |
JavaScript - 모듈러 자바스크립트와 ES6+ (0) | 2022.01.05 |
JavaScript - Fetch API / Ajax (XHR) (0) | 2022.01.03 |