..

Versioning Basics: 버전이란 무엇인가

TOC


  1. 버전이란 무엇인가
  2. 버전이 필요한 이유
  3. 버전이 알려 주는 것과 알려 주지 않는 것
  4. Conclusion

버전이란 무엇인가


버전(version)은 소프트웨어의 특정 상태를 식별하는 값이다. 2.4.1이라는 숫자 자체가 기능을 실행하는 것은 아니지만, 어떤 코드와 설정, 의존성의 조합을 가리키는 이름이 된다.

따라서 버전은 단순한 순번이 아니다. 이전 상태와 현재 상태를 구분하고, 특정 시점의 소프트웨어를 다시 찾을 수 있게 하는 식별자다. 같은 버전을 다시 만들 수 있어야 장애를 재현하고, 문제가 발생한 릴리스를 추적하며, 필요한 경우 이전 상태를 기준으로 복구할 수 있다.

버전이 필요한 이유


소프트웨어는 계속 변경된다. 기능이 추가되고 버그가 수정되며, API 계약이나 데이터 구조가 바뀐다. 버전이 없다면 다음 질문에 답하기 어렵다.

  • 지금 운영 중인 서버는 어떤 코드에서 만들어졌는가?
  • 특정 사용자가 실행하는 앱은 어떤 상태인가?
  • 이 변경은 이전 클라이언트와 함께 동작하는가?
  • 문제가 발생하기 전의 상태로 어떻게 돌아갈 것인가?

버전은 이 질문의 공통 기준점을 제공한다. 개발자에게는 변경 추적과 재현의 기준이고, 운영자에게는 배포·롤백의 기준이며, 사용자와 API 소비자에게는 지원 범위를 설명하는 기준이다.

버전이 알려 주는 것과 알려 주지 않는 것


버전은 무엇이 바뀌었는지 구분하는 출발점이지, 모든 정보를 대신하는 값은 아니다. 2.4.1만 보고 실제 배포된 commit, 빌드 결과물, 지원 종료일을 알 수는 없다. 그러므로 버전은 Git tag, commit SHA, build number, release note, 호환성 정책과 연결해야 한다.

또한 하나의 시스템에 하나의 버전만 존재한다고 가정해서도 안 된다. 서버 릴리스 버전, API 계약 버전, 모바일 앱 버전, 데이터베이스 migration 버전은 서로 다른 대상을 식별할 수 있다. 중요한 것은 각 버전이 무엇을 가리키는지 명확히 정의하는 것이다.

Conclusion


버전은 숫자를 올리는 규칙이 아니라 특정 소프트웨어 상태를 다시 식별하기 위한 약속이다. 좋은 버전관리는 번호를 정하는 데서 끝나지 않고, 그 번호가 가리키는 artifact와 변경 내용, 호환성 범위와 수명을 함께 관리한다.

다음 글에서는 이 상태가 사용자에게 공개되는 단위인 release를 살펴본다.