버전 관리란? (VCS, Version Control System)
- 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템
버전 관리를 사용해야 하는 이유
- 각 파일을 이전 상태로 되돌릴 수 있음
- 프로젝트를 통째로 이전 상태로 되돌릴 수 있음
- 시간에 따라 수정 내용 비교 가능
- 누가 문제를 일으켰는지 추적 가능
- 누가, 언제 만들어낸 이슈인지 알 수 있음
- 파일을 잃어버리거나 잘못 고쳤을 때 쉽게 복구 가능
버전 관리 시스템의 종류
로컬 버전 관리 시스템 (Local VCS, Local Version Control System)
- 유명한 로컬 버전 관리 시스템으로는 RCS (Revision Control System)이 있음
- RCS는 파일에서 변경되는 부분 (Patch)만 기억해 용량 문제 해결
- RCS에서의 버전 변경은 해당 버전까지의 일련의 변화들 (Patch Set)을 적용/해제하는 식으로 동작함
- 단점으로는 이름 그대로 로컬에서만 동작하므로, 다른 개발자와 협업을 해야 하는 상황에서는 버전 관리가 힘듦
중앙 집중식 버전 관리 시스템 (CVCS, Centralized Version Control System)
- 파일 및 변경 이력 등을 서버로 옮긴 것
- 중앙의 서버가 파일들과 이들의 변경 이력을 관리하고, 각 클라이언트는 서버에 접속해서 특정 버전의 스냅샷(snapshot)을 받아서 사용하는 형태로 동작
- 클라이언트가 서버로부터 특정 버전의 스냅샷을 받아 사용하는 것을 체크아웃(checkout) 이라고 함
- 모두 누가, 무엇을 하고 있는지 알 수 있고, 관리자는 누가, 무엇을 할지 꼼꼼하게 관리 가능
- 단점은 아래와 같음
- 모든 버전 관리 관련 동작은 서버에서 처리되어야 하므로 서버의 부하가 큼
- 서버가 죽거나 장애가 발생하면 버전 관리가 이루어지지 않음
- 오프라인 상태에서는 버전 관리 시스템을 사용할 수 없음
- 모든 버전 관리 관련 동작은 적어도 한 번 서버를 경유해야 함, 로그를 보는 것조차 서버에서 데이터를 받아와야 해서 느림
- 서버에서 데이터가 망가지거나 삭제되면 복구하기가 매우 어려움
분산식 버전 관리 시스템 (DVCS, Distributed Version Control System)
- 각 클라이언트들이 모두 서버의 백업본을 가지는 형태
- 서버가 죽거나 오프라인 상태에서도 버전 관리 가능
- 대부분의 버전 관리가 로컬에서 이루어지므로 속도 빠름
- 단점으로는 중앙 집중식 버전 관리에 비해 복잡하고, 동기화 문제가 있음
- Git, Mecurial, Bazzar 등이 있는데 가장 유명하고 널리 쓰이는 것이 Git
출처
'Backend Loadmap > Git' 카테고리의 다른 글
[백엔드로드맵][Git] Git 저장소 만들기 (0) | 2023.07.28 |
---|---|
[백엔드로드맵][Git] Git 설치 및 최초 설정 (0) | 2023.07.07 |
[백엔드로드맵][Git] Git 기초 (0) | 2023.07.05 |