semver - Semantic Versioning

date
Jul 3, 2023
slug
semver
author
status
Public
tags
Etc
summary
type
Post
thumbnail
4.jpg
category
updatedAt
Aug 3, 2025 02:38 PM

소프트웨어 버전 작성 (Software Versioning)

소프트웨어 버전 작성은 소프트웨어의 특정 상태를 식별하고 추적하기 위한 체계적인 방법입니다. 개발 과정에서 발생할 수 있는 혼란을 줄이고, 사용자 및 개발자 간의 소통을 원활하게 하기 위해서 일관된 버전 작성 기준이 필요합니다.
여러 버전 관리 방법 중 Semantic Versioning (유의적 버전 관리)이 가장 널리 사용되고 있습니다. 이번 글에서는 Semantic Versioning의 개념과 규칙을 자세히 알아보겠습니다.
 

Semantic Versioning이란?

Semantic Versioning(세만틱 버저닝)은 GitHub 공동 창립자인 Tom Preston-Werner가 제안한 소프트웨어 버전 관리 규칙입니다. 현재 공식 사양은 2.0.0 버전입니다.
버전은 주.부.수 (MAJOR.MINOR.PATCH) 형식으로 관리하며, 공개 API의 변경 사항에 따라 규칙적으로 버전을 증가시킵니다.
예: 1.4.2
→ Major: 1, Minor: 4, Patch: 2
 

🔢 버전 번호의 의미

버전
의미
예시
MAJOR
하위 호환되지 않는 변경 발생 시
1.0.0 → 2.0.0
MINOR
하위 호환되는 기능 추가/개선 시
1.0.0 → 1.1.0
PATCH
버그 수정 등 사소한 변경 시
1.0.0 → 1.0.1
 

상세 규칙 정리

  1. 공개 API 정의 필수
      • 공개 API는 코드나 문서로 명시되어야 하며, 이 변경 여부에 따라 버전이 올라갑니다.
  1. 버전 형식
      • X.Y.Z 형식 (모두 0 이상의 정수)
      • 예: 2.5.1
  1. 증가 규칙
      • MAJOR 변경 시: X 증가, YZ는 0으로 초기화
      • MINOR 변경 시: Y 증가, Z는 0으로 초기화
      • PATCH 변경 시: Z만 증가
  1. 불변성 (Immutability)
      • 공개된 버전은 절대 수정하지 않아야 하며, 변경은 새로운 버전으로만 가능
  1. 0.x 버전의 의미
      • 0.Y.Z초기 개발 단계이며, API는 안정적이지 않음
  1. 버전 변화 기준
      • PATCH: 버그 수정 (하위 호환 유지)
      • MINOR: 새 기능 추가, 개선, 하위 호환되는 deprecate
      • MAJOR: 하위 호환되지 않는 변경 (삭제, 변경 등)
  1. 선행(pre-release) 버전
      • alpha, beta, rc 등으로 표기
      • 예: 1.0.0-alpha, 1.0.0-rc.1
      • 정식 버전보다 낮은 우선순위
  1. 빌드 메타데이터
      • + 기호로 표기, 정렬 순서에는 영향을 주지 않음
      • 예: 1.0.0+build.123
 

예시로 이해하기

1.0.0 # 첫 번째 안정 버전 1.0.1 # 버그 수정 1.1.0 # 새로운 기능 추가 2.0.0 # 하위 호환되지 않는 변경 2.0.0-alpha # 다음 주요 버전의 사전 배포 2.0.0+202308 # 빌드 메타 정보 포함
 

요약

  • 버전은 주(主).부(部).수(修) 형식 (MAJOR.MINOR.PATCH)
  • 하위 호환을 깨뜨리는 변경 → MAJOR
  • 새로운 기능, 개선 (호환 유지) → MINOR
  • 버그 수정 → PATCH
  • 사전 배포 / 메타 정보는 및 +로 추가
 

🔗 참고 자료