💻 Frontend/HTML, git

버전 관리 CVCS, DVCS의 개념

hjinn0813 2024. 12. 29. 19:16
728x90

개발에서 '버전 관리'는 코드의 변경사항을 관리하며, 만약 실수나 에러가 생겼을 경우에 복구를 쉽게 해주는 작업이다. 그동안 '버전 관리'라고 하면 git 밖에 몰랐는데, 크게 2개의 시스템으로 나눌 수 있다고 해서 공부해보았다.


CVCS (Centralized Version Control System)

중앙집중식 버전 관리 시스템.

장점 - 중앙 서버에서 모든 파일과 기록을 관리하며, 유저는 서버에 연결해 데이터를 다운로드/업로드한다.
- 작업 시마다 서버와 통신하며, 모든 변경 사항이 바로 중앙 서버에 반영된다.
- 단일한 저장소로 데이터 통제가 가능하고, 서버에 모든 데이터가 있어서 백업이 명확하고 직관적이다.
단점 - 중앙 서버가 항상 모든 데이터를 갖고 있어서 '의존성'이 강하다.
- 네트워크가 반드시 연결되어야 작업 가능하고, 서버가 다운되면 작업이 중단된다.
- 작업 속도가 네트워크 상태에 따라 달라진다.
- 데이터가 서버에만 저장되어, 서버 손상 시 데이터 복구가 어려워 정기적인 서버 백업이 필요하다.
- 같은 파일을 여러 사람이 수정하면 충돌이 발생할 수 있어서, 파일 잠금(Locking)으로 충돌을 방지하지만 비효율적이다. 충돌이 발생할 경우 서버에서 해결한다.
- 브랜치는 중앙 서버에서 생성하는데, 생성이 번거로워 잘 사용하지 않는다.

대표적인 프로그램: Subversion(SVN), Perforce


DVCS (Distributed Version Control System)

분산형 버전 관리 시스템.

장점 - 중앙 서버 없이도 로컬에서 모든 작업(커밋, 롤백 등)을 처리할 수 있고, 필요하면 서버 또는 다른 사용자와 데이터를 동기화하기 때문에, 서버에 대한 의존성이 낮다.
- 인터넷 연결이 없어도 오프라인에서 작업할 수 있다.
- 모든 사용자가 로컬에 파일과 히스토리의 복사본을 갖고 있어서, 문제가 발생해도 복구가 쉽다.
- 브랜치를 활용한 병렬 개발과 협업에 유리하다.
- 작업은 로컬에서 하고 서버에 반영(커밋)하기 때문에, 충돌 가능성이 낮다.
단점 - 초기에 데이터를 복제(클론)할 때 시간이 오래 걸릴 수 있다.
- 처음 사용할 경우에는 구조가 복잡하게 느껴질 수 있다.

대표적인 프로그램: Git, Mercurial

728x90