User Tools

Site Tools


kona_패치_종류와_방법

초안이며 정리가 덜 된 문서 입니다. 잘못된 부분이나 미흡한 부분 발견 시 수정하여 관련 정보를 공유하였으면 합니다.

1. 패치

가. 기존 프로그램이 수정되어 수정된 버전을 적용 하는 것

2. KONA 패치 방식 소개

가. 풀 패치
  1) 기존 KONA 대신 새로운 버전의 KONA를 install 하는 방법.
  2) 개발 환경 셋팅 작업을 해야 할 수 있다.
  3) 예기치 않은 버그가 발생할 수 있다.
  
나. 부분 패치
  1) 기존 KONA 프로그램의 일부분 (파일 or 내용)을 변경 혹은 교체 하여 적용 하는 방법.
  2) 패치 위험성이 풀 패치보다 적다.
  3) 빈번한 부분패치로 패치 이력이 유지되지 않아 디버그가 어려울 수 있다.

3. KONA 패치 구성

가. 패치 형식
  1) xml 사용 
    가) 용도
      (1) 테이블 스키마를 변경 할 때 사용
      (2) 컬럼 추가, 삭제, 수정과 관련
    나) 설명
      (1) xxx-source.xml 과 xxx.xml 파일
        (가) xxx-source.xml 파일은 현재의 테이블 구조
        (나) xxx.xml 파일은 앞으로 기대되는 (변경해야 하는) 테이블의 구조
        (다) xxx-source.xml 형태에 있는 테이블을 xxx.xml 형태에 있는 테이블로 변환한다.
             이 때 xxx-source.xml 파일에서는 존재해야 하는 컬럼이 table에 존재하지 않는다면 경우에 따라
             Exception이 발생한다.
      (2) com.eyeq.kona.patch.SchemaPatchJob 클래스를 사용한다.
    다) 기타
      (1) 컬럼 명을 변경 해야 할 경우 아래 패치 방법으로 데이터를 유지하며 컬럼 명을 변경 할 수 있다.
        (가) 신규 컬럼 생성 패치 작성
        (나) 기존 컬럼 -> 신규 컬럼으로 데이터 복사 혹은 이동 패치 작성
        (다) 기존 컬럼 삭제 패치 작성
      
                                                                                                                                                                                             
  2) sql 사용
    가) 용도
      (1) 데이터를 변경 할 때 사용
      (2) 데이터 추가, 삭제, 수정과 관련
    나) 설명
      (1) xxx.sql 파일
        (가) 실행할 query가 작성되어 있다.
        (나) 여러가지 query가 존재할 수 있다. (ex. delete 구문 후 insert 구문 추가)
      (2) com.eyeq.kona.patch.SQLScriptPatchJob 클래스 사용한다.
      (3) 기존 데이터를 수정 하는 경우 update 보다는 delete 후 insert 하는 것을 권장한다.
      
      
  3) java 사용
    가) 용도
      (1) 특정 조건에 따라 sql 을 실행해야 할 때 사용
      (2) 현재 시스템 상황에 따라 동적인 패치 가능
    나) 설명
      (1) AbstractPatchJob 클래스를 상속하여 구현.
      (2) public void applyJob() throws PatchException 메소드를 오버라이드 하여 해당 메소드 안에 해야 할 작업을 넣는다.
      (3) 경우에 따라 jdbcTemplate 또는 기타 방법으로 쿼리를 실행한다.
      
나. 패치 구성
  1) kona-context-patches.xml
    가) KONA에서 실행해야 할 패치가 정의되어 있다.
    나) 패치 순서, 일자, 기타 옵션을 정의하여 정의한 데이터에 따라 패치 유무, 에러 처리 유무 등이 결정 된다.
    다) Spring Framework의 bean으로 정의된다. 
    
  2) kona-context-patches.xml 내 bean property
    가) backportFrom, backportId
      (1) 이전 버전에서 이미 수행한 패치인지 판단하기 위한 값. 패치 중복 실행을 방지 한다.
      (2) backportFrom 은 패치가 적용 될 가장 낮은 버전의 패치 bean에 정의 한다.
      (3) backportId는 backportFrom 프로퍼티를 정의한 패치 외의 bean에 정의 한다.  
      (4) 최신 버전에만 패치가 적용 되는 경우 backport는 사용하지 않는다.
    나) modifiedDate
      (1) 수정한 날짜 정보. 패치 수행 여부를 판단하는 기준이 된다.
          KONA_SYSTEM 테이블 내 정보와 비교하여 이후 modifiedDate 값을 가진 패치가 수행 된다.
    다) ignoreErrors
      (1) Patch Exception 무시 여부를 결정
        (가) 정상적인 패치 수행 과정 중 발생한 버그성 문제가 아닌 개발자가 해당 Exception을 의도 후 계속 패치가 진행될 수 있도록 하는 경우 사용한다.

4. 기존 패치의 수정(릴리즈 버전 및 트렁크 포함)

가. 이미 커밋된 패치는 수정하지 않는다. 
나. 변경해야 할 패치는 신규 패치를 작성하여 반영한다.
kona_패치_종류와_방법.txt · Last modified: 2015/06/24 12:09 by jeonjehun86