본문 바로가기
IT/Teckweek

SCM (Software Configuration Management)

by YEON-DU 2022. 10. 26.
반응형

출처 : Configuration Management: The Heart of Your Software Development Lifecycle ‎(SDLC)

SCM만 들었을 때는 용어가 낯설다고 생각이 들었는데, 한국어 번역이 형상관리라는 걸 듣고 아 git~ 라고 넘어갔던 기억이 있다.

게임회사에서 일하면서 처음으로 Perforce라는 형상관리 시스템을 써보고 있는데, 형상관리란 무엇인지, 형상관리 시스템에는 어떤 것들이 있는 지에 대해 알아보자.

 

💡 소프트웨어 구성 관리(Software Configuration Management) 또는 형상 관리는 소프트웨어의 변경사항을 체계적으로 추적하고 통제하는 것으로, 형상 관리는 일반적인 단순 버전관리 기반의 소프트웨어 운용을 좀 더 포괄적인 학술 분야의 형태로 넓히는 근간을 이야기한다. 일반적으로 형상 항목(Configuration Item)이라는 형태로 작업 산출물을 선정하고, 형상 항목 간의 변경 사항 추적과 통제 정책을 수립하고 관리한다. (Ref. 구성 관리)

 

위키에서는 단순 ‘버전관리’보다는 포괄적인 ‘학술 분야의 형태로 넓히는 근간’이라고 말했다.

말이 어렵기때문에 조금 더 쉽게 풀어서 설명해보자.

형상관리란?

형상관리의 구조

  • 형상 식별 (Configuration Identification) : 형상 관리의 대상 (형상 항목, configuration item)이 무엇인지 식별하는 것.
  • 형상 제어 (Configuration Control) - 형상 항목의 버전(version control)과 변경에 대한 판단을 내리는 것.
  • 형상 감사 (Configuration Audit) - 요구대로 형상 항목의 변경이 제대로 이루어졌는지 살펴보는 것.
  • 형상 상태 보고 (Configuration Status Accounting) - 변경된 형상 항목을 관계된 사람들에게 알리는 것.

소스관리, 버전관리, 빌드 구조, 개발환경, 문서들을 함께 포괄적으로 관리하는 개념이다.

통상적으로 버전관리, 소스관리 등으로 불리기도 한다.

즉, 정보를 여러 버전으로 관리하는 것이다.

버전관리란?

파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템.

  • 각 파일을 이전 상태로 되돌림
  • 프로젝트를 통째로 되돌림
  • 시간에 따라 수정 내용을 비교 가능
  • 이슈 트래킹이 가능

형상 관리를 위한 도구와 특징

  • CVS (Concurrent Version System)
    1980년 대에 만들어진 무료 서버-클라이언트 형상관리 시스템.
    가장 오래 사용되었으며 안정적이고 파일 전체를 저장하는 것이 아니라 변경사항만을 저장함으로 용량을 적게 차지한다는 장점이 있다.
    그러나 파일 관리 중 롤백이 불가하거나, 아스키코드는 지원하는 데에 반해 유니코드는 제한적으로 지원하고, 속도가 상대적으로 느린 단점이 있다.
  • SVN (Subversion)
    2000년 대에 CVS의 단점을 보완하기 위해 만들어진 형상관리/소스관리 툴의 일종.
    중앙관리만을 지원한다.
    다른 사용자의 커밋과 엉키지 않으며, 커밋 실패 시 롤백 기능을 지원한다. 처리 속도가 CVS에 비해 상대적으로 빠르다. 하지만 잦은 커밋은 리비전 번호가 크게 증가할 수 있으며 개별 이력을 관리할 수 없다. 안정성에 있어 CVS보다 상대적으로 좋지 않다.
  • Git
    2005년 개발된 분산형 버전관리 시스템. 다른 형상 관리 도구에 비해 다양한 기능을 지원하며 가장 대중화되어 사용되고 있다.
    Repository의 완전한 복사본을 로컬에 저장할 수 있다. 또한 중앙 관리도 가능하다. 처리속도가 빠르지만 대용량 코드 관리에 부적절하다.
  • Perforce(P4V)
    중앙집중형 버전관리 시스템. 빠른 속도, 빠른 Merge가 가능하며 큰 리소스 관리에 좋다. 하나의 저장소에 모든 것을 저장한다. 모든 커밋은 중앙서버에 적용된다.
    주로 디자인이 많은 프로젝트(EX. 이미지 리소스, 3D 모델링 등)에 사용한다. (바이너리 관리에 유용) 언리얼을 사용한다면 대부분 Perforce를 사용하게 된다.
    하지만 유료이고 파일명이 바뀌면 히스토리 추적이 곤란하다.

 

Git vs Perforce 용어 비교

Patch Refresh 현재 소스에서 변경사항을 새로고침한다 (적용한다)
Pull Get Latest (Revision) 마지막 Commit을 가져온다.
Push Submit 현재 수정사항을 서버에 보낸다.
  Checkout 특정 파일을 다른 유저가 건드릴 수 없도록 점유한다. (다른 유저들이 파일을 건드릴 수 없게 Lock을 건다)
  Shelve Checkout된 파일을 다른 유저에게 공유한다. (소유권 이전도 가능)
Revert Revert 수정 사항 폐기.
Remote Repository Depot 저장소. Git에서는 Local과 Remote로 나뉘지만 Perforce에선 Depot이란 서버에 저장된 저장소를 의미한다.
Local Repository Workspace 개인이 작업하는 작업 공간이다. 단, Perforce에서는 로컬에만 Push(Submit)하는 것이 불가하고, 즉각적으로 Depot에 올라간다.
Staged File Pending
(Change List)
변경중인 파일

Git과 Perforce가 서로 흡사한 의미를 갖고 있는 용어를 비교해둔 것이다.

각 용어는 완벽히 대응되는 것이 아니며 일반적으로 비슷한 의미를 가진다 정도로 볼 수 있다. 

 

 

참고

https://kurukurucoding.tistory.com/68

https://sujinnaljin.medium.com/software-engineering-형상-관리에-대하여-932d14f6f341

https://velog.io/@welchs1423/형상관리Configuration-Management란

반응형

'IT > Teckweek' 카테고리의 다른 글

Rendering Pipeline  (0) 2022.11.12
BlendMode  (0) 2022.11.05
CI/CD  (0) 2022.10.06
로드밸런싱  (0) 2021.06.10
Reactive Programing이란?  (0) 2021.04.28

댓글