본문 바로가기
TWIL

Semantic Versioning : SemVer 에 대해 알아보자

by swims 2025. 3. 8.
Semantic versioning?

 

거의 매일 새로운 플러그인, 애드온, 라이브러리, 확장 프로그램이 만들어지고 있는 상황에서 범용적인 버전 관리 방법을 갖추는 것이 소프트웨어의 변경을 추적하는 가장 좋은 방법이다. 이를 위해 시멘틱 버저닝(Semantic Versioning, SemVer)이 사용된다.

 

시멘틱 버저닝은 소프트웨어 릴리즈 버전의 네이밍 규칙이다.

 

Spring boot 의 버전을 보면 다음 형식처럼 구성되어 있는걸 익숙하게 봤을 것이다. 

org.springframework.boot:spring-boot:3.4.3

 

https://www.geeksforgeeks.org/introduction-semantic-versioning/

 

 

Semantic Verisioning은 X.Y.Z 형식으로 이뤄져 있는데, 왼쪽부터

 

  • Major version : 메이저 버전으로 1씩 증가하고, 이 버전을 올리면 Minor 버전과 Patch 버전은 0으로 초기화 된다. 기존 API 가 변경 또는 삭제될 때 Major 버전을 올린다.
    • 예를 들어 현재 버전이 2.6.9 인 경우에 다음 메이저 버전 업은 3.0.0이 된다.
  • Minor Version : 마이너 버전으로 이전 버전과 호환되는 방식으로 새로운 API가 추가되었을 때 사용된다. Minor 버전을 1 올리면 패치 버전은 0으로 초기화 된다.
    • 예를 들어 현재 버전이 2.6.9 인 경우 Minor 버전에 대한 다음 업그레이드는 2.7.0 된다.
  • Patch Version : 패치 버전은 버그 수정에 사용되고, 기능은 변경되지 않아서 이전 버전과 호환이 되는 경우 사용된다. 현재 버전이 2.6.9인 경우 패치 버전업을 하면 2.6.10이 되고, 패치 버전숫자는 제한없이 업그레이드 할 수 있다.

참고로, 첫 번째 버전은 버그 수정이 이루어지지 않았기 때문에 0.0.1이 아닌 0.1.0에서 시작한다. 또한, Major 버전 0.x.x은 개발 단계에서 사용하고, stable 한 버전으로는 보지 않는다. 그래서 첫 번째 공개 API 버전은 1.0.0에서 시작한다.

 

 

Reference

https://semver.org/lang/ko/

 

유의적 버전 2.0.0

Semantic Versioning spec and website

semver.org