본문 바로가기

개발 공부

개발 버전 관리

버전의 정의

효율적으로 상품을 관리하기 위한 목적으로 소프트웨어, 하드웨어 상품의 개발 단계 또는 순서를 번호로 표시한 것으로 버전에 따라 내용과 기능에 차이가 있으므로 명확하게 표시해야한다.

버전 표기 이점

버전만으로 핫픽스된 이슈, 스팩의 구현을 볼 수 있어서 대략적인 프로젝트의 히스토리를 확인할 수 있으며, 로그 정리에 도움이 된다.

*핫픽스(Hotfix)란?
제품 사용 중에 발생하는 버그의 수정이나 취약점 보완, 또는 성능 향상을 위해 긴급히 배포되는 응급 패치 프로그램. 

*로그(log)란?
로그파일은 운영 체제나 소프트웨어가 실행 중 발생하는 이벤트등의 메세지를 기록한 파일이다.

1.0.0의 '.'의 의미

'.'을 기준으로 3 부분으로 나눌 수 있습니다.

 

major.minor.patch
주(主).부(部).수(修)

- major: 기존 버전과 호환되지 않게 API가 바뀌면 주버전을 올림

- minor: 기존 버전과 호환되면서 새로운 기능을 추가할 때는 부 버전을 올림

- patch: 기존 버전과 호환되면서 버그를 수정한 것이라면 수 버전을 올림

0.0.0과 1.0.0

최초 개발 배포를 0.1.0으로 하고, 이후 배포마다 부버전을 올린다.

1.0.0을 사용할 때는 소프트웨어가 실 서비스에 쓰이기 시작했다면 이미 1.0.0이라고 여길 수 있다.

 

pre-release 버전 표시

수버전 바로 뒤에 붙임표(-)를 붙이고 마침표(.)로 구분된 식별자를 더해서 정식 배포를 앞둔 버전을 표기할 수 있다.

- 식별자는 반드시 아스키(ASCII) 문자, 숫자, 붙임표로만 구성한다[0-9A-Za-z-].

- 식별자는 반드시 한 글자 이상으로 한다.

- 숫자 식별자의 경우 절대 앞에 0을 붙인 숫자로 표기하지 않는다.

- 정식배포 전 버전은 관련한 보통 버전보다 우선순위가 낮다

- 정식배포 전 버전은 아직 불안정하며 연관된 일반 버전에 대한 호환성 요구사항이 충족되지 않을 수도 있다.

ex) 1.0.0-alpha, 1.0.0-alpha.1,  1.0.0-0.3.7, 1.0.0-x.7.z.92.

상태 코드

alpha - 개발중인 태그에 표기

beta - 베타중인 태그에 표기

release - 공식 배포 버전에 표기

 

*베타버전이란?
 베타 버전은 많은 유저에게 (주로 무료로) 시험 사용을 하도록 하여 사용성이나 디자인, 성능 등에 관하여 의견을 받고 그것들을 소프트웨어의 개발에 반영하거나 미처 다 발견할 수 없었던 불편한 점을 보고해 수정하여, 정식 버전을 보다 좋게 완성하는 것을 목적으로 하고 있다.

베타의 종류
- 개방형 시험(오픈 베타) 
일반인에게 시험판을 공개하고, 시험 사용을 협력 받는다.
- 폐쇄형 시험(클로즈 베타)
개발자의 지인이나 전 판의 사용자 혹은 공개 모집한 사용자로 수를 제한하여 시험 사용을 협력 받는다.

버전 우선순위

  1. 우선순위는 주(major), 부(minor), 수(patch) 순서로 차례로 비교하면서, 차이가 나는 부분이 나타나면 결정된다.
    예: 1.0.0 < 2.0.0 < 2.1.0 < 2.1.1
  2. 주, 부, 수 버전이 같을 경우, pre-release 버전이 표기된 경우의 우선순위가 더 낮다.
    예: 1.0.0-alpha < 1.0.0
  3. 주, 부 및 패치 버전이 동일한 두 가지 pre-release 버전의 우선 순위는 다음과 같이 차이점이 발견될 때까지 점으로 구분된 각 식별자를 왼쪽에서 오른쪽으로 비교하여 결정해야 한다.
    1. 숫자로만 구성된 식별자는 숫자로 비교한다.
    2. 문자나 하이픈이 있는 식별자는 ASCII 정렬 순서로 사전적으로 비교한다.
    3. 숫자 식별자는 항상 숫자가 아닌 식별자보다 우선 순위가 낮다.
    4. 이전의 모든 식별자가 동일한 경우 더 큰 시험판 필드 집합이 더 작은 집합보다 우선 순위가 높다.
    예: 1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0

 

공부 링크

 

개발 버전표기 대략적으로 이해하기

버전정보를 잘.... 지키는 곳에서 업무를 해본적이 없어서 검색해서 찾은 정보들을 정리해보았다. 버전의 정의 효율적으로 상품을 관리하기 위한 목적 소프트웨어, 하드웨어 상품의 개발 단계

okayoon.tistory.com

 

소프트웨어 배포 생명 주기 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 소프트웨어 생명 주기 지도 소프트웨어 생명 주기[1](영어: Software Release Life Cycle)는 컴퓨터 소프트웨어의 개발 단계의 총체로서, 초기 개발 단계부터 마지막 출

ko.wikipedia.org

 

 

버전은 어떻게 정하면 좋을까? (Version 1.0.0, 1.0.1, 1.1.0, 2.0.0의 차이)

Git 사용시 git tag 1.0.0과 같이 tag를 붙이게 된다. 이 태그 뒤의 숫자는 어떻게 증가시키면 될까? Semantic Versioning으로 알아보자!

velog.io