[NODE 강의] Semantic Versioning (제품 버전 관리)

2021. 5. 2. 13:14Dev/Node

반응형

[클립명]

1. Semantinc Versioning

2. npx

3. nodemon

 

오늘은 Node.js 강의 중에서 Semantic versioning에 대한 강의 클립을 시청하였다. 이 부분은 현업에서도 많은 관계가 있는 부분이라서 엄청 좋았다. 

package.json 의 패키지 버전들...

npm을 이용하여 패키지를 설치하고, pacakage.json을 열어보면 위와 같이 패키지명과 세자리 단위로 된 숫자들을 볼 수 있는데, 이것이 바로 해당 패키지의 버전을 의미한다. 자 그럼 이 버전은 각 자리별로 어떤 의미가 있고, 어떻게 관리되는 것일까?

Semantic versioning

직역하자면, '의미있는 버전관리' 정도가 될 것 같다.

자사 솔루션이나 서비스가 업그레이드 or 버그 패치 등이 이루어지면서 버전 관리가 필요하게 되는데, 이 버전관리를 좀 더 유의미하게 하는 방법에 대한 것이다.

NPM에서는 현재 이 Semantic Versioning 방법을 채택하고 있는데, NPM뿐만 아니라 node.js나 각종 오픈 소스에서도 보통 이 체계를 따라 버전 관리를 한다고 한다.

 

semantic versioning 표

위의 이미지는 Semantic versioning을 표로 나타낸 것이다. Semantic versioning에서는 주로 3자리 단위의 버전 체계를 사용하는데 하나하나 알아보자.

 

First release (New Product)

최초로 제품(서비스)을 출시하는 것을 의미한다. 버전은 '1.0.0' 으로 시작한다.

 

Backward compatible bug fixes (Patch release) - 패치 릴리즈

제품의 오류가 있는 부분을 수정하였는데 하위 버전과 호환이 되는 경우를 의미한다.

세자리 숫자 중에서 가장 마지막 자리 숫자를 +1 한다. 이전 버전이 1.0.0 이었다면 1.0.1 로 버전업이 된다.

즉, 1.0.1 버전인 제품의 의미는, 제품 출시 후 버그 픽스가 한 차례 이뤄졌다는 의미가 되는 것이다.

쉽게 생각하자면, '오류 수정을 했다면 가장 마지막 자리를 올리자!!'라고 기억하면 좋다.

 

Backward compatible new features (Minor release) - 마이너 릴리즈

하휘 호환이 가능하지만 새로운 기능이 추가되는 경우를 의미한다. 예를 들어, 게시판 프로그램에 기존에 없던 익명 게시판 기능을 추가한 경우로 볼 수 있다.

세자리 숫자 중에서 가운데 자리 숫자를 +1 한다. 이전 버전이 1.0.1 이었다면, 1.1.1 로 버전업이 된다.

즉, 1.1.1버전인 제품의 의미는, 제품 출시 후 한 차례의 기능 추가와 오류 수정이 이뤄진 상태가 되는 것이다. 

쉽게 생각하자면, '기능이 추가됐다면, 가운데 자리 숫자를 올리자!!'라고 기억하면 좋다.

 

Changes that break backward compatibility (Major release) - 메이저 릴리즈

하위 호환이 되지 않고, 중요한 변화가 생긴 경우를 의미한다. 예를 들어, EJB로 개발된 솔루션을 스프링 기반으로 바꾸거나 하는 것을 예로 들 수 있다.

세자리 숫자 중에서 가장 맨 앞자리 숫자를 +1 한다. 이전 버전이 1.0.1 이었다면, 2.0.1 로 버전업이 된다.

즉. 2.0.0 버전인 제품의 의미는, 제품 출시 후 메이저 릴리즈가 한 차례 이루어진 상태가 되는 것이다.

쉽게 생각하자면, '제품의 큰 변화가 생긴 경우 맨 앞자리를 올리자!!'라고 기억하면 좋다.

 

버전 앞에 ~(물결 or 틸트) 기호가 붙으면 패치 릴리즈(오류수정)이 됐다는 의미이고, *(아스타) 기호가 붙으면 마이너 릴리즈(기능 추가)가 됐다는 의미이다.

 

현업에서도 버전관리를 할 때 그냥 의미 없이 각 자리의 숫자를 올리는 것이 아니라, 저 규칙과 의미를 지켜가면서 관리해야겠다.

버전 관리는 향후에 고객들과 커뮤니케이션 할 때도 굉장히 중요하다. 일반 사용자들은 크게 상관없지만, IT업체 고객이나 솔루션 납품 등을 할 때는 저 버전이 유의미한 데이터가 되기 때문이다.

 

평소에 그냥 이런 의미겠지 하고 넘어갔던 제품의 버전 관리에 대해서 이번에 확실하게 정리할 수 있어서 좋았다.

반응형

'Dev > Node' 카테고리의 다른 글

[NODE 강의] module.exports  (0) 2021.05.02
[NODE 강의] Redis  (0) 2021.04.13
[NODE 강의] AWS 프리티어 EC2 인스턴스 생성  (0) 2021.04.08
[NODE 강의] GraphQL 데이터 CRUD  (0) 2021.04.03
[NODE 강의] GraphQL  (0) 2021.04.01