VCS/Git

[Pro Git] 1-1. 시작하기: 버전 관리란?

noahkim_ 2024. 1. 13. 22:13

Scott Chacon & Ben Straub 님의 "Pro Git" 책을 정리한 포스팅 입니다.

 

1. 버전 관리란?

  • 시간의 흐름에 따라 파일 변화를 기록하고, 필요할 때 특정 시점의 버전으로 복원할 수 있는 시스템입니다.”

 

로컬 버전 관리

  • 간단한 데이터베이스를 사용해서 파일의 변경 정보를 관리했습니다.

 

RCS (Revision Control System)
  • 버전 관리 시스템의 초기 형태 중 하나 입니다.
  • 텍스트 파일의 변경 이력을 관리하기 위해 사용됩니다.

 

Patch Set
  • 파일 변경 내용을 담은 파일입니다.
  • 효율적인 디스크 공간 사용
    • RCS는 Patch Set만 저장하여 디스크 공간을 효율적으로 사용합니다.
  • 시점 되돌리기
    • 일련의 Patch Set들을 적용해서 파일을 특정 시점으로 되돌릴 수 있습니다.

 

중앙집중식 버전 관리 (CVCS)

  • 다른 개발자와 함께 작업할 때 사용합니다.

 

장점
  • 인력 관리 : 누가 무엇을 하고 있는지 알 수 있습니다.
  • 데이터 관리 : 모든 클라이언트의 로컬 데이터베이스를 관리하는 것보다 중앙화된 하나의 VCS로 관리하는 것이 쉽습니다.

 

단점 (중앙 서버 의존성에 기인합니다) 
  • 서버 가용성 문제
    • 네트워크 연결이 불안정한 경우 서버에 접속할 수 없습니다.
    • 팀원들은 공유 작업 공간에 접근할 수 없습니다. (서버 다운시 협업 프로세스가 완전히 중단됩니다)
  • 데이터 손실 위험
    • 프로젝트 전체 히스토리를 잃을 수 있는 위험이 있습니다.
  • 성능 및 확장성 문제
    • 서버의 낮은 처리능력으로 인해 성능의 병목이 발생할 수 있습니다.
    • 규모 확장의 어려움 : 서버를 스케일업 하는데 드는 비용이 높습니다.
  • 보안 취약점
    • 해킹 당하면, 전체적으로 프로젝트의 보안이 위협받을 수 있습니다.

 

Server
  • 파일을 관리하는 서버가 별도로 있습니다.

 

Client
  • Check out : 클라이언트가 중앙 서버에서 파일을 받아 사용합니다.

 

제품
  • Subversion, CVS 등

 

분산 버전 관리 시스템 (DVCS)

  • 각 클라이언트가 리포지토리의 전체 복사본을 가지는 시스템입니다.
  • 리모트 저장소가 존재합니다.

 

장점
  • 전체 저장소 복제 (Clone)
    • 각 클라이언트는 리포지토리의 전체 복사본을 가지고 있습니다.
    • 저장소 복제본에는 모든 파일의 버전 히스토리가 포함됩니다.
    • 단순히 파일의 마지막 스냅샷만을 체크아웃하지 않습니다.
    • 서버에 문제가 발생하더라도 어느 클라이언트든 서버를 복원할 수 있는 데이터를 보유합니다.
  • 리모트 저장소의 다양성
    • 하나의 프로젝트에 대해 여러 리모트 저장소를 가질 수 있습니다.
    • 이를 통해 프로젝트에 기여하거나 PR을 통한 협업이 가능합니다.
  • 다양한 워크플로 지원
    • 복잡한 프로젝트 구조와 다양한 팀 구성에 맞는 유연한 협업 방식을 지원합니다.
  • 데이터 무결성 및 보안
    • 각 커밋에 대해 SHA-1 해시를 사용하여 데이터의 무결성을 보장합니다.
    • 다른 클라이언트의 복제본으로부터 서버를 복원할 수 있습니다.
  • 오프라인 작업 가능
    • 오프라인 작업 후, 나중에 리모트 저장소와 동기화 할 수 있습니다.

 

제품
  • Git

 
 
출처