Software Development/🚩Software Dev Basics

버전 표기법, 시맨틱 버저닝

달싹이 2024. 8. 7. 07:52
728x90
반응형

시맨틱 버저닝

시맨틱 버저닝(SemanticVersioning, SemVer)은 대표적으로 숫자 3개를 사용하는 버전 표기 방식이다.

 

첫번째 숫자의 의미(1.0.0 → 2.0.0)

소프트웨어에 큰 변화가 있을 때 숫자가 증가한다.

기존 기능의 호환성이 깨질 수 있는 수준의 큰 수정이나 변경 사항이 포함된다.
따라서 기존 사용자나 개발자들은 코드나 사용법을 다시 배워야 할 수 있으며, 새로운 버그나 이슈가 생길 가능성이 있다. 이러한 이유로, 메이저 버전 업데이트는 주로 큰 프로젝트에 대해서는 신중히 결정해야 한다.

 

두번째 숫자의 의미(1.1.0 → 1.2.0)

전체적인 프로그램의 큰 변화가 있었던 첫번째 숫자와는 달리 부분적인 새 기능이 추가되었을 때 숫자가 증가한다.
기존 기능이나 API의 호환성은 유지되므로, 사용자나 개발자들이 쉽게 업데이트할 수 있다.

보통 기존의 기능에 영향을 주지 않고 새로운 기능이나 개선 사항이 추가될 때 주로 사용된다.
새로운 기능을 통해 필요했던 요구사항이 충족되었을 수 있어 반가운 업데이트가 될 수 있다.

 

세번째 숫자의 의미(1.1.14 → 1.1.15)

주로 버그 수정이나 작은 패치가 있을 때 숫자가 증가한다.

기능 변경 없이 기존 문제점을 해결하거나 성능을 개선하는 경우에 사용된다.

사용자 입장에서는 안정성과 성능 개선을 위해 업데이트하는 것이 좋으며, 정기적으로 자주 이루어질 수 있다.

따라서 세번째 숫자는 정기적이거나 급하게 오류를 수정하고 패치를 했을 경우 숫자가 오르기에 자주 바뀔 수 있다.

 

그 외의 버전 표기법들

1. 날짜 기반 버전(Date-Based Versioning)

  • 설명: 소프트웨어 릴리스 날짜를 기반으로 버전을 지정하는 방법
  • 형식: YYYY.MM.DD  or  YYYY.MM
  • : 2024.08.07, 2024.08
  • 장점:
    • 릴리스 날짜를 직관적으로 알 수 있다.
    • 주기적인 릴리스 관리에 용이하다.
  • 단점:
    • 기능 변경이나 호환성 여부를 알기가 어렵다.

2. 유닉스 에포크 버전(Unix Epoch Versioning)

  • 설명: 유닉스 시간(1970년 1월 1일부터 경과된 초)을 기반으로 버전을 지정하는 방식
  • 형식: Epoch
  • : 1620123456 (특정 시점의 유닉스 타임스탬프)
  • 장점:
    • 버전 간의 순서를 정하기 쉽고 자동화된 시스템에 좋다.
  • 단점:
    • 사람에게는 직관적이지 않아 날짜를 쉽게 파악하기 어렵다.

3. 릴리스 이름 버전(Release Name Versioning)

  • 설명: 특정 코드 이름을 사용하여 버전을 나타내는 방식
  • 형식: 릴리스마다 별도의 이름을 사용
  • : Ubuntu의 "Bionic Beaver", Android의 "Marshmallow"
  • 장점:
    • 특정 릴리스에 대한 기억과 식별이 용이
  • 단점:
    • 이름만으로는 버전 순서를 알기 어렵다.

4. 분기 기반 버전(Branch-Based Versioning)

  • 설명: 소스 코드 관리 시스템의 특정 분기(branch)를 기준으로 버전을 지정하는 방식
  • 형식: branch-name.commit-count 또는 branch-name.commit-hash
  • : feature-x.100, main.abc1234
  • 장점:
    • 개발 중인 특정 기능이나 분기의 상태를 반영할 수 있다.
  • 단점:
    • 분기와 커밋 상태에 따라 버전이 자주 바뀔 수 있어 관리가 복잡해질 수 있다.

5. 시퀀스 버전(Sequence Versioning)

  • 설명: 단순히 릴리스된 순서대로 숫자를 증가시켜 버전을 지정하는 방식
  • 형식: 단순히 숫자를 증가시킴 (1, 2, 3, ...)
  • 장점:
    • 간단하고 이해하기 쉽다.
  • 단점:
    • 버전만으로는 변경 사항의 크기나 중요성을 알기 어렵다.

결론

시맨틱 버저닝은 호환성과 기능 추가 등을 명확히 표현하기 때문에 널리 사용되지만, 다른 방법들도 각각의 장점이 있어 적절한 상황에 맞춰 사용할 수 있다.

프로젝트의 특성과 요구에 맞는 버전 표기법을 골라야 한다.

반응형