일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Linux
- nginx
- 스프링 배치
- hibernate
- Spring Batch
- design pattern
- 도메인주도설계
- Java
- Spring XD
- Gradle
- apache storm
- Spring
- Clean Code
- 엘라스틱서치
- 제주
- Angular2
- spark
- elasticsearch
- hdfs
- SBT
- DDD
- Spring Boot
- intellij
- Domain Driven Design
- Hbase
- scala
- elastic search
- Storm
- hadoop
- docker
- Today
- Total
욱'S 노트
Product Version Management 본문
항상 우리는 소프트웨어를 코딩해서 만들어내고 있지만 생각보다 많은 프로덕트에서 제대로된 버젼관리를 못하고 있는 것 또한 현실이다. 이에 전 회사 동료 및 여러 개발자분들에게도 조언을 구해도 딱히 정답이 없다는 것도 사실인 것 같다. 하지만 여기서는 내가 생각하는 가장 기본적인 버젼관리 방법을 정리해보겠다.
Most used
프로덕트 버젼 관리에서는 명확한 convention이 있는 건 아니지만, 대부분의 오픈 소스들이 가장 많이 쓰는 방식은 아래와 같다. 여기서 내가 가장 선호하는 방식은 1.0.1-SNAPSHOT과 같은 방식이다. 메이져버젼이 올라갈 때는 하위 호환성이 없다는 것을 의미하며 마이너버젼은 기능의 변경 그리고 버그픽스를 위한 버젼을 남겨둔다. Qualifier의 역할은 maven과 같은 라이브러리 관리 시스템을 사용할 떄 SNASHOT은 항상 변경될 수 있는 플로팅 버젼임을 의미하며, Qualifier가 없거나 RELEASE라는 Qualifier가 붙어 있다면 더 이상 변경이 일어나지 않는 라이브러리임을 의미한다.
Major.minor[.bugfix][-qualifier[-build]]
예)
1.0 (두자리만 쓰는 애들도 꽤나 있음 - asm, aop)
1.0.1-SNAPSHOT (일반적)
1.0.1-SNAPSHOT-20150507 (주로 eclipse plugin)
1.0.2-FINAL-20141213 (final은 jboss쪽에서 좋아하더라)
1.0.3 (RELEASE나 final 버젼에 안붙이는 경우도 많음)
1.0.4.RELEASE (spring)
Qualifier
Beta: contains critical bugs
RC: release candidate, not fully tested
RELEASE or Final: final version, release 버젼
SNAPSHOT : 그냥 라이브 버젼. Floating version, not an actual identification. Should allways be used for code under development.
'Story > Product Management' 카테고리의 다른 글
Product Release (0) | 2015.09.08 |
---|