PMDEXIT 프로젝트 용어사전

형상관리

Version Control

소스·산출물의 변경 이력을 관리하는 형상관리. Git이 사실상 표준.

형상관리란 무엇인가

형상관리(Version Control)는 소스 코드와 각종 산출물의 변경 이력을 체계적으로 기록하고 통제하는 활동이다. 누가 언제 무엇을 왜 바꾸었는지를 남겨, 임의의 시점으로 되돌아가거나 변경의 경위를 추적할 수 있게 한다.

코드뿐 아니라 설정 파일, 문서, 빌드 스크립트처럼 프로젝트의 상태를 구성하는 자산이 폭넓게 대상이 된다. 변경을 통제 가능한 형태로 다룬다는 점에서, 형상관리는 협업과 품질의 기반이자 출발점에 해당한다.

변경 이력이 남지 않으면 문제의 원인을 좁혀 찾기 어렵고, 여러 사람이 같은 자산을 동시에 다루는 일도 사실상 불가능해진다.

변경 단위이력분기병합기준 상태변경 통제형상관리커밋브랜치베이스라인
형상관리의 핵심 개념

Git이 사실상 표준이 된 이유

오늘날 형상관리 도구의 사실상 표준은 분산형 도구인 Git이다. 각 개발자가 전체 이력을 자신의 저장소에 복제해 두므로, 중앙 서버에 연결되지 않은 상태에서도 커밋과 이력 조회가 가능하다.

가지치기(브랜치)와 병합 비용이 낮아 여러 작업을 동시에 안전하게 진행할 수 있다는 점도 널리 채택된 배경이다. 중앙 집중형 도구가 가졌던 단일 지점의 병목과 위험을 분산 구조가 상당 부분 완화했다.

이 특성이 대규모 협업과 잦은 변경을 자연스럽게 떠받친다.

커밋과 이력의 가치

형상관리의 단위는 변경을 묶은 기록, 곧 커밋이다. 잘 다듬어진 커밋은 하나의 의미 있는 변경을 담고, 그 이유를 메시지에 명확히 남긴다.

이렇게 쌓인 이력은 결함이 끼어든 시점을 좁혀 찾거나, 과거의 설계 의도를 되짚는 데 결정적인 단서가 된다. 변경을 한꺼번에 거대한 덩어리로 올리면 추적성이 떨어지고 되돌리기도 어려워진다.

따라서 변경을 적정한 크기로 나누어 기록하는 규율이 이력의 품질을 좌우한다.

구분중앙 집중형분산형 Git
이력 보관중앙 서버각자 복제
오프라인 커밋불가가능
병합 비용높음낮음
Git이 표준이 된 배경

브랜치 전략과 협업

여러 사람이 동시에 작업할 때는 브랜치 운영 방식, 곧 브랜치 전략이 협업의 질을 결정한다. 기능별로 가지를 나누어 독립적으로 개발하고, 검토를 거쳐 본류에 병합하는 흐름이 일반적이다.

병합 과정에서 충돌이 발생하면 변경의 의도를 비교해 해소해야 하므로, 작업을 너무 오래 묵히지 않고 자주 통합하는 편이 충돌의 부담을 낮춘다. 명확한 전략이 없으면 본류가 불안정해지고, 누구의 변경이 어디에 반영되었는지 추적이 흐려진다.

베이스라인과 변경 통제

형상관리의 핵심 개념 중 하나가 베이스라인(Baseline)이다. 베이스라인은 특정 시점에 합의되어 고정된 산출물의 기준 상태로, 이후 변경은 이 기준에 대한 차이로 통제된다.

출시나 검수처럼 중요한 분기점에서 베이스라인을 설정해 두면, 무엇이 승인된 상태이고 무엇이 그 이후의 변경인지가 분명해진다. 변경 통제 절차와 결합될 때 베이스라인은 임의의 수정이 기준을 무너뜨리는 일을 막는다.

이렇게 기준과 차이를 분리해 관리하는 것이 형상관리의 본령이다.

CI/CD와의 연결

형상관리는 그 자체로 끝나지 않고 자동화 파이프라인의 입구 역할을 한다. 저장소에 변경이 반영되는 순간을 신호로, CI/CD가 빌드와 테스트, 배포를 이어서 수행하는 구조가 DevOps의 기본 골격이다.

따라서 본류에 들어가는 변경의 품질이 곧 파이프라인 전체의 안정성을 좌우한다. 검증되지 않은 변경이 본류에 섞이면 자동화의 이점이 오히려 결함을 빠르게 퍼뜨리는 통로가 된다.

형상관리의 규율과 자동화는 따로 떼어 생각하기 어려운 한 쌍이다.

관련 용어