Semantic Versioning(시맨틱 버전)은 소프트웨어 버전 관리를 위한 규칙 중 하나로, 버전 관리에 일관성과 가독성을 제공하기 위한 목적으로 만들어졌습니다. Semantic Versioning에서는 버전을 MAJOR.MINOR.PATCH와 같은 형식으로 표기하며, 이들을 명확히 구분하여 버전 변화가 어떤 의미를 가지는지를 명확하게 정의합니다.
- MAJOR: 기존 버전과 호환되지 않는 대규모 변경사항이 있을 때 증가합니다. 보통 API 변경, 새로운 기능 추가, 기존 기능 삭제 등이 이에 해당합니다.
- MINOR: 기존 버전과 호환되는 새로운 기능이 추가되거나 기존 기능이 개선되는 경우 증가합니다. API의 추가, 기능의 개선 등이 이에 해당합니다.
- PATCH: 기존 버전에서 발견된 버그를 수정하는 경우 증가합니다. 보안 패치, 버그 수정 등이 이에 해당합니다.
예를 들어, 현재 버전이 1.2.3인 소프트웨어가 있을 때, 1.3.0 버전은 기존 버전과 호환성을 유지하면서 새로운 기능을 추가한 경우, 2.0.0 버전은 API가 완전히 변경되어 호환성이 없어지는 경우, 1.2.4 버전은 기존 버전에서 발견된 버그를 수정한 경우에 대해 사용됩니다.
Semantic Versioning은 이들 버전을 명확히 구분하고, 버전 변화가 어떤 의미를 가지는지를 명확하게 정의하여, 버전 관리의 일관성과 가독성을 높입니다. 따라서, 다른 개발자나 사용자들이 버전을 쉽게 파악하고, 버전 변화에 따른 영향을 쉽게 예측할 수 있습니다.
또한, Semantic Versioning은 버전 관리를 위한 규칙이므로, 버전이 어떻게 변경되어야 하는지를 명확히 정의하고 있습니다. 이를 통해 개발자들은 버전 관리를 통해 소프트웨어를 보다 효율적으로 개발하고, 유지보수할 수 있습니다.
하지만, Semantic Versioning이 모든 상황에 적용되는 것은 아니며, 예외적인 상황에서는 이를 유연하게 적용할 필요가 있습니다. 예를 들어, 기존 버전과 호환성이 유지되는데도 MAJOR 버전이 증가하는 경우도 있을 수 있습니다. 따라서, Semantic Versioning을 적용할 때에는 상황에 따라 유연하게 적용할 필요가 있습니다.
'기타' 카테고리의 다른 글
ICE Score (0) | 2023.02.22 |
---|---|
OMTM(One Metric That Matters) (0) | 2023.02.22 |
트랜잭션 격리 수준 (Transaction Isolation level) (0) | 2023.02.22 |
수평적 확장과 수직적 확장 (0) | 2023.02.22 |
NoSQL과 RDBMS 비교 (0) | 2023.02.22 |