Tom's Note
article thumbnail
반응형

형상관리 개념

  • 형상관리 또는 소프트웨어 구성 관리(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이다.

 


출처

구성 관리위키

버전관리시스템 나무위키

Git Book

 

 

 

반응형
profile

Tom's Note

@크크크크

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!