형상관리(Configuration Management) 시스템
서비스 제공 대상 형상항목을 식별하여 기준선을 설정하고, 형상 항목 변경 과정에서 점검, 검증 등의 체계적인 통제를 통해 형 상항목 간의 일관성과 추적성을 확보하기 위한 시스템. 소프트웨어의 개발 및 운영/유지 보수에 필요한 문서 관리, 변경 관리, 버전 관리, 배포 관리 및 작업 산출물에 대한 형상관리를 포함한다
- 형상관리 : 계획부터 개발, 운영, 유지 보수, 폐기까지 발생하는 모든 활동을 지속적으로 관리
- 형상항목 : 형상관리 대상이 되는 항목
- 기준선 : 검토되고 협의되어 향후 기준이 되는 형상항목의 집합체
- 리포지터리(Repository) : 관리 대상을 형상관리 스스템으로 일괄 전송하여 저장, 관리하는 저장공간
- 마이그레이션(Migration) : 개발 완료된 시스템이 운영 단계로 전환될 때 관련 소스 파일 저장공간(리포지터리) 이관
- 워크플로(Workflow) : 형상관리 활동을 수행하기 위해 미리 정해진 절차
- 반출 : 형상항목을 변경하기 위해 형상 리포지터리로부터 전송받음
- 반입 : 반출된 형상항목을 변경 후 다시 형상 리포지터리로 전송
버전 관리
소프트웨어에서 형상 관리는 개발 중 발생하는 모든 산출물들이 변경됨으로써 점차 변해가는 소프트웨어 형상을 체계적으로 관리하고 유지하는 기법이다.
버전 관리 항목
가져오기(import) | 버전 관리 되지 안흔 로컬 디렉토리 파일을 처음으로 저장소에 복사 |
체크아웃(Check-out) | 저장소 파일 받기 |
체크인(Check-in) | 저장소에 새로운 버전으로 갱신 |
커밋(Commit) | 체크인 시 이전 갱신 사항이 있는 경우 충돌 알림, diff 도구 이용 수정, commit 과정 수행 |
저장소(Repository) | 파일 현재 버전과 변경 이력 정보를 저장하는 저장소 |
버전 관리 도구 유형
공유 폴더 방식 | 1) 매일 개발 완료 파일은 약속된 위치의 공유 폴더에 복사 2) 담당자 한 명이 매일 공유 파일을 자기 PC로 복사, 컴파일하여 에러 확인과 정상 동작 여부 확인 3) 정상 동작일 경우 다음날 각 개발자들이 동작 여부 확인 |
클라이언트 / 서버 방식 | 1) 중앙에 버전 관리 시스템이 항시 동작 2) 개발자들의 현재 작업 내용과 이전 작업내용 축적 용이 3) 서로 다른 개발자가 같은 파일을 작업했을 때 경고 출력 4) Trac나 CVS view와 같은 GUI 툴을 이용 모니터링 가능 |
분산 저장소 방식 | 1) 로컬 저장소와 원격저장소 구조 2) 주앙의 저장소에서 로컬에 복사한 순간 개발자 자신만의 로컬저장소에 생성 3) 개발 완료한 파일 수정 이후 로컬 저장소에 커밋한 이후 다시 원격 저장소에 반영하는 방식 |
버전 관리 도구 종류
저장소 구분 | 로컬 버전 관리 시스템 | rcs |
중앙 집중형 버전 관리 시스템 | CVS, SVN, Clear Case | |
분산현 버전 관리 시스템 | Git, Mercurial | |
소스 공개 유형 | Open Source 툴 | SVS, SVN |
상용 버전 관리 툴 | PVCS, Clear Case |
CVS(Concurrent Versions System)
CVS은 가장 오래된 형상 관리 도구 중의 하나로서, 중앙 집중형 서버 저장소에 클라이언트가 접속해서 버전 관리를 한다.
CVS | |
주요기능 | 1) 서버 저장소와 클라이언트의 변경 사항 전송 2) diff를 통한 파일 내용 비교 3) 파일 단위의 변경 사항 관리 |
장점 | 직관적이고 비교적 단순한 명령 세트 |
단점 | 1) 유니코드 파일명 지원 부족 2) 텍스트 기반 소스 코드만 지원 3) 등록된 파일이나 디겍토리의 이름 변경이나 이동이 불편 4) 커밋 실패시 롤백 미지원 |
SVN(Subversion)
SVN은 SVS와 같은 중앙 집중형 클라이언트-서버 방식이지만 CVS의 단점을 보완하여 현재 가장 널리 사용되고 있는 형상 관리 도구이다. SVN은 CVS를 대체하기 위해 만든 도구로서 그 개념과 사용법이 CVS와 거의 유사하다.
SVN | |
주요기능 | 1) 서버 저장소와 클라이언트의 변경 사항 전송 2) diff를 통한 파일 내용 비교 3) 바이너리 문서 형상 관리 4) 작업 단위의 변경 사항 관리 5) atomic commit 6) svn:ignore를 통한 형상 관리 배제 자원 지정 기능 |
장점 | 1) SVS 사용자가 쉽게 적응 가능 2) CVS 비해 빠른 속도 3) 디렉토리나 파일을 자유롭게 이동해도 이력 유지 4) gzip를 통한 압축으로 저장 공간 절약 5) atomic commit으로 커밋 샐패 시 롤백 지원 6) 다양한 써드 파티 GUI 도구 존재 |
단점 | 1) trunk, branch, tag가 모두 물리적인 저장 위치를 점유하므로 비효율적 2) Git에 비해 branch, tag 작업이 무거움 |
Git
Git은 앞서 나왔던 CVS나 SVN과는 개념이 많이 다른 형상 관리 도구로서,
공개 SW 커뮤니티를 중심으로 사용 저변이 많이 확대되고 있다. Git은 중앙 집중형 방식이 아닌 분산형 방식으로 각 로컬 PC에 스스로 완전한 저장소가 구성되며, 필요에 따라 중앙 집중형 방식으로도 운영할 수 있다.
Git | |
주요기능 | 1) branch, chekout, commit, tag등 로컬 환경에서의 형상 관리 가능 2) push, fetch, pull 등 원격 환경에서의 변경 사항 전송 가능 3) 변경은 했지만 커밋에는 포함하지 않을 수 있는 staging 기능 4) SVN으로 관리되던 저장소를 Git으로 전해주는 마이그레이션 기능 5) diff를 통한 파일 내용 비교 6) 바이너리 문서 형상 관리 7) 작업 단위의 변경 사항 관리 8) .gitignore를 통한 형상 관리 배제 자원 지정 기능 |
장점 | 1) branch 생성, 이동, 병합이 매우 가벼우므로 branch를 자주 사용하여 상황에 맞게 자주 분기하고 합칠 수 있어 코드 꼬임에 따른 위험 감소 2) 각 로컬에 완전한 로컬 저장소가 있으므로 원격 저장소에 장애가 나더라도 쉽게 복구 가능 3) 여러번의 커밋을 로컬 저장소에 실행하고, 모아진 커밋을 원격 저장소에 반영할 수 있으므로 네트워킹 빈도는 줄고 속도는 항상 Pack 방식의 압축으로 SVN에 비해 저장 공간 절약 4) 다양한 써드파티 GUI 도구 존재 |
단점 | 1) CVS, SVN과 기본 개념이 많이 다르므로 적응에 시간 필요 2) sheckout, commit 등 텍스트는 가티만 의미나 동직이 SVN이나 CVS와 다른 명령어가 있어 혼란 야기 3) 빈 디렉터리가 저장되지 않음 |
'애플리케이션 > 이론' 카테고리의 다른 글
[애플리케이션] 배포 (0) | 2023.03.15 |
---|---|
[애플리케이션] 빌드 (0) | 2023.03.14 |
[애플리케이션] 배포환경 구성 (0) | 2023.03.09 |
[애플리케이션] 소스 검증 (0) | 2023.03.09 |