반응형
형상관리 개념
- 형상관리 또는 소프트웨어 구성 관리(SCM : Software Configuration Management)는 소프트웨어의 변경사항을 체계적으로 추적하고 통제하는 것
- 일반적인 단순 버전관리 기반의 소프트웨어 운용을 좀 더 포괄적인 학술분야의 형태로 넓히는 근간
- 소프트웨어 소스코드, 개발환경, 빌드구조 등 전반적인 환경, 내역에 대한 관리 체계를 정의
- 소프트웨어의 BOM(Bill of Materials)을 운용하는 체제
형상관리는 포괄적인 개념
통상적으로 버전관리, 소스관리 등으로 불립니다.
즉, 정보를 여러 버전을 관리하는 것
그럼 우리가 흔히 아는 SVN, Git은? 버전관리시스템?
형상관리 중에 문서, 소스코드 등 버전을 관리해주는 버전관리시스템입니다.
통상적으로 형상관리를 버전관리라고 부르기에 "형상관리 ≒ 버전관리" 임을 인지하고 접근하는 것이 이해하는데 도움이 될겁니다.
버전관리란?
- 변경점 관리 : 여러 사용자들이 release한 시점을 관리
- 버전 관리 : 특정 시점에 꼬리표(Tag)를 달아 버전을 표시, 브랜치(branch)를 여러 버전을 개발 가능
- 백업&복구 : 버전 관리를 통해서 복구 또는 다른곳으로 백업을 가능케 함
- 협업 : 개별 사용자의 수정사항을 쉽게 공유
버전관리 하기전 우리들의 모습...
그러니 우리는 버전관리를 통해서 스마트해지자!
왜 "버전 관리 시스템"를 알아야할까?
파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 시스템입니다.
- 각 파일을 이전 상태로 되돌림
- 프로젝트를 통째로 되돌림
- 시간에 따라 수정 내용을 비교 가능
- 누가 문제를 일으켰는지 추적이 가능
- 누가 언제 만들어낸 이슈인지 확인 가능
버전 관리의 종류는 다음과 같다
로컬 버전관리시스템(VCS: Version Control System)
대표제품 : RCS( Revision Control System)
- RCS는 기본적으로 Patch Set(파일에서 변경되는 부분)을 관리
- Patch Set특정한 형식의 파일로 저장
- 이 Patch Set을 적용해서 모든 파일을 특정 시점으로 되돌릴 수 있다.
중앙집중식 버전관리시스템(CVCS: Centralized VCS)
대표제품 : SVN(Subversion), CVS(Concurrent Versions System), Perforce 등
- 프로젝트에서 여러 개발자와 작업하는 경우, 생기는 문제들을 해결하기 위해 개발됨
- 하나의 중앙 서버와 여러 클라이언트가 파일을 받아서 사용
- 장점) 관리자는 사용자들을 관리가 용이
- 장점) 중앙 서버의 VCS 하나를 관리만 하면됨
- 단점) 중앙 서버가 문제가 생기면 협업에 문제가 생기며, 중앙 데이터베이스에 문제가 생기면 모든 히스토리를 잃어 버림. (로컬 VCS도 이와 비슷한 결점을 가짐)
분산 버전관리시스템(DVCS: Distributed VCS)
대표제품 : Git, Mecurial, Bazaar, Darcs 등등
- 클라이언트는 단순히 최신 파일의 마지막 스냅샷을 checkout 하지 않음
- 저장소와 히스토리를 전부 복제
- 서버에 문제가 생겨도 복구가 가능(CVCS의 단점 완화)
- Clone은 모든 데이터를 가진 진정한 백업
- DVCS에서는 원격 저장소가 존재하며 다양한 그룹과 협업이 가능
- 계층 모델 같은 CVCS로는 할 수 없는 Work flow이다.
출처
반응형