본문 바로가기
Category/Note

소프트웨어 버전 관리하기 - 시맨틱 버전(Semantic Versioning, SemVer)이란?

by Corinee 2025. 3. 15.
728x90
반응형

X.Y.Z (메이저.마이너.패치) 버전 관리 규칙

소프트웨어 버전 관리는 보통 시맨틱 버전(Semantic Versioning, SemVer)을 따릅니다.
크롬 익스텐션뿐만 아니라, 대부분의 소프트웨어에서 X.Y.Z 형식을 사용합니다.

X.Y.Z  (Major.Minor.Patch)
              버전 형식                      의미                                예시
X (Major, 메이저 버전) 기존과 호환되지 않는 큰 변경 1.0.0 → 2.0.0
Y (Minor, 마이너 버전) 새로운 기능 추가 (기존 기능과 호환 가능) 1.0.0 → 1.1.0
Z (Patch, 패치 버전) 버그 수정, 성능 개선 (기능 변화 없음) 1.1.0 → 1.1.1

X (Major, 메이저 버전)

메이저 버전은 크게 변경된 사항이 있을 때 증가합니다.
이전 버전과 호환되지 않는 Breaking Change(하위 호환성 깨짐)가 포함될 때 사용됩니다.

 

언제 올려야 할까?

  • 기존 기능과 완전히 다른 방식으로 작동하는 업데이트가 포함될 때
  • 이전 버전과 호환되지 않는 변경이 있을 때
  • 대규모 리팩토링, API 변경, 데이터 구조 변경

예시

"version": "1.0.0" → "2.0.0"
  • UI/UX 대규모 개편
  • 주요 기능 변경 (이전 사용 방식과 다름)
  • 기존 API를 삭제하고 새로운 API 추가

Y (Minor, 마이너 버전)

마이너 버전은 새로운 기능이 추가되지만, 기존 기능과 호환성이 유지될 때 증가합니다.
즉, 사용자는 기존 기능을 그대로 사용할 수 있습니다.

 

언제 올려야 할까?

  • 기존 기능을 그대로 두고, 새로운 기능을 추가했을 때
  • UI 변경, UX 개선 등 기능 확장이 포함될 때

예시

"version": "1.0.0" → "1.1.0"
  • 다크 모드 추가
  • 검색 필터 기능 추가
  • 기존 버튼 스타일 변경

Z (Patch, 패치 버전)

패치 버전은 기능 추가 없이 버그 수정 및 최적화가 있을 때 증가합니다.
사용자에게 눈에 띄는 변화는 없지만, 성능 개선 및 안정성 향상을 포함합니다.

 

언제 올려야 할까?

  • 버그 수정 (오류 해결, 충돌 수정 등)
  • 성능 최적화 (속도 개선, 메모리 사용 최적화 등)
  • UI/UX 마이너 개선 (색상 변경, 텍스트 수정 등)

예시

"version": "1.1.0" → "1.1.1"
  • 로그인 버튼이 클릭되지 않는 버그 수정
  • 일부 기기에서 깨지는 UI 문제 해결
  • 네트워크 요청 속도 최적화

추가적인 버전 관리 (Optional)

때때로 추가적인 네 번째 자리를 사용하기도 합니다.
예를 들어:

X.Y.Z.W (Major.Minor.Patch.Build)
        버전 형식                       설명                              예시
X (Major) 큰 변경 (호환되지 않음) 2.0.0.0
Y (Minor) 기능 추가 (호환됨) 2.1.0.0
Z (Patch) 버그 수정 2.1.1.0
W (Build) 작은 수정, 내부 배포 2.1.1.1

이 방식은 보통 테스트 버전이나 내부 배포용으로 사용됩니다.

실제 예제 (버전 업데이트 흐름)

기본 버전

"version": "1.0.0"

버그 수정

"version": "1.0.1"

새로운 기능 추가

"version": "1.1.0"

대규모 변경 (호환되지 않음)

"version": "2.0.0"

정리

  • X (Major, 메이저 버전) → 큰 변화, 호환되지 않는 업데이트
  • Y (Minor, 마이너 버전) → 기능 추가, 기존 기능과 호환 가능
  • Z (Patch, 패치 버전) → 버그 수정, 성능 최적화