본문 바로가기

CS 잡지식

CVCS vc VCS vs DVCS(Feat. GitHub, Git)

CVCS( Centralized Version Control Systems, 중앙집중식 버전 제어 시스템 ) : 잘 안씀

장점

- 여러 개발자들이 함께 작업할 수 있음

- 중앙 서버는 프로젝트 전체의 히스토리를 갖고 있으므로, 데이터를 잃어버렸을 때 복구하기가 비교적 쉬움

단점:

- 중앙 서버가 다운되면 프로젝트의 히스토리에 접근할 수 없게 되고, 서버의 데이터가 손실되면 프로젝트 전체의 히스토

리를 잃어버릴 수 있음.

왜냐하면, Local에 버전을 저장하지 않고, 바로 중앙 저장소에만 저장을 하기 때문이다.(매우 치명적)

- 네트워크에 의존적이라 오프라인에서 작업하기 어려움

 

VCS( Version Control System, 버전 제어 시스템) : Ex. Git

장점

- 로컬 VCS는 사용이 간단하고 시스템 요구 사항이 적음

단점

- 하나의 시스템에서만 작동하므로 다수의 개발자가 협업하기 어려움

- 모든 데이터가 한 곳에 집중되어 있어서 데이터 손실 위험이 있음

 

DVCS (Distributed Version Control Systems, 분산 버전 제어 시스템) : 중앙 저장소에 버전을 저장하기 전에, 로컬 컴퓨터에 먼저 버전을 저장을 한다. 

- DVCS에서는 모든 개발자가 리포지토리의 전체 복사본을 가지고 있으며, 각각의 복사본은 전체 히스토리와 모든 변경 사항을 저장함

- Git, Mercurial, Bazaar 등이 있음

장점:

- 중앙 서버가 다운되더라도 각 개발자의 로컬 복사본을 통해 작업을 계속할 수 있음.

왜냐하면, 초기에 clone을 통해 [전체] History를 다운로드 하므로, 로컬에 있는 것을 다시 중앙 서버에 복구하면 그만이다.

- 또한, 네트워크 연결이 없을 때도 전체 히스토리에 접근하고 변경 사항을 커밋할 수 있음.

- 브랜치 관리가 용이하며, 많은 개발자들이 협업할 수 있음.

단점

- 전체 히스토리를 저장하므로 초기 클론 작업이 오래 걸릴 수 있음

- 또한, 복잡한 명령어와 학습 곡선이 있을 수 있음