늘 겸손하게

VCS - Version Control System 본문

Computer Science

VCS - Version Control System

besforyou999 2022. 2. 14. 22:44

안녕하세요 besforyou입니다.

 

이번 글은 Version Control System이 무엇인지와

 

대표적인 Version Control System인 Git에 대해 설명하겠습니다.


 

옛날의 버전 컨트롤 방법

 

작업하던 파일들이 날아가거나, 또는 개발하다 오류가 터져 이도저도 못하는 상황이 오면 그 전 상태로 돌아가야하니까 중간 중간 백업 파일들을 복사했습니다.

 

 

이런식으로..

 

문제 1 : 하지만 파일 크기가 몇기가 수준으로 너무 커진다면?

 

백업본들이 공간을 너무 많이 차지하고 복사하는데 시간이 너무 걸립니다.

 

 

문제 2 :  여러 명이 함께 작업하고 있다면?

 

통합이 너무 어렵습니다.

 

뭐가 뭔지도 알기 어렵다

 

 

그래서 나온것이 버전 관리 시스템 ( Version Control System, VCS )

 


버전 관리 시스템 의 효용

 

- 변경 내용 추적. 파일의 특정 부분을 누가, 언제, 왜 어떻게 변경했는지 다 기록이 된다.

 

- 과거 특정 시점 상태로 복원 가능

 

- 예기치 못한 오류, 사고 대비 백업 가능

 

- 효과적인 협업. 변경 내용을 통합하기가 편리

 


버전 관리 시스템의 종류

 

1. 로컬 버전 관리 시스템

 

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

 

3. 분산 버전 관리 시스템

 

 


로컬 버전 관리 시스템 ( Local Version Control System )

 

- 로컬 컴퓨터에만 변경 기록을 저장하는 방식

 

- 협업 불가능

 

초창기에 자주 쓰이던 방식


중앙집중식 버전 관리 시스템 ( Centralized Version Control System )

 

- 서버에 모든 파일과 변경 기록(history)를 저장

 

- 클라이언트들이 서버에서 파일들을 요청해 받아감

 

- 협업이 가능!

 

단점

-> 서버가 다운되면? 작업 불가능

 

-> 서버 저장소에 문제가 생기면? 모든 변경 기록 날아감 -> 재앙

 


분산 버전 관리 시스템 ( Distribute Version Control System )

 

- 모든 클라이언트가 서버의 저장소 복사본을 가짐

 

- 서버(원격저장소)는 클라이언트 간의 동기화 및 협업을 지원

 

- 중앙집중식 버전 관리 시스템의 단점을 해결

 

- 서버가 다운되거나 인터넷이 없어도 작업이 가능하다.

 

- 모든 클라이언트가 서버 저장소의 백업본을 가지고 있어 복구가 편리

 

- 현재 가장 많이 사용되는 방식

 

 

ex : Git


Git의 특성 

 

- 저장소 전체의 스냅샷을 저장

 

- 파일이 변경되면 변경된 파일의 스냅샷만 저장하고, 변경되지 않은 파일은 이전 스냅샷에 대한 링크만 저장

 

- 적절한 시점에 garbage collection

 

- Key, Value 데이터 저장소. SHAI 해시값(Key)을 기준으로 파일의 변경 여부 판단


Git의 Branch

 

원래 코드에 영향을 주지 않고 독립적으로 개발을 진행할 수 있는 공간 -> branch

 

- 여러 개발자들이 동시에 다양한 작업 가능

 

- 코드 원본과 따로 진행되어야 하는 작업들을 위해 사용 (ex : 실험적인 기능 구현, 급한 버그 fix , 다음 버전 릴리즈 준비 )

 

- 작업 완료 후 main branch에 merge(병합) 가능

 

- git branch는 특정 커밋을 가리키는 "포인터"에 불과 ( 41 바이트짜리 SHA1 checksum 파일에 불과 ). 빠르고 가벼움

 

'Computer Science' 카테고리의 다른 글

CS - HTTP  (0) 2022.05.29
CS - 호스팅이란?  (0) 2022.05.28
주소창에 DNS를 입력하면 일어나는 일 - CS  (0) 2022.05.28
인터넷 작동 원리  (0) 2022.05.28
딥러닝 이미지 분류 모델 개발 일지 - 1  (0) 2022.02.18