Files
caliverse_doc/99. 기타/프로그램 버전 관리.md
2025-05-01 07:27:54 +09:00

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
  • 빌드 시스템 연동 처리 절차

    1. Stable or Product 빌드 시작
    2. 버전 생성기 실행 버전별 출력 파일 생성
    3. 서버 프로그램 Binary 생성
    4. 버전별 출력 파일 Commit <= 배포 Revision 완성
    • Commit 경로: svn://10.20.20.9/trunk/Caliverse/Server/Version

5. 클라이언트 프로그램의 버전화 (Versioning of Client Program)

  • 서버에서 버전별로 출력한 버전 파일을 참조하여 클라이언트 프로그램 버전 정보를 생성 한다.

    1. 경로 참조
    • 서버 프로그램의 Version 경로를 External로 참조 한다.
    • 경로 svn://10.20.20.9/trunk/Caliverse/Common/Version
    1. 참조 파일
    • MetaSchemaVersion.json
    • MetaDataVersion.json
    • PacketVersion.json
    • ServerResourceVersion.json
    1. 클라이언트 프로그램 Logic 버전
    • 클라이언트 프로그램 Binary 버전에 대한 SVN Revision 정보 이다.
    1. 클라이언트 프로그램 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. 접속한 가능한 버전이 아니라면 인증 오류 로그를 작성하고 오류 내용을 클라이언트 응답해 준다.