IT 용어

[IT 용어 4.] Semantic Versioning (SemVer)란?

Somaz 2024. 11. 23. 10:40
728x90
반응형

Overview

Semantic Versioning (SemVer)는 소프트웨어의 버전을 의미 있게 관리할 수 있도록 도와주는 버전 체계이다.

단순한 숫자 나열이 아니라 버전 번호에 의미를 부여함으로써, 사용자와 개발자 모두가 변경의 영향 범위를 쉽게 파악할 수 있도록 설계되었다.

 

 

SemVer는 다음과 같은 형식으로 구성된다.

MAJOR.MINOR.PATCH
  • MAJOR: 호환되지 않는 변경이 있을 때 증가
  • MINOR: 호환되는 새로운 기능이 추가될 때 증가
  • PATCH: 호환되는 버그 수정이 이루어졌을 때 증가

 

 

이러한 규칙은 버전의 일관성을 유지하면서도, 팀 간 협업 및 라이브러리 소비자와의 신뢰 있는 계약(contract) 을 제공하는 데 핵심 역할을 한다.

 

또한, alpha, beta, rc 와 같은 Pre-release 버전, 그리고 +build 와 같은 빌드 메타데이터를 통해 개발 과정에서의 다양한 상태를 명확하게 표현할 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 


 

 

Semantic Versioning (SemVer)란?

Semantic Versioning(SemVer)은 소프트웨어 릴리스에 의미 있는 버전 번호를 할당하는 데 사용되는 버전 관리 체계이다. 이는 개발자와 사용자가 새 릴리스의 변경 사항과 프로젝트에 미치는 잠재적 영향을 이해하는 데 도움이 된다.

 

 

 

SemVer 형식

SemVer의 버전 번호는 다음 형식을 따른다.

MAJOR.MINOR.PATCH
  • MAJOR: 호환되지 않는 변경을 수행할 때 증가
    • 예: 1.0.0 → 2.0.0
  • MINOR: 이전 버전과 호환되는 기능을 추가하면 증가
    • 예: 1.0.0 → 1.1.0
  • PATCH: 이전 버전과 호환되는 버그를 수정하면 증가
    • 예: 1.0.0 → 1.0.1

 

 

 


 

 

 

주요 개념

 

Backward Compatibility

  • MAJOR 릴리스로 인해 기존 통합이 중단될 수 있다.
  • MINOR 릴리스는 기존 동작을 중단하지 않고 새로운 기능을 추가한다.
  • PATCH 릴리스는 새로운 기능을 추가하거나 중단하지 않고 문제를 해결한다.

 

Pre-release Versions

  • 하이픈과 식별자를 추가하여 표시: 1.0.0-alpha, 1.0.0-beta.1.
  • 버전이 아직 안정적이지 않으며 테스트용임을 나타낸다.

 

Build Metadata

  • '+' 및 메타데이터: 1.0.0+build123 을 추가하여 표시된다.
  • 빌드 또는 배포 관련 세부 정보에 사용된다(버전 우선 순위에서는 무시됨).

 

 

 

 

 


 

 

 

 

 

SemVer의 규칙

 

초기 개발

  • 버전은 0.y.z (예: 0.1.0 )에서 시작된다.
  • 첫 번째 안정 릴리스(1.0.0)까지는 브레이킹 체인지가 자주 발생할 것으로 예상된다.

 

버전 우선순위

  • 우선순위는 숫자로 계산된다.
  • 예:
    • 1.0.0  > 0.9.9
    • 1.2.3-alpha1.2.3

 

버전 안정성

  • MAJOR 번호의 변경은 주요 변경 사항이 포함된 새 버전을 나타낸다.
  • MINOR 업데이트는 프로젝트와 호환되지 않는 종속성을 도입하지 않는 한 채택해도 안전하다.

 

 

 

 

SemVer를 사용해야 하는 이유

  • 명확성: 변경 사항의 유형과 영향을 명확하게 이해할 수 있다.
  • 호환성: 종속성 간의 원활한 통합을 보장한다.
  • 자동화: 종속성 관리자와 같은 도구를 사용하여 버전 업데이트를 자동으로 처리할 수 있다.

 

 

 

 

 


 

 

 

 

마무리

버전 번호는 단순한 숫자가 아니다.


의미 있는 버전 관리 체계인 SemVer를 도입하면, 프로젝트의 유지보수성, 협업 효율성, 그리고 사용자 신뢰도 모두 크게 향상될 수 있다.

 

특히 오픈소스 라이브러리나 마이크로서비스 환경에서는,

호환성 보장과 안전한 자동화 배포를 위해 SemVer는 사실상의 표준이라고 할 수 있다.

 

 

다음 프로젝트에서 1.0.0을 선언하기 전에, 진짜로 API가 안정적인지 다시 한번 돌아보자.

그리고 2.0.0을 내보낼 때, 사용자에게 어떤 변화가 생기는지 꼭 문서로 함께 알려주자.

버전은 약속이며, SemVer는 그 약속을 지키는 방법입니다.

 

 

 

 

 

 

 


Reference

https://semver.org/

728x90
반응형