[Git] 버전 관리(Version Control)란? 그리고 목표는?

    버전 관리란?

    '버전 관리(Version Control)'는 파일 변경 사항을 시간에 따라 기록하고, 필요할 때 특정 버전을 다시 호출할 수 있는 시스템을 일컫는다.

    간단히 설명하자면 동일한 정보에 대해 여러 버전을 정의하고 관리하는 것을 의미한다.

    특히 소프트웨어 엔지니어링 분야에서는 일반적으로 소프트웨어의 소스 코드의 변경 사항을 추적한 내역을 '버전 관리'라고 칭한다.

    하지만 이는 주로 과거의 관습이고, 최근에는 소프트웨어 구성을 이루는 소스 코드 뿐 아니라 각종 환경, 설정 파일등을 모두 포함하는 소프트웨어 구성 관리(SCM, S/W CM; Software Configuration Management)라는 확장된 개념이 등장되었다.

    이를 주로 형상 관리라고도 한다.

     

    - 관련 용어 정리 -

    • 버전 관리(VC; Version Control, RC; Revision Control)
    • 소스 관리(SC; Source Control), 소스 코드 관리(SCC; Source Code Control)
    • 형상 관리(CM; Configuration Management)
      → 시스템이나 프로젝트의 구성 요소를 식별, 관리, 추적하고 보고하는 과정
    • 소프트웨어 구성 관리(SCM; Software Configuration Management)
      → 소프트웨어 개발 과정에서 변경 사항을 관리하고 통제하는 활동을 의미
    • 빌드 관리(Build Management)
      → 소스 코드를 실행 가능한 소프트웨어 아티팩트(ex; 실행 파일, 웹 페이지)로 변환하는 과정을 관리하는 것
    • 릴리즈 관리(Release Management)
      → 소프트웨어의 새로운 버전이 안정적으로 배포되고 실행될 수 있또록 하는 과정

     

    버전 관리를 하는 이유

    버전 관리는 여러 가지 이유로 중요하게 여겨지고 수행된다.

    히스토리 추적 & 관리

    개발자들은 이전 버전(이력; history)을 확인할 수 있고 필요한 경우 특정 버전으로 롤백할 수 있다.

    이로써 새로운 기능을 추가하거나, 버그를 수정할 때 발생할 수 있는 예측 불가능한 위험을 줄일 수 있어 대규모 개발 과정을 보다 안전하게 이끌어나갈 수 있다.

    협업

    과거와는 다르게 하나의 프로젝트를 한 명의 개발자가 개발하기 보다는 거대한 규모의 프로젝트를 다수의 개발자가 지속적으로 개발, 배포, 운영하는 환경이 기하급수적으로 많아졌다.

    버전 관리를 통해서 다수의 개발자가 동시에 작업할 수 있는 환경을 보다 안전하고 효율적으로 만들어준다.

    특히 협업시 흔히 발생하는 버전 충돌(conflict)을 방지할 수 있고, 이 충돌을 쉽게 해소(resolve)할 수 있으며 다른 개발자의 작업 내역을 쉽게 확인할 수도 있다.

    백업 & 복구

    위의 내용들과 조금 중복되긴 하지만, 버전 관리를 안정성 측면에서 강제적으로 수행하는 경우도 많다.

    프로젝트 파일이 손상되거나 유실되었을 때, 또는 충돌을 원만하게 해소하지 못했거나 형상 관리자의 실수로 버전이 꼬였을 때 언제든지 이전 버전 혹은 검증된 버전으로 롤백이상 상태를 복구할 수 있다.

    댓글

    Designed by JB FACTORY