기능

OpenFrame Batch 기능은 크게 TJES, 유틸리티, 툴로 나뉜다. 본 장에서는 각 기능에 대해서 자세하게 설명한다.

1. TJES

TJES(Tmax Job Entry Subsystem)는 Fujitsu Mainframe의 JES에 대응하는 OpenFrame 시스템의 Batch JOB 관리 시스템이다.

TJES는 사용자로부터 JOB을 받아들이고, JOB Group과 JOB의 실행 우선순위에 따라 스케줄링하여, runner를 통해 실행하고, 출력용 데이터를 프린트로 보내는 일련의 작업을 관장한다.

TJES 시스템은 단순히 한 개의 시스템으로 구성된 것이 아니라 Tmax, Base 시스템, Lock 서버, Tmax Access Control Facility(이하 TACF)이라는 일련의 기반 시스템 위에 올려진 서브 시스템으로 각 시스템과 유기적으로 상호 작용한다.

figure 3 1
Batch 시스템 구성도

OpenFrame Base 시스템은 TJES 시스템이 JCL에 기술된 작업을 구동하고 실행하는데 필수적인 데이터 셋의 I/O에 대한 기능과 카탈로그 관리와 같은 데이터 조작(레코드 Read/Write) 기능을 제공한다. TJES 시스템은 JOB 수행에 필요한 입력 및 JOB 실행의 결과를 저장하는 SPOOL 데이터 셋이라는 독자적인 스토리지를 사용하고 있다.

OpenFrame Base 시스템에 대한 자세한 내용은 OpenFrame Base "Base 안내서"를 참고한다.

TJES의 기능을 Lock, 보안, Tmax와의 연동 관점에서 살펴보면 다음과 같다.

  • Lock

    TJES 시스템은 스케줄링 정책에 따라 복수의 JOB을 병렬로 실행시키는데 각 JOB들은 데이터 셋을 I/O할 때 해당 데이터 셋의 독점적인 사용을 보장하기 위해 Lock 서버에 해당 데이터 셋의 Lock을 요청한다. 그리고 Lock 서버는 해당 데이터 셋에 Lock을 실행한다.

    하지만 이미 다른 JOB에 의해 Lock이 실행된 데이터 셋인 경우에는 선행 JOB이 Lock을 해제할 때까지 대기한다. 즉, TJES 시스템은 동시에 동일한 데이터의 접근을 방지하므로 Lock 서버로부터 데이터의 무결성을 보장받는다.

  • 보안

    Batch JOB은 많은 양의 리소스들을 사용하는데 전체 시스템에서 자원은 중요한 요소이므로 임의 사용자로부터 자원을 보호하는 것은 매우 중요하다. 따라서 TJES 시스템이 Batch JOB을 실행할 경우 리소스에 접근하는 시점에 해당 리소스가 특정 사용자에게 접근할 권한이 있는지를 TACF에게 의뢰한다.

    TACF는 해당 자원에 대한 접근권한 여부를 판단하여 TJES에게 접근 가능 여부를 알려준다. 따라서 부적절한 권한을 가진 사용자가 시스템의 자원에 접근하는 것으로 부터 자원을 보호한다.

  • Tmax와의 연동

    다른 벤더의 시스템과 비교해 볼 때 TJES 시스템은 자사의 Tmax를 기반으로 하기 때문에 안정적으로 멀티 노드를 구성하여 분산처리를 할 수 있고, 일관성있는 Fail-over를 할 수 있다.

    • 분산처리

      TJES의 모든 프로그램들은 Tmax 서버 형태로 구성되어 있고, JOB을 실행하는 과정은 Tmax 서버의 서비스를 호출하는 형태로 구현되어있다. Batch 작업의 증가로 인해 부하가 발생하는 경우에는 Tmax를 통해 부하를 분산시키거나 물리적인 서버를 증설하여 부하를 분산시킴으로써 간단히 문제를 해결할 수 있다.

    • Fail-over

      시스템 운영 중에 예기치 못한 장애가 발생하더라도 사용자는 장애를 인식하지 않고 계속해서 시스템을 사용할 수 있어야 하는데 TJES 시스템은 이러한 장애 상황에서도 자동으로 대처한다. 어떤 노드의 Tmax 서버가 비정상적으로 종료되었을 경우에 Tmax는 이를 자동으로 감지하고 해당 서버를 자동으로 재기동한다.

      또한 한 노드의 전체가 복구 불가능한 상태가 되었을 때 해당 노드로의 요청은 자동으로 다른 노드로 포워딩되며, 사용자는 장애가 발생한 노드에 영향을 받지 않고 Batch JOB을 안정적으로 계속 수행할 수 있다.

2. 유틸리티

유틸리티는 JCL의 EX문에 기술되어, 해당 JOB을 submit했을 때 실제 실행되는 프로그램 요소이다.

유틸리티는 OpenFrame Batch 시스템에서 제공되는 프로그램으로 Non-VSAM 데이터 셋을 관리하기 위한 유틸리티와 데이터를 정렬, 병합하는 SORT 유틸리티가 있다.

2.1. 데이터 셋의 생성, 삭제, 변경

데이터 셋을 생성하고 삭제하거나 변경하기 위한 유틸리티는 Mainframe이 기본적으로 제공하는 유틸리티로서 데이터 셋의 삭제, 이름 변경, Catalog, Uncatalog, 이동, 복사, 병합, 수정과 같은 일반적인 작업에 대해 편리한 기능을 제공한다.

데이터 셋의 생성, 삭제, 변경을 위해 OpenFrame이 제공하는 유틸리티는 다음과 같다.

유틸리티 설명

CTFE

CTFE(Catalog File Editor)는 데이터 셋을 카탈로그에 등록, 변경, 삭제하거나 특정 데이터 셋의 카탈로그 등록 정보를 출력한다.

FCHK

FCHK(File Check)는 직접 액세스 볼륨에 존재하는 데이터 셋의 장치의 기종, 볼륨의 일련번호, 파일명 등의 데이터 셋 관련 속성을 출력한다.

FCPY

FCPY(File Copy)는 직접 엑세스 볼륨 또는 자기테이프 볼륨의 데이터 셋을 복사한다.

FDLT

FDLT(File Delete)는 직접 액세스 볼륨에 존재하는 데이터 셋을 삭제한다.

FDMP

FDMP(File Dump)는 직접 액세스 볼륨 또는 자기테이프 볼륨에 존재하는 데이터 셋 속성 및 내용을 편집하고 인쇄한다.

KQCAMS

KQCAMS는 데이터 셋의 생성, 삭제, 이름 변경, Catalog, Uncatalog 기능뿐만 아니라 Catalog를 관리한다.

각 유틸리티에 대한 자세한 설명은 OpenFrame Batch "유틸리티 참조 안내서"를 참고한다.

2.2. Sort 유틸리티

Sort 유틸리티는 Sort-Merge 제어문에 따라 레코드를 순차적으로 정렬하거나, 여러 개의 파일을 한개의 파일로 병합하는 기능을 수행한다. 레코드의 정렬, 병합 이외에 레코드의 선택, 편집, 필드의 합계를 계산하는 부가적인 기능도 수행하는 유틸리티이다.

OpenFrame에서 제공하는 Sort 유틸리티는 위에서 언급한 레코드의 정렬 및 병합기능를 자체적으로 수행하는것이 아니라 3-rd party UNIX Sort 프로그램이 Sort 기능을 수행할 수 있도록 3-rd party UNIX Sort 프로그램과 Batch 시스템 사이에 인터페이스 역활을 한다.

이는 한 개의 UNIX Sort 프로그램에 편중되지 않아서 고객의 요구에 따라 다양한 UNIX Sort 프로그램과 쉽게 연동 가능하다는 잠점이 있다.

Mainframe에서는 사용자가 Sort 유틸리티를 이용하기 위해서는 Sort-Merge 제어문을 작성해야 한다. 이 Sort-Merge 제어문은 UNIX Sort 프로그램이 이해할 수 없는 형식이기 때문에 OpenFrame Sort 유틸리티는 이 제어문을 UNIX Sort 프로그램이 이해할 수 있는 형식으로 변경하여 UNIX Sort 프로그램에게 전달하여 UNIX Sort 프로그램이 레코드의 정렬 또는 병합할 수 있게 한다.

Sort-Merge 제어문과 마찬가지로 UNIX Sort 프로그램은 OpenFrame에서 사용하는 데이터 셋을 직접 읽고 쓸수 없기 때문에 OpenFrame Sort 유틸리티가 중간에서 데이터 셋을 레코드 단위로 읽어서 UNIX Sort 프로그램에 전달하거나 UNIX Sort 프로그램으로부터 정렬 또는 병합된 데이터를 데이터 셋에 기록하는 작업을 수행한다.

현재 OpenFrame에서는 자사의 ProSort, Fujitsu사의 PowerBSORT, syncsort사의 SyncSort 이렇게 3가지 3-rd party Sort 프로그램과 연동해서 사용할 수 있다.

유틸리티 설명

SORT

SORT는 주어진 Sort-Merge 제어문에 따라 레코드를 정렬, 병합, 복사, 필터, 재편집, 합계 등을 수행한다.

각 유틸리티에 대한 자세한 설명은 OpenFrame Batch "유틸리티 참조 안내서"를 참고한다.

2.3. 기타

기타 유틸리티는 앞에서 언급한 유틸리티의 분류에 속하지 않는 유틸리티들이다.

OpenFrame이 제공하는 기타 유틸리티는 다음과 같다.

유틸리티 설명

DSDIFF

데이터 셋의 레코드별 차이점을 보여준다.

ICETOOL

SORT 유틸리티 프로그램을 이용하여 한 개의 JOB Step에서 복수의 데이터 셋을 다양한 방법으로 출력하기 위해 사용한다.

IEFBR14

테스트용 Dummy 유틸리티이다.

KEQEFT01

TSO 커맨드나 DB connection을 수행하는 유틸리티이다.

LIBE

LIBE는 직접 엑세스 볼륨에 존재하는 데이터 셋을 복사한다.

각 유틸리티에 대한 자세한 설명은 OpenFrame Batch "유틸리티 참조 안내서"를 참고한다.

3. 툴

Batch 시스템에서 툴은 실제 Batch JOB을 실행하는 데에 직접적으로는 사용되지 않는다. 하지만 TJES에서 사용되는 시스템 데이터 셋을 생성, 초기화하거나, 외부 스케줄러로부터 Batch JOB을 submit받는 등 OpenFrame 시스템을 운영하는데 필요한 기능들을 제공하고 있다.

Batch 시스템에서 제공하는 툴은 다음과 같다.

  • TJES 시스템을 초기화하는 툴

    설명

    tjesinit

    TJES가 사용하는 시스템 테이블 뿐만 아니라 SPOOL 데이터 셋을 초기화한다.

  • 운영에 편의를 제공하는 툴

    설명

    dlclean

    임시 데이터 셋에 옮겨 놓은 이전 라이브러리들을 자동으로 삭제한다.

    dlupdate

    이전 버전의 사용자 라이브러리를 새 버전의 사용자 라이브러리로 변경해 주는 툴로 현재 사용 중인 사용자 라이브러리를 종료하지 않고도 라이브러리를 변경할 수 있는 기능을 제공한다.

    textrun

    Control-M 또는 A-AUTO와 같은 외부 스케줄러로부터 Batch JOB을 submit받고, submit된 Batch JOB을 모니터링하며, 실행이 종료되었을 때 실행 결과를 외부 스케줄러에게 통보한다.

각 툴에 대한 자세한 설명은 OpenFrame Batch "툴 참조 안내서"를 참고한다.