소프트웨어 버전관리, 개발 환경
버전 표기
v<major><minor><build/patch>[-버전 종류>.<수정 넘버>]+메타정보
Major
기존 버전과 호환되지 않게 변경되는 경우. 통상적으로 출시 전은 0.1.0으로 시작하며 유저에게 서비스 되는 출시 후에는 1.0.0으로 시작한다.
Minor
기존 버전과 호환되면서 새로운 기능을 추가할 때
Build/Patch
기존 버전과 호환되면서 버그를 수정하거나 제거한 것
버전 종류
출시 전
프리 알파
개발팀 내부에서 진행하는 비공개 테스트 버전으로 이 활동에는 요구사항 분석, 소프트웨어 설계, 소프트웨어 개발, 유닛 테스트를 포함할 수 있다. 로컬 환경에 배포된다.
알파
사내에서 진행하는 비공개 테스트 버전으로 이 단계부터 QA와 협력하여 테스트를 진행한다. SW가 '돌아만 간다'.
베타
기능이 전부 완성되었으나 많은 버그 요소들을 품고 있는 불안한 녀석... 유저들의 의견을 받고 반영하기 위해 특정 사용자를 선발하여 테스트 하는 클로즈베타, 시험판으로 공개하여 유저의 협력을 받는 오픈베타가 있다.
RC (출시 후보 버전, Release Candidate)
제품이 될 가능성이 있는 후보 버전으로 치명적인 버그가 나타나지 않으면 출시할 준비가 되었음을 의미한다. 프리뷰 릴리즈(preview release)버전으로도 불린다. (또는 프리 릴리즈). 실제 환경에 배포된다.
출시 후
Release / Stable
출시 버전. Release를 생략하고 Stable을 표기하기도 하며 이때부터 버전별 브랜치와 태그를 관리한다.
Canary 와 Nightly
출시 이후에 빠르게 기능 추가가 이뤄지는 경우 사용하는 버전. Canary는 테스트가 완료되지 않은 버전이고 Nightly는 테스트가 완료된 버전이다. 그래도 유저에게 오랫동안 노출된 것이 아니라 불안정성을 많이 내포하고 있다.
Optional
수정넘버
버전 종류별로 몇번의 수정이 일어났는지에 대한 번호.
개발환경 (Phase)
로컬
개발자 컴터 환경
develop
개발자들이 사용하는 개발자 모두가 개발한 기능을 합치고 테스트 하는 환경. CI/CD 같은데서 돌리는 테스트 환경으로 기능을 테스트 하는데 초점이 맞춰져 있다. 도커를 활용하여 꾸린다.
통합 환경 (Integration)
플랫폼 비즈니스 같이 모바일 앱과 서버 등 여러개의 컴포넌트로 구성된 경우 마련하는 환경. 여러 구성 요소를 유기적으로 잘 연동되야 하는지 테스트 해봐야 하는 경우
스테이지
실제 운영 환경이랑 똑같이 만들어 놓고 이전하기 전에 테스트 하는 환경. 운영에 사용하는 DB 같은 것들을 실제로 연결해서 쓰기 때문에 결제 같은 것도 가능하다. 그렇기 때문에 아주 소수의 특별한 인원이 내부망에서 Hotfix 같이 급하게 불꺼야 하는 기능/버그 처리를 위해 사용하기도 한다.
운영 환경(Product)
실제 서비스 운영 환경.