..

Versioning Basics: 릴리스란 무엇인가

TOC


  1. 릴리스란 무엇인가
  2. 코드 변경과 릴리스의 차이
  3. 릴리스가 포함해야 하는 정보
  4. Conclusion

릴리스란 무엇인가


릴리스(release)는 특정 버전의 소프트웨어를 사용자나 외부 시스템에 공개하는 변경 묶음이다. 버전이 소프트웨어 상태를 식별하는 이름이라면, 릴리스는 그 상태를 실제로 사용할 수 있도록 전달하는 사건이다.

예를 들어 2.4.1이라는 버전이 만들어졌다는 사실만으로는 사용자가 그 기능을 사용할 수 없다. 해당 버전의 artifact를 빌드하고, 릴리스 노트를 작성하고, 필요한 환경에 배포하거나 스토어에 제출해야 한다. 이 공개 과정까지 완료되어야 하나의 릴리스가 된다.

코드 변경과 릴리스의 차이


모든 commit이 릴리스는 아니다. 개발 중인 commit은 아직 검증되지 않았거나 사용자에게 공개할 준비가 되지 않았을 수 있다. 반대로 하나의 릴리스에는 여러 commit, 테스트 결과, 설정 변경, 데이터 migration, 문서가 함께 포함될 수 있다.

여러 commit
    ↓
검증과 변경 묶음 구성
    ↓
버전 부여와 artifact 생성
    ↓
배포·공개
    ↓
릴리스

배포(deploy)와 릴리스도 항상 같은 의미는 아니다. 내부 테스트 환경에 설치하는 것은 배포지만 릴리스가 아닐 수 있다. production에 먼저 배포한 뒤 점진적으로 사용자를 늘리는 경우에도, 기술적 배포와 사용자 공개 시점을 별도로 관리할 수 있다.

릴리스가 포함해야 하는 정보


추적 가능한 릴리스에는 최소한 다음 정보가 연결되어야 한다.

  • 사용자에게 표시할 버전
  • 어떤 commit과 artifact에서 만들어졌는지
  • 포함된 기능과 수정 사항
  • 필요한 migration이나 설정 변경
  • 이전 버전과의 호환성 및 지원 범위
  • 문제가 발생했을 때의 롤백 또는 중단 방법

릴리스 노트는 단순한 홍보 문구가 아니다. 사용자가 무엇을 기대할 수 있는지, 운영자가 무엇을 확인해야 하는지, 이전 버전을 계속 사용할 수 있는지를 설명하는 공개 기록이다.

Conclusion


릴리스는 코드를 저장소에 반영하는 일이 아니라, 검증된 변경 묶음에 버전을 부여하고 사용 가능한 형태로 공개하는 일이다. 따라서 릴리스는 버전, artifact, 배포 환경, 릴리스 노트와 함께 추적해야 한다.

다음 글에서는 특정 commit에 릴리스 이름을 붙이는 Git tag를 살펴본다.