5.7 KiB
5.7 KiB
프로그램 버전 관리
Created Date : 08/15/2024 12:32:11
Last Update Date : 08/15/2024 12:32:11
Version 0.9
1. 버전의 식별(Version Identification)
- 형상 관리 시스템 활용 (Version Control System Utilization)
- 형상 관리 시스템을 통해 버전화된 정보의 버전 코드값을 버전의 식별값으로 사용한다.
- 버전화 대상의 Root 디렉토리내의 SVN Revision 정보가 식별값 이다.
2. 버전의 종류(Version Type)
-
메타 스키마 버전 (Meta Schema Version)
- 메타버스 기반 정보를 설정하기 위한 메타 스키마 이다.
- MS-Office Excel 파일 포멧으로 설정된 정보를 기반으로 한다.
- 프로그램 내부에서 처리하기 위해 Json 포멧 및 파일로 버전화 한다.
-
메타 데이터 버전 (Meta Data Version)
- 메타버스 기반 정보를 설정하기 위한 메타 데이터 이다.
- MS-Office Excel 파일 포멧으로 설정된 정보를 기반으로 한다.
- 프로그램 내부에서 처리하기 위해 Json 포멧 및 파일로 버전화 한다.
-
패킷 버전 (PacketVersion Version)
- 메타버스 클라이언트/서버간의 프로토콜을 정의한 패킷 이다.
- Google Protocol Bufffer의 포멧으로 설정된 정보를 기반으로 한다.
- 프로그램 내부에서 처리하기 위해 Proto 포멧 및 파일로 버전화 한다.
-
리소스 버전 (Resource Version)
- 메타버스 기반 각종 리소스 정보를 설정하기 위한 데이터 이다.
- 각종 파일 포멧으로 설정된 정보를 기반으로 한다.
- 프로그램 내부에서 처리하기 위해 Json 포멧 및 파일로 버전화 한다. (확장자명은 임의로 정의)
-
설정 버전 (Config Version)
- 메타버스 기반 각종 Config 정보를 설정하기 위한 데이터 이다.
- 각종 파일 포멧으로 설정된 정보를 기반으로 한다.
- 프로그램 내부에서 처리하기 위해 Json 포멧 및 파일로 버전화 한다. (확장자명은 임의로 정의)
-
로직 버전 (Logic Version)
- 메타버스 기반 Logic 정보를 설정하기 위한 Binary 이다.
- 빌드 과정을 통해 생성된 정보를 기반으로 한다.
- 빌드된 Binary 파일을 버전화 한다.
- 클라이언트/서버 각각 생성되는 데이터 이다.
-
Dabtabase 버전 (Database Version)
- 메타버스 Database 스키마 기반 정보 이다.
- 서버 프로그래머가 개발 과정을 통해 정의한 버전으로 한다.
- 추후 자동화 하는 방법을 모색 한다.
3. 버전 파일의 포멧 (Version File Format)
-
파일명
- XxxVersion.json
-
버전의 속성
Build:202408101 <= 버전 생성기를 통해 발급된 Date(년월일) + 일단위 빌드 횟수 정보 Revision:69066 <= 버전 생성기를 통해 추가한 해당 버전의 SVN Revision 번호 참고 : 버전화 대상의 Root 디렉토리내의 SVN Commited Revision 번호 !!!
4. 서버 프로그램의 버전화 (Versioning of Server Program)
-
버전 생성기 (Version Maker)
- 버전의 종류별로 버전 정보를 담아 특정 경로에 파일로 출력 한다.
- 서버의 출력 경로 : svn://10.20.20.9/trunk/Caliverse/Server/Version
- 서버의 버전별 출력 파일 MetaSchemaVersion.json MetaDataVersion.json PacketVersion.json ServerResourceVersion.json ServerConfigVersion.json ServerBinaryVersion.json DbSchemaVersion.json
-
빌드 시스템 연동 처리 절차
- Stable or Product 빌드 시작
- 버전 생성기 실행 버전별 출력 파일 생성
- 서버 프로그램 Binary 생성
- 버전별 출력 파일 Commit <= 배포 Revision 완성
- Commit 경로: svn://10.20.20.9/trunk/Caliverse/Server/Version
5. 클라이언트 프로그램의 버전화 (Versioning of Client Program)
-
서버에서 버전별로 출력한 버전 파일을 참조하여 클라이언트 프로그램 버전 정보를 생성 한다.
- 경로 참조
- 서버 프로그램의 Version 경로를 External로 참조 한다.
- 경로 svn://10.20.20.9/trunk/Caliverse/Common/Version
- 참조 파일
- MetaSchemaVersion.json
- MetaDataVersion.json
- PacketVersion.json
- ServerResourceVersion.json
- 클라이언트 프로그램 Logic 버전
- 클라이언트 프로그램 Binary 버전에 대한 SVN Revision 정보 이다.
- 클라이언트 프로그램 Version 정보
message ClientProgramVersion { uint64 metaSchemaVersion = 1; <= MetaSchemaVersion.json 내의 Revision 정보 uint64 metaDataVersion = 2; <= MetaDataVersion.json 내의 Revision 정보 uint64 packetVersion = 3; <= PacketVersion.json 내의 Revision 정보 uint64 logicVersion = 4; <= 클라이언트 프로그램 Logic 버전 uint64 resourceVersion = 5; <= ServerResourceVersion.json 내의 Revision 정보 }
6. 클라이언트 버전 체크 처리 과정 (Client Program Version Check Process)
- 로그인하는 경우
Client - ClientProgramVersion 송신 Server 1. ClientProgramVersion 수신 2. 접속 가능한 ClientProgramVersion 비교가 True 인지 체크 ClientProgramVersion.metaSchemaVersion == ServerProgramVersion.metaSchemaVersion ClientProgramVersion.metaDataVersion == ServerProgramVersion.metaDataVersion ClientProgramVersion.packetVersion == ServerProgramVersion.packetVersion ClientProgramVersion.resourceVersion == ServerProgramVersion.resourceVersion ClientProgramVersion.logicVersion >= ServerConfig.ClientMinimumRequiredLogicVersion 3. 접속한 가능한 버전이 아니라면 인증 오류 로그를 작성하고 오류 내용을 클라이언트 응답해 준다.