Hyperskill - 컴퓨터 CS 및 영어 독해/Introduction to Git

Semantic versioning - 의미론적 버전 관리 (시멘틱 버저닝)

코딩크리처 2024. 6. 1. 21:33

hyperskill - Semantic versioning 영어 원문

소프트웨어 개발의 세계에서는, 우리는 패키지 (packages) 라고 불리는 프로그램 파일의 집합에 의존하곤 합니다.

패키지들은 코드 재사용성에 있어 개발 시간을 용이하게 해 줍니다.

또 다른 중요한 기능은, 개발자들에게 있어 전역적인 라이브러리로서 세계적으로 공유 될 수 있다는 점 입니다.

그러므로, 개발자들은 모든 것을 인터넷에서 가져와서 작성 할 필요가 없습니다.

복잡성이 증가함에 따라, 통합해야 할 패키지의 수가 많아졌습니다.


패키지들은 다양한 이유로 업데이트됩니다.

이를 업데이트하면 기존의 코드가 부서질 수 있습니다.

하지만 이러한 패키지들을 업데이트하지 않으면, 중요한 기능이나 패치들을 놓칠 수 있습니다.


운 좋게도, 우리는 패키지를 업데이트하면 우리의 코드가 손상 될 까 생각 할 필요가 없는데,

이는 semantic versioning (의미론적 버전 관리) 가 위의 문제를 해결하기 때문입니다.

semantic versioning 은 영어로서 더 의미를 가집니다. 앞으로 영어로 쓸 예정입니다.

이는 우리가 어떤 종류의 업데이트인지 알기 위해서 소프트웨어 릴리즈의 버전을 관리하는 방식입니다.


Semantic versioning structure - 시멘틱 버저닝의 구조


sember 라고 알고 있는 semantic versioning의 기초 구조는 이와 같습니다 : Major.Minor.Patch


예를 들어, pie 라는 패키지를 가지고 있다고 해 봅시다.

각 버전 숫자를 보고, 밑과 같은 정보를 얻을 수 있습니다 :

  • Major 버전 릴리즈는 3입니다.
    이는 Major 버전이 3번 릴리즈 되었다는 것을 보여줍니다.
    그리고 각각의 Major 버전이 적어도 하나 호환되지 않는 변경 사항을 가지고 있습니다.
  • Minor 버전 릴리즈는 1입니다.
    이는 현재 Major 버전에 있어 뒤로 호환 가능한 하나의 기능이 업데이트 되었다는 것을 보여줍니다.
  • Patch 버전은 4인데,
    이는 네 번의 버그를 고쳤으며, 현재 Minor 버전에 있어 뒤로 호환 가능한 버전이 4개가 있다는 것을 의미합니다.

semantic version의 접두사로 "v" 를 놓는 것은 버전 숫자를 가르키는 데 있어 평범한 방식입니다.

하지만, "v1.2.3" 은 semantic version 이 아닙니다.

문자 "v" 는 접두어이며, semantic version은 "1.2.3"입니다.


Major version - 메이저 버전


버전 넘버의 첫 번째 숫자는 미리 출시 한 버전이거나, 안정되지 않는 버전이지 않는 한, 반드시 양수여야 합니다.

위의 예시와 같이 미리 출시, 혹은 안정되지 않았다면, 0부터 시작합니다.

1.0.0       // 새로운 출시
0.1.0-alpha // 미리 출시

업데이트가 뒤로 호환되지 않는 변경사항을 포함해 코드의 호환성을 손상시킬 때,

Major 버전은 증가하고, MinorPatch 버전은 0으로 리셋됩니다.


만약 위 사진에서 예시를 들은 pie 패키지가 Major 업데이트를 한다면, 이 버전은 이와 같을 겁니다 :

3.1.4       // 이전
4.0.0       // major 업데이트 이후 

Minor version - 마이너 버전


버전 넘버의 두 번째 숫자는 major 버전이 0 보다 크다면 0 부터 시작합니다.

만약 major 버전이 0 이라면, minor 버전 숫자는 1 부터 시작합니다.

1.0.0 - 정식 출시
0.1.0 - 불안정, 혹은 미리 출시

minor 버전은 뒤로 호환 가능한 기능이 소개 될 때 증가합니다.

이 경우, 패키지의 기능은 이전과 같은 방식이지만, 부가적인 특징이 있습니다.

minor 버전이 증가하면서 patch 버전은 0으로 리셋됩니다.


위의 사진에서 제시했던 pie의 패키지가 새로운 부가기능 업데이트를 얻었을 때, 이와 같습니다 :

3.1.4 // 이전
3.2.0 // 부가기능 업데이트 이후 

Patch version - 패치 버전


버전 넘버의 세 번째 숫자는 0부터 시작합니다.

이는 패키지에서 모든 패치를 도입 할 때 마다 증가합니다.

패치들은 보안 취약점과 버그 수정을 다루는 방식입니다.

호환성을 손상시키는 모든 변경 사항은 major 버전 숫자를 증가시킵니다.

그게 단순 패치 일 지라도요.


pie 패키지를 패치 해 봅시다.

3.1.4 // 이전
3.1.5 // 패치 이후 

Conclusion - 결론


이번 주제에서 우리가 semantic versioning 지정 사항에 따라 패키지들을 버저닝 하는 법을 배운 것을 요약하겠습니다.

  • Major version : 패키지에 있어 뒤로 호환이 불가능한 변경 사항이 출시 되었을 때 증가합니다.
  • Minor version : 뒤로 호환 가능한 부가기능 업데이트가 만들어졌을 때 증가합니다.
  • Patch version : 뒤로 호환 가능한 버그 수정이 일어 났을 때 증가합니다.

semantic versioning (의미론적 버전 관리) 의 도움으로 호환성을 손상시키는 일 없이 업데이트가 가능합니다.



words to remember


Semantic : 의미론적, 의미의, 의미론의

versioning : 버전 관리

facilitate : 가능하게 하다, 용이하게 하다

incompatible : 호환되지 않는, 성질이 안맞는

underwent : 겪었다, 받다, 견디다

vulnerabilities : 취약점, 상처받기 쉬움, 비난받기 쉬움