상주 배치
본 장에서는 상주 배치의 개념과 아키텍처의 특성과 상주 배치를 생성하고 테스트 및 디버깅 과정을 설명한다.
1. 개요
상주 배치는 일반 배치의 일회성 특성에 스케줄 관리 기능을 포함하여 설계된 배치이다.
일반 배치는 일회성 프로그램으로서 "수행 → 실행 → 종료"의 과정을 거치는 반면 상주 배치는 "수행 → {실행 반복} → 종료"의 과정으로 수행한다. 다시 말해 상주 배치는 특정 주기와 간격으로 배치를 수행할 수 있도록 설계된 배치이다. 이러한 상주 배치의 요건을 구현하기 위해서 Tmax의 UCS 서버의 기능을 이용하고 있다. Tmax의 UCS 서버에 대한 내용은 “Tmax Programming Guide(UCS)”를 참고한다.
기본 구조
다음은 상주 배치 아키텍처의 특징과 구성요소에 대한 설명이다.
-
실행 인터페이스
UCS 상주 배치는 Tmax의 서버 관리 도구인 tmboot 및 tmdown 명령을 이용하여 서버 기동과 종료를 실행한다.
-
상주 배치 서버
Tmax의 서버로서 데이터베이스 접속, CommBuff, 로그 그리고 Global 변수 등에 대한 초기화 로직을 수행한다. Flow 처리를 이용한 업무 커스터마이즈 영역을 제공 Loop 수행 및 스케줄 관리
|
상주 배치 아키텍처의 구성요소는 기본 구조에 기술된 일반 배치 아키텍처의 일부 내용과 동일하다. 본 절에서는 일반 배치 아키텍처와 동일한 부분을 제외한 나머지를 설명한다. |
2. 상주 배치 생성
상주 배치 생성은 배치 생성 절차에서 언급했듯이 크게 3단계로 나누어 진행된다. 즉, 상주 배치 서버 작성, 상주 배치 모듈 작성 및 상주 배치 생성 확인 단계를 거쳐야 비로소 상주 배치를 생성할 수 있다.
다음은 상주 배치를 생성하는 세부 절차이다.
-
상주 배치 서버 작성
-
상주 배치 서버 환경설정
만약 ProFrame이 기본적으로 제공하는 상주 배치 서버의 환경설정을 그대로 사용하는 경우 이 단계는 생략할 수 있다.
-
상주 배치 서버 생성
-
-
상주 배치 모듈 작성
-
상주 배치 모듈 생성
-
-
상주 배치 생성 확인
-
상주 배치 모듈 테스트
-
디버깅
작성된 상주 배치 모듈에 오류가 발생된 경우 오류가 제거될 때까지 상주 배치 모듈을 수정하는 과정을 반복한다.
-
다음 절에서는 위와 같은 절차대로 상주 배치를 생성하는 방법에 대해 설명한다.
2.1. 상주 배치 서버 작성
상주 배치 서버 환경설정
본 절에서는 일반 배치 서버 작성에서 언급한 WebAdmin의 접속과정을 일부 생략하고 상주 배치 서버와 관련된 환경설정 정보를 확인하고 설정하는 절차만을 설명한다.
다음은 WebAdmin에서 상주 배치 서버와 관련된 환경설정 정보를 확인하고 설정하는 절차이다.
-
WebAdmin 화면에서 [환경설정] > [기본환경설정] > [환경관리] > [기본환경관리] 메뉴를 선택한다.
-
기본환경관리 화면이 나타나면 '환경구성그룹'에서 'COMPILE_CONFIG’를 선택한다. 이 환경설정은 실제 업무 처리에 맞추어 커스터마이즈할 수 있다.
상주 배치 서버 환경설정다음은 위 그림의 조회 결과 항목 중에서 상주 배치 모듈과 관련된 환경설정에 대한 설명이다.
항목 설명 RESIDENT_UCS_BATCH_SERVER_COMPILE_BASE
상주 배치 서버가 컴파일되는 디렉터리 경로를 설정한다.
(예: /compile/${resourceGroup}/src/batchServer/ucs/)
RESIDENT_UCS_BATCH_SERVER_HOME
상주 배치 서버가 생성되는 홈 디렉터리 경로를 설정한다.
(예: /compile/${resourceGroup}/src/batchServer/ucs/)
RESIDENT_UCS_BATCH_SERVER_LIB_HOME
상주 배치 서버의 라이브러리 경로를 설정한다.
(예: /release)
RESIDENT_UCS_BATCH_SERVER_MAKE_FILE
상주 배치 서버를 Make하는 명령어를 설정한다.
(예: make -f ${sourceFile}.mk)
RESIDENT_UCS_BATCH_SERVER_MAKE_FILE_HOME
상주 배치 서버의 Make 파일이 생성되는 홈 디렉터리 경로를 설정한다.
(예: /compile/${resourceGroup}/src/batchServer/ucs/)
RESIDENT_UCS_BATCH_SERVER_SHELL_FILE
상주 배치 서버의 Shell 파일명을 설정한다.
(예: ${sourceFile}.sh)
RESIDENT_UCS_BATCH_SERVER_SHELL_FILE_HOME
상주 배치 서버의 Shell 파일이 생성되는 홈 디렉터리 경로를 설정한다.
(예: /compile/${resourceGroup}/src/batchServer/ucs/)
RESIDENT_UCS_BATCH_SERVER_SOURCE_HOME
상주 배치 서버의 소스 파일이 생성되는 홈 디렉터리 경로를 설정한다.
(예: /compile/${resourceGroup}/src/batchServer/ucs/)
RESIDENT_UCS_BATCH_SERVER_TEMPLATE_BASE
상주 배치 서버의 템플릿 서버 소스 파일이 생성되는 홈 디렉터리 경로를 설정한다.
(예: /compile/${resourceGroup}/src/batchServer/ucs/)
-
위와 같이 조회된 결과 중에서 각 환경설정 항목의 ‘설정내용’ 값을 확인하고 변경할 값으로 수정한다.
-
변경할 환경설정 항목을 선택한다.
-
선택한 환경설정 정보를 확인한다.
-
변경할 환경설정의 정보('사용유무', '설정내용', '부가설명')를 수정한 후 [저장] 버튼을 클릭한다.
-
수정된 환경설정 항목을 다시 조회한 후 변경된 내용을 확인한다.
WebAdmin에 대한 상세한 내용은 ProFrame 관리자 안내서를 참고한다.
-
상주 배치 서버 생성
다음은 상주 배치 서버를 생성하는 절차에 대한 예이다.
-
작업영역 내비게이터에서 오른쪽 마우스 버튼을 클릭한 후 [New] > [Server] 메뉴를 선택한다.
-
다음과 같이 새로운 서버 프로젝트 대화상자가 나타난다. 이 대화상자에서 각 항목은 상주 배치 서버를 생성하는 데 필수사항이다.
상주 배치 서버 – 새로운 서버 프로젝트 대화상자다음은 주요 항목에 대한 설명이다.
항목 설명 서버 유형
상주 배치 서버를 생성하기 위해서는 'RESIDENT_UCS_BATCH’를 선택해야 한다. 본 절에서 설명하지 않는 항목은 일반 배치 서버 작성의 일반 배치 서버 생성 부분을 참고한다.
-
새로운 서버 프로젝트 대화상자의 필수 항목을 모두 설정한 후 [완료] 버튼을 클릭한다. 그러면 상주 배치 서버를 생성한 결과물인 총 3개의 파일이 다음과 같이 나타난다.
소스파일명 설명 Server Source
상주 배치 서버의 소스 파일이다.
Make File
상주 배치 서버의 Make 파일이다.
Shell File
상주 배치를 실행하기 위한 Shell 파일이다. 상주 배치 수행 스크립트가 필요한 경우에는 이 파일을 수정한다.
상주 배치 서버 – 소스 파일 생성 -
상주 배치 서버를 컴파일하기 앞서 Tmax 서버의 환경설정 파일에 다음과 같은 사항을 등록한다. 본 예제에서는 $TMAXDIR/config 디렉터리에 있는 sample.m 파일을 tmconfig.m 파일로 변경하고 UCSBATCH01 서비스를 추가한다.
*SERVER TPFMIPPR SVGNAME = svg1 BONL02CN SVGNAME = svg2 UONL01CN SVGNAME = svg1, SVRTYPE=UCS TPFMADM02 SVGNAME = svg1 TPFMADM03 SVGNAME = svg1 ### UCSBATCH 서버(UCS 배치 서버의 물리명) UCSBATCH01 SVGNAME = svg1, SVRTYPE=UCS PODBATCH01 SVGNAME = svg2, MIN=0, MAX=1, LIFESPAN=IDLE_0 QPSTEST SVGNAME = svg2 *SERVICE SPFMIPPR SVRNAME = TPFMIPPR TESTSVC01 SVRNAME = BONL02CN TESTSVC02 SVRNAME = BONL02CN PFMADMSVC31 SVRNAME = TPFMADM03 PFMADMSVC11 SVRNAME = TPFMADM02 POD_BAT01 SVRNAME = PODBATCH01 QPSTEST1 SVRNAME = QPSTEST QPSTEST2 SVRNAME = QPSTEST
-
tmconfig.m 파일에 추가한 상주 배치 서비스를 Tmax 서버에 적용하기 위해서는 아래와 같이 실행한다.
[pfmtpqa@fwsol:/home2/pfmtpqa/proframe5.0/package/tmax/config]$ cfl -i tmconfig.m CFL is done successfully for node(tmconfig) [pfmtpqa@fwsol:/home2/pfmtpqa/proframe5.0/package/tmax/config]$ gst SVC tables are successfully generated GST is successfully done
-
작업영역 내비게이터에서 생성된 상주 배치 서버 리소스를 선택하고 오른쪽 마우스 버튼을 클릭한 후 [Compile Resource] 메뉴를 선택한다.
상주 배치 서버 – Compile Resource -
컴파일이 완료되면 상주 배치 서버가 생성된다. 생성된 결과는 상주 배치와 관련된 소스 파일이 있는 디렉터리에서 확인할 수 있다.
[pfmtpqa@fwsol:/home2/pfmtpqa/proframe5.0/compile/team/src/batchServer/ucs]$ ls -al 총 92 drwxrwxrwx 2 pfmtpqa qa 512 10월 7일 19:54 . drwxrwxrwx 5 pfmtpqa qa 512 10월 7일 19:50 .. -rwxrwxrwx 1 pfmtpqa qa 38664 10월 7일 19:54 UCSBATCH01 -rw-rw-rw- 1 pfmtpqa qa 2558 10월 7일 19:52 UCSBATCH01.c -rwxrwxrwx 1 pfmtpqa qa 1449 10월 7일 19:52 UCSBATCH01.mk -rwxrwxrwx 1 pfmtpqa qa 76 10월 7일 19:52 UCSBATCH01.sh
파일명 설명 UCSBATCH01
생성된 상주 배치 서버이다.
UCSBATCH01.c
생성된 상주 배치 서버의 소스 파일이다.
UCSBATCH01.mk
생성된 상주 배치 서버의 Make 파일이다.
UCSBATCH01.sh
생성된 상주 배치의 Shell 파일이다.
생성된 배치 서버는 Tmax의 서버를 load하는 디렉터리인 Tmax 설정 파일에 설정된 APPDIR로 복사해야 한다(Tmax 기본설정 디렉터리는 $TMAXDIR/appbin이다).
2.2. 상주 배치 모듈 작성
상주 배치 모듈 생성
상주 배치 모듈을 생성하는 과정은 일반 배치 모듈을 생성하는 과정과 동일한 절차로 이루어진다. 다만, 상주 배치는 스튜디오에 내장된 EMB Designer에서 배치 모듈의 일부 속성을 변경하여 정의하면 개발자 또는 배치 관리자가 원하는 상주 배치를 정의할 수 있다. 본 절에서는 EMB Designer에서 상주 배치를 디자인하는 과정부터 설명하기로 한다.
상주 배치 모듈을 생성은 스튜디오에 내장된 EMB Designer를 이용하여 상주 배치를 디자인한다.
다음은 상주 배치 모듈을 생성하는 절차에 대한 설명이다.
-
작업영역 내비게이터에서 오른쪽 마우스 버튼을 클릭한 후 [New] > [EMB Batch Design] 메뉴를 선택하면 다음과 같이 신규 배치모듈 생성 대화상자가 나타난다.
상주 배치 모듈 – 신규 배치모듈 생성 대화상자 -
신규 배치모듈 생성 대화상자에서 상주 배치 모듈 생성을 위한 기본정보를 모두 설정한 후 [완료] 버튼을 클릭하면, 상주 배치 모듈을 디자인할 수 있는 EMB Designer 화면으로 이동한다.
상주 배치 모듈 – 배치 디자인상주 배치 모듈을 생성하고 디자인하는 과정은 온라인 서비스의 서비스 모듈을 생성하는 방법과 동일하다. 온라인 서비스의 서비스 모듈을 생성하는 과정에 대한 상세한 내용은 ProFrame EMB 개발 안내서를 참고한다.
-
상주 배치 모듈 작성에서도 언급했듯이 상주 배치 모듈은 상주 배치 모듈 – 배치 디자인과 같이 디자인된 배치 모듈에 대하여 'Batch Kind' 및 'Schdl sec' 속성을 변경하는 것으로 상주 배치 모듈을 생성할 수 있다.
속성 설명 Batch Kind
'G: Normal type’를 'U: UCS type’으로 변경한다.
Schdl sec
상주 배치의 스케줄 시간을 초 단위로 입력한다.
실제로는 micro 초까지 입력할 수 있다. 예를 들면 5.5초, 5.005초와 같이 입력해도 무방하다. 그러나 0.005초 미만의 단위로 입력하는 경우에는 UNIX 서버 환경에 따라 동작하지 않을 수도 있으니 유의하기 바란다.
상주 배치 모듈 – Batch Kind 및 Schdl sec 속성 변경
상주 배치 모듈은 일반 배치 모듈과는 다르게 스튜디오에 내장된 EMB Designer의 [Palette] 메뉴에 있는 Batch 항목의 사용 용도가 다르다. 그 이유는 일반 배치는 Tmax 클라이언트 프로그램이고, 상주 배치는 Tmax 서버 프로그램이기 때문이다.
| 모듈 | 설명 |
|---|---|
일반 배치 |
Tmax 클라이언트 프로그램으로 XA 트랜잭션을 제어할 수는 있지만 자기 자신은 XA로 접속할 수 없다. |
상주 배치 |
Tmax 서버 프로그램으로 XA 트랜잭션을 제어할 뿐만 아니라 자기 자신까지도 XA 트랜잭션을 묶이기 때문에 접속이 가능하다. |
|
위 내용에 대한 상세한 내용은 “Tmax Application Development Guide”를 참고한다. |
상주 배치에서 TX와 관련된 API는 상주 XA 서버일 경우에 연동되는 다른 XA 서비스와 자기 자신의 서버의 트랜잭션을 "1-트랜잭션"으로 관리할 때 사용한다. 만약 상주 서버가 NON-XA인 경우에는 연동되는 다른 XA서비스들의 트랜잭션을 제어하기 위한 목적으로만 사용한다.
상주 배치에서 DB와 관련된 API는 상주 XA 서버에서는 사용할 수 없으며, 반면에 상주 NON-XA 서버는 사용이 가능하며, 자기 자신의 데이터베이스 트랜잭션만을 제어할 수 있다.
2.3. 상주 배치 생성 확인
상주 배치 모듈 테스트
상주 배치는 Tmax 서버 관리 프로그램인 tmboot와 tmdown 명령을 이용하여 서버를 기동 또는 종료할 수 있다. 상주 배치 서버가 기동 되면 상주 배치 프로그램을 수행하고 지정된 스케줄 시간만큼 중지한 후 다시 상주 배치 프로그램을 수행한다. 상주 배치 프로그램을 수행하는 과정은 “tmdown –S [배치서버명]” 명령으로 상주 배치 서버가 종료될 때까지 지속된다.
본 예제에서는 다음과 같이 tmdown 명령을 이용하여 상주 배치 모듈을 테스트한다.
[pfmtpqa@fwsol:/home2/pfmtpqa/proframe5.0]$ tmboot -S UCSBATCH01 -o "-c UCS_BAT01"
TMBOOT for node(fwsol) is starting:
Welcome to Tmax demo system: it will expire 2009/01/01
Today: 2008/10/7
TMBOOT: SVR(UCSBATCH01) is starting: Tue Oct 07 21:45:13 2008
[pfmtpqa@fwsol:/home2/pfmtpqa/proframe5.0]$ tmdown -S UCSBATCH01
RI/WS 반영된 ProFrame에서는 WorkSpace에서 생성한 배치 모듈을 call하는 경우 아래 문구를 export하고 서버를 재부팅하여 테스트한다.
### Work Space 영역에 있는 배치 모듈 Call할때 export PFM_WS_DLCALL_YN=Y ### Release Image 영역에 있는 배치 모듈 Call할때 export PFM_WS_DLCALL_YN=N
해당 UCS 배치 프로세스는 tmboot될 때 환경을 load하고 있으므로, RI/WS CALL 옵션을 export한 후 다음의 명령으로 작업해야 한다.
tmdown -S [POD 배치 서버명] tmboot -S [POD 배치 서버명]
상주 배치 디버깅
상주 배치 모듈을 테스트한 후 디버깅이 필요한 경우에는 c배치 로그 파일을 확인한다. 배치 로그 파일은 환경변수 PFM_BAT_LOG_DIR에 설정된 디렉터리에 위치하며 “[배치서버명]_bat_yyyymmdd.log”로 생성된다.