제품 소프트웨어 버전 관리 🔄

출제 빈도: 하
빈출 태그: 형상 관리, 형상 관리 기능/역할, 형상 관리 도구별 특징

Git을 매일 쓰면서도 commit이 왜 commit이라 불리는지, checkout이 왜 그 이름인지 생각해본 적이 없다면, 이 개념들이 형상 관리(Configuration Management)라는 더 큰 범주에서 왔다는 걸 알아두면 도움이 된다. 형상 관리 도구는 Git 이전에도 RCS·CVS·SVN 등으로 계속 발전해왔고, 지금 익숙한 명령어 상당수가 그 계보에서 이름을 물려받았다.

1. 제품 소프트웨어 버전 등록

  • 형상 관리는 곧 버전 관리를 의미합니다.
  • 개발 단계별 산출물을 관리하는 기술입니다.
  • 변경 사항(버전)을 체계적으로 관리합니다.

형상 관리의 중요성

  • 제품 소프트웨어는 개발 통제가 중요합니다.
  • 형상 관리가 미흡할 경우 발생하는 문제:
    • 무절제한 변경이 발생할 수 있음
    • 가시성 결핍 발생
    • Insight 결여 (원인 분석에 필요한 요소를 한눈에 파악하기 어려움)

2. 형상 관리 도구

주요 기능

  • check-out: 형상의 사본을 컴퓨터로 다운로드
  • check-in: 수정된 소스 코드를 저장소에 업로드
  • commit: 최종 승인
  • update: 저장소와 컴퓨터의 형상 동기화 (수정 전 필수)
  • import: 최초 소스 업로드
  • export: 버전 관리 파일을 제외한 소스코드만 다운로드

Git 기준 버전 등록 절차

  1. 추가(Add): 파일을 저장소에 추가
  2. 인출(Check-out): 추가된 파일을 개발자가 인출
  3. 예치(Commit)
  4. 동기화(Update)
  5. 차이(Diff): 추가/변경된 파일 간 차이 확인

3. 소프트웨어 형상 관리 체계

주요 개념

  • ALM (Application Lifecycle Management): 전체 라이프 사이클 관리
  • ITIL (IT Infrastructure Library): IT 서비스 제공/관리 용이화
  • ITSM (IT Service Management): SLA에 맞는 IT 서비스 제공
  • SLA (Service Level Agreement): 협의된 서비스 수준
  • EAMS: EA의 관리/활용 시스템
  • EA: 기업의 IT 청사진
  • PPM: 중앙 집중식 프로세스 관리

4. 형상 관리 도구 활용

사용 목적

  • 관리 편의성 향상
  • 생산성 개선
  • 적은 비용과 인력으로 형상 관리 가능
  • 주의: 미숙한 사용 시 개발 복잡도 증가 가능

사용 유의사항

  • 공식적 합의 필요
  • 배포 후 수정 중인 도구 사용 시 신중한 접근 필요

형상 관리 도구의 필요성

  • 상시 접근 가능성 확보
  • 무단 수정 방지

5. 형상 관리 도구 종류

저장소 유형별 분류

  • 공유폴더: RCS, SCCS
  • 클라이언트/서버: CVS, SVN
  • 분산 저장소: Git, Bitkeeper

저장소 구분

  • 로컬 형상관리
  • 중앙 집중형
  • 분산형

소스 공개 유형

  • 오픈 소스 관리 도구
  • 상용 형상 관리 도구

주요 형상 관리 도구 특징

  • CVS:
    • 서버-클라이언트 구조
    • 다수 인원의 동시 접근 가능
    • 범용 운영체제 지원
  • SVN:
    • CVS의 단점 보완
  • RCS:
    • 단일 사용자 수정 제한
    • 다중접속 불가
  • BitKeeper:
    • 중앙 통제 방식 버전 관리
  • Git:
    • Bitkeeper 대체
    • 고속 분산형 형상 관리
    • 대형 프로젝트 적합
    • 자유 소프트웨어
  • Clear Case:
    • IBM 제작

핵심 정리

  • 저장소 구조는 로컬 → 중앙집중형(CVS/SVN, 서버 하나에 의존) → 분산형(Git, 모든 개발자가 저장소 전체 사본을 가짐) 순서로 발전했고, 이 흐름을 알면 왜 Git이 “서버 없이도 커밋할 수 있는지”가 자연스럽게 이해된다.
  • check-out(가져오기)·check-in(올리기)·commit(확정)·update(동기화)라는 형상 관리의 공통 동사들은 Git의 clone/fetch, push, commit, pull과 거의 1:1로 대응한다 — 도구는 바뀌어도 형상 관리의 기본 동작 개념은 그대로 이어져 온 셈이다.