..
Why Version Management Matters
TOC
Overview
소프트웨어는 계속 수정되고 여러 환경에 배포된다. 같은 애플리케이션이라도 소스 코드, 빌드 결과, 테스트 환경, 운영 환경에 서로 다른 상태가 존재할 수 있다.
버전은 이 상태를 구분하기 위한 식별자다.
소프트웨어 상태를 구분해야 하는 이유
운영 중인 애플리케이션에 문제가 생기면 다음 정보를 확인해야 한다.
- 어떤 소스 코드로 빌드했는가
- 언제 빌드하고 배포했는가
- 어떤 변경이 포함됐는가
- 이전에 배포한 상태와 무엇이 다른가
이 정보를 확인하려면 소스 코드와 배포 결과물을 특정할 수 있어야 한다. 버전은 이때 사용하는 기준 중 하나다.
버전으로 확인할 수 있어야 하는 것
버전관리 체계는 다음 작업에 사용할 수 있어야 한다.
변경 추적
특정 버전에 포함된 commit과 변경 내역을 확인한다.
문제 재현
문제가 발생한 버전의 소스 코드와 배포 결과물을 확인하고 같은 상태를 다시 구성한다.
호환성 확인
서버, API, 웹 애플리케이션, 모바일 애플리케이션이 어떤 버전 조합에서 동작하는지 확인한다.
지원 범위 관리
현재 지원하는 버전과 지원을 종료한 버전을 구분한다.
버전 번호와 함께 관리해야 하는 정보
2.4.1 같은 번호만 기록하면 운영에 필요한 정보가 부족하다. 다음 정보를 함께 연결해야 한다.
- 소스 commit 또는 Git tag
- build number
- 배포 artifact
- 배포 환경과 시점
- 변경 내역
- 호환성 정책
- 지원 종료 조건
Git tag는 사람이 읽는 릴리스 이름으로 사용할 수 있다. commit hash는 tag가 가리키는 소스 상태를 정확하게 식별한다. 배포된 artifact까지 연결해야 실제 운영 상태를 추적할 수 있다.
정리
버전관리는 변경된 소프트웨어의 상태를 구분하고, 그 상태와 변경 내역·배포 결과물·호환성·지원 범위를 연결하기 위해 필요하다.