소개
본 장에서는 Tmax에 대한 개요, 내부 구조, 시스템 구성 등을 설명한다.
1. 개요
클라이언트/서버(Client/Server) 중심의 컴퓨팅 환경에서 클라이언트의 수가 증가함에 따라 머신(Machine)의 다양화, 운영체제와 데이터베이스의 혼재, 데이터 호환성 결여, 서버의 성능 저하 등의 문제점이 발생하고 있다.
Tmax는 이러한 문제점을 해결하고 프로세스 관리, 트랜잭션 관리, 부하 조절, 이기종 사이의 자원을 관리하는 등의 기능을 제공하기 위한 트랜잭션 처리 미들웨어(Middleware)이다.
-
프로세스 관리
서버 프로세스 기동, 업무분산, 프로세스 자동생성 등의 수행과정을 모니터링한다.
-
트랜잭션 관리
ACID 특성을 보장하도록 트랜잭션을 처리한다.
-
부하 조절
시스템 성능을 최적화하여 일정한 응답시간을 유도한다.
-
이기종 자원 관리
이기종 사이에 발생할 수 있는 여러 가지 문제점을 해결한다.
2. 내부 구조
Tmax에는 내부적으로 9개의 운용 프로세스 (TMM, TMS, CLL, CLH, RQS, GW, CAS, TLM, HMS)와 4개의 관리 명령어(tmadmin, racd, tmboot, tmdown)가 존재한다.
-
운용 프로세스
-
TMM (Tmax Manager)
Tmax의 전체적인 시스템을 운용하는 프로세스이다. 시스템의 운영 정보를 관리하고, CLL, CLH, TMS, RQS 프로세스 및 업무처리 서버 프로세스를 관리한다. TMM은 Tmax 시스템이 기동할 때 가장 먼저 메모리에 로드되고 시스템이 종료될 때는 가장 나중에 종료된다.
Tmax 시스템이 멀티 노드로 구성되었을 경우 타 노드의 TMM과 세션을 유지하고 heartbeat을 체크해 서버 그룹 단위의 장애 대책을 지원한다. 또한 모든 공유 정보의 갱신과 각 프로세스의 로그 기록을 담당한다. 디스크 여유공간의 부족 등으로 인해 로그를 기록할 수 없는 경우 추가적인 기록을 중단해 문제가 해결될 때까지 정상적인 운영이 가능하도록 한다.
-
CLL (Client Listener)
클라이언트와 Tmax 사이의 연결을 관리하는 Listener 프로세스이다. 클라이언트가 처음 Tmax에 접속할 경우 CLL과 연결되어 통신이 이루어진다. 클라이언트에서 서비스를 요청할 경우 내부적으로 CLH와 연결되어 모든 서비스 처리가 이루어진다.
-
CLH (Client Handler)
클라이언트 매니저라고도 하며 실질적으로 클라이언트와 서버의 업무처리 프로세스 사이를 중계하는 프로세스이다. CLH는 업무처리 서버 프로세스와 게이트웨이, RQ 프로세스, Tmax 프로세스와 연결해 데이터의 흐름을 관리한다. 클라이언트의 서비스 요청을 받고 업무를 처리하며, 그 결과를 다시 클라이언트에게 되돌려준다.
-
TMS (Transaction Management Server)
Tmax 시스템 운영에 필수적인 TMM, CLL, CLH 프로세스와 달리 TMS는 데이터베이스 관리 및 분산 트랜잭션 처리를 담당하는 프로세스이다. 해당 데이터베이스의 라이브러리를 이용해 만들어진다.
-
RQS (Reliable Queue Server)
Tmax 시스템의 디스크 큐를 관리하는 프로세스이다. 일반적으로 데이터는 메모리에 저장되어 처리되므로 돌발적인 시스템 장애가 발생할 경우 메모리에 있는 데이터는 삭제된다. RQS는 데이터의 신뢰도를 높이기 위해 서비스 요청 전후의 데이터를 디스크에 저장한다. 시스템이 재부팅된 후 장애 이전에 저장된 데이터를 사용해 요청된 서비스를 다시 처리할 수 있다.
서비스 수행 속도를 저하할 수 있으므로 기본적으로는 동작하지는 않으며 사용자가 필요에 따라 환경 파일에 정의한 시스템에서만 동작한다.
-
GW (Gateway)
멀티 도메인으로 시스템을 구축한 경우 도메인 사이의 통신을 담당하는 프로세스이다. Tmax 시스템뿐만 아니라 TCP/IP, SNA/LU0, SNA/LU6, X.25 등 다양한 시스템과 연동이 가능하다.
실제 프로세스의 명칭은 사용자가 환경 파일에 정의한 내용에 따라 다르며, 게이트웨이의 종류에 따라 특별한 설정이 더 필요한 경우도 있다. 이 프로세스 역시 Tmax 시스템에 항상 기본적으로 동작하는 프로세스가 아니고 환경 파일의 GATEWAY 부분에 정의된 시스템에서만 동작한다.
-
CAS (Client Authentication Server)
보안이 필요한 Tmax 시스템을 운영하는 경우에 사용되는 프로세스이다. 1 단계 및 2 단계 보안을 담당하며 사용자의 신원을 확인하는 역할을 한다.
-
TLM (Transaction Log Manager)
기존의 TMM(4.0 이전)에서 트랜잭션을 로깅하는 부분을 분리하여 TLM이 담당한다. 기존처럼 단순히 로깅만 하지 않고 Pending 트랜잭션에 대한 감시도 수행한다.
-
HMS (Hybrid Messaging System)
송신자(Sender)와 수신자(Receiver) 간의 느슨한 결합(loosely coupled)을 가능하게 하는 통신 매개체이다. 메시징 시스템을 사용하여 송신자와 수신자는 서로에 관한 정보를 알 필요없이 가상적 채널인 Destination에 관한 정보만 가지고 서로 통신을 할 수 있다. 또한 송신하는 시점과 수신하는 시점을 분리할 수 있게 되어 데이터에 대한 지연처리가 가능하며, 이를 위해 메시징 시스템은 메시지의 송수신에 대한 신뢰성(Reliability)을 보장한다.
-
-
관리 명령어
-
tmadmin (Tmax Administration)
tmadmin은 관리 도구로 운영 중인 Tmax 시스템의 환경을 확인하거나 동적으로 변경하는 기능을 제공한다. 현재 서버 프로세스의 동작 상태와 통계정보, 서비스나 큐의 상태 정보를 확인할 수 있다.
-
racd (Remote Access Control Daemon)
racd는 여러 개의 노드를 하나의 도메인으로 Tmax 시스템을 구축했을 경우 한 노드에서 다른 시스템을 관리할 수 있도록 각각의 노드에 기동시키는 데몬 프로세스이다. racd를 사용해 도메인의 노드 하나에서 tmadmin을 통해 전체 노드를 모니터링할 수 있으며 일일이 파일을 복사하지 않아도 하나의 환경 파일을 모든 노드에 적용할 수 있다.
-
tmboot (Tmax System Boot)
tmboot는 환경 파일에 정의된 내용에 따라 Tmax 시스템을 초기화하여 기동한다. 일반적으로 Tmax 시스템 프로세스(TMM, CLL, CLH)가 먼저 기동되고, 이후 부가적인 환경을 위한 RQ, TMS, GW 프로세스가 기동되며, 마지막으로 서버 프로세스가 기동된다. tmboot는 다양한 옵션을 제공하여 다양한 방법으로 Tmax 시스템을 기동할 수 있다.
-
tmdown (Tmax System Down)
tmdown은 환경 파일의 내용을 토대로 tmboot로 기동된 시스템을 종료하는 명령어이다. 종료순서는 tmboot와 반대로 먼저 모든 서버 프로세스를 종료시킨 후에 Tmax 시스템 관리 프로세스를 종료한다.
-
3. 시스템 구성
도메인(Domain)은 하나의 동일한 환경 파일을 공유하는 Tmax 시스템의 구성단위이다. 도메인은 하나 이상의 노드(Machine)로 구성되며, 각 노드는 Peer-to-peer 방식으로 연결되어 있어, 일정한 시간 간격으로 다른 노드와 통신하여 환경 파일에 구성된 정보를 공유한다. 이러한 방법으로 각각의 노드가 도메인 전체의 상태와 도메인 내의 다른 모든 노드의 정보를 공유하고 있다. 따라서 클라이언트는 도메인 내의 어느 노드에 연결하더라도 도메인에서 제공하는 모든 서비스를 제공받을 수 있다.
클라이언트는 도메인을 구성하는 특정 노드에 연결될 수 있으며, 연결된 노드는 해당 클라이언트의 서비스를 담당한다. 클라이언트가 요청한 서비스가 연결된 노드에서 제공하는 것이면 연결된 노드가 서비스를 처리하고, 다른 노드에서 제공하는 것이면 클라이언트와 연결된 노드가 서비스를 제공하는 노드에 요청하여 처리 결과를 클라이언트에게 되돌려주는 역할을 담당한다.
다른 노드에서 제공되는 서비스를 클라이언트가 요청하는 경우에는 다음과 같은 흐름으로 처리된다.
클라이언트와 처음 연결(1)된 노드 Node A가 서비스를 제공하는 노드인 Node B와 통신하여 해당 서비스의 처리를 요청하고(2) 그 응답을 받아(3) 클라이언트에 돌려준다(4).
다음은 Tmax 세부 시스템 구성이다.
4. 시스템 관리
Tmax 시스템 관리는 크게 정적 관리와 동적 관리로 나뉜다.
-
정적 관리
시스템이 기동되기 전에 이루어질 수 있는 관리 또는 동작 중인 시스템에 영향을 미치지 않는 관리 행위를 말하며, 시스템 환경설정(configuration) 작업을 의미한다.
-
동적 관리
시스템이 동작하고 있는 상황에서 시스템의 상태나 성능에 영향을 줄 수 있는 관리 행위를 말하며, Tmax 시스템 기동/종료(tmboot/tmdown), 시스템 동작 관리(Tmax administration) 및 시스템 환경변수 변경 작업을 의미한다.
4.1. 정적 관리
시스템 정적 관리는 Tmax 시스템 환경설정을 통해서 이루어진다.
-
Tmax 환경 파일 작성
Tmax 시스템 환경설정을 위해서는 환경 파일의 작성이 필요하다. 이 환경 파일은 하나의 독립적인 시스템을 구성하는 도메인 그리고 도메인 사이의 연결이나 Legacy 시스템과 통신하는 게이트웨이, 시스템을 구성하는 노드, 각 노드의 서비스, 서비스를 제공하는 서버 프로세스, 연관된 서버의 모임인 서버 그룹에 대한 전반적인 시스템 환경 정보를 담고 있다.
환경 파일의 작성은 Tmax 관리자가 해야 하는 일이다. 환경 파일의 작성에 대한 자세한 설명은 환경 파일 설정을 참고한다.
-
Tmax 환경 파일 컴파일
Tmax 환경 파일을 작성한 후에는 컴파일 작업을 통해 환경 파일이 올바르게 작성되었는지 검증하는 과정이 필요하다. 환경 파일이 올바르게 작성되었다면 컴파일 과정을 통해 이진(binary) 형태로 변환된 Tmax 환경 파일이 만들어진다. 이렇게 만들어진 이진 Tmax 환경 파일은 Tmax 시스템을 기동하고 종료할 때 참조된다.
-
서비스 테이블 생성
Tmax 시스템에게 서비스의 종류와 위치를 알려주기 위해 작성한 환경 파일로 서비스 테이블을 생성하는 과정이 필요하다. 서비스 테이블은 환경 파일의 내용을 근거로 각 서버 프로세스별로 테이블 형태로 생성된다. 또한 개발자가 생성한 서버용 소스 프로그램과 함께 컴파일되어 서버의 실행 프로그램을 만드는 데 사용된다. 서비스 테이블을 링크하지 않은 실행 프로그램은 Tmax 시스템이 인식하지 못하므로 실행할 수 없다.
4.2. 동적 관리
다음은 동적 관리와 관련된 기동과 종료, 시스템 동작 관리에 대한 설명이다.
-
기동과 종료
환경설정 작업이 완료되면 관리자는 Tmax를 기동할 수 있다. 시스템이 기동될 때 Tmax의 기능 프로세스인 TMM, CLL, CLH(데이터베이스가 관련되는 경우 TMS 프로세스가 포함되며, RQ가 관련된 경우 RQ 프로세스 포함된다.) 뿐만 아니라 실질적인 업무처리 서버 프로세스도 포함된다. 업무처리 서버 프로세스가 별도로 동작하는 것이 아니라 기능 프로세스와 함께 기동 및 종료되며 Tmax 시스템에 의해 관리가 이루어진다.
-
시스템 동작 관리
Tmax 시스템이 동작 중일 때, 관리자는 각 구성 요소의 상태를 확인하고 필요한 경우 적절한 조치를 취할 수 있다. Tmax 시스템에서는 tmadmin이라는 콘솔 형태의 대화형 관리 도구를 사용하여 동작 상태 변경 등의 동적인 작업이 가능하다.
-
각종 정보 출력
tmadmin은 현재의 환경설정 정보를 확인할 수 있는 명령어를 제공한다. Tmax 관리자는 tmadmin에서 명령어와 옵션을 사용해 클라이언트(이름, 위치), 서버(위치, 그룹, 프로세스 상태, 수행 횟수), 서비스(위치, 상태, 처리시간, 수행 횟수, 적체된 데이터량), 네트워크(연결 노드, 파티션 노드) 등과 이 외에도 수행되고 있는 트랜잭션, 애플리케이션 파라미터 등에 대한 정보를 확인할 수 있다.
-
동적 환경설정 변경
관리자는 환경설정을 통해 시스템의 설정을 수정할 수 있다. 응답시간 초과(timeout), 처리 우선 순위(priority), 부하 조절(load) 값, 동작 불능 상태의 서버 프로세스 재시작(restart) , 서버 프로세스 종료, 종료된 프로세스의 재기동 등을 설정할 수 있다. 또한 운영 중인 서버 프로세스에 새로운 서비스를 동적으로 추가하는 기능을 제공한다.
동적으로 변경된 Tmax 환경변수는 동작 중일 때는 변경된 내용이 적용되지만, 시스템을 종료(tmdown)하고 난 후 다시 기동(tmboot)하면 Tmax 환경 파일에 설정된 내용이 적용된다.
-
5. 디렉터리 구성
일반적으로 Tmax 시스템이 설치될 파일 시스템의 디렉터리 구성은 다음과 같다. 디렉터리는 시스템 환경변수나 Tmax 시스템 환경설정 파일의 항목에서 참조된다.
$Tmax HOME +---- appbin +---- bin +---- config +---- lib +---- lib64 +---- license |---- log +---- slog +---- tlog +---- ulog +---- mod +---- path +---- run |---- sample +---- client +---- tdl +---- fdl +---- sdl +---- server +---- svct +---- usrinc +---- topinc +---- cobinc +---- tuxinc +---- tcpgw +---- tcpgwthr +---- x25gw +---- UninstallerData +---- bk_appbin
- $Tmax HOME
-
Tmax 시스템의 홈 디렉터리이다. (시스템 변수: TMAXDIR, 환경 파일 항목: TMAXDIR)
- appbin
-
Tmax를 이용해 개발된 응용 서버 프로그램 디렉터리이다. (환경 파일 항목: APPDIR)
- bin
-
Tmax 명령과 유틸리티가 위치한 디렉터리이다.
- config
-
Tmax 시스템 환경 파일이 위치한 디렉터리이다.
- lib
-
Tmax 라이브러리(64bit일 경우 'lib64’로 표시) 디렉터리이다.
- license
-
라이선스 파일이 위치한 디렉터리이다.
- log
-
로그 파일이 위치한 디렉터리이다.
서브 디렉터리 설명 slog
시스템 로그 파일을 저장하는 디렉터리이다. (환경 파일 항목: SLOGDIR)
ulog
사용자 로그 파일을 저장하는 디렉터리이다. (환경 파일 항목: ULOGDIR)
tlog
트랜잭션 정보를 저장하는 디렉터리이다. (환경 파일 항목: TLOGDIR)
- mod
-
TDL를 사용할 때 업데이트할 라이브러리를 위한 디렉터리이다.
- path
-
프로세스 간 통신의 경우 필요한 파이프 역할을 하는 디렉터리이다. (환경 파일 항목: PATHDIR)
- run
-
TDL를 사용할 때 tdlupdate 후 버전이 부연된 라이브러리들을 위한 디렉터리이다.
- sample
-
다음은 하위 디렉터리에 대한 설명이다.
서브 디렉터리 설명 client
클라이언트 샘플 프로그램 파일이 위치한 디렉터리이다.
tdl
TDL 샘플 프로그램 파일이 위치한 디렉터리이다.
fdl
샘플 필드키 정의 파일(demo.f)이 위치한 디렉터리이다. (시스템 변수: FDLFILE)
sdl
샘플 구조체 정의 파일(demo.s)이 위치한 디렉터리이다. (시스템 변수: SDLFILE)
server
서버 샘플 프로그램 파일이 위치한 디렉터리이다.
- svct
-
응용 서버프로그램을 컴파일할 때 필요한 서비스 테이블 파일이 위치한 디렉터리이다.
- usrinc
-
Tmax 헤더 파일이 위치한 디렉터리이다.
demo.f와 demo.s는 FDL(Field Definition Language)과 SDL(Structure Definition Language) 형식의 필드들을 정의하는 파일이다. 사용자는 실제 프로젝트에서 사용할 FDL및 SDL 형식 필드들을 필요에 따라 직접 생성해서 사용할 수 있다.
- topinc
-
topend에서 Tmax로 전환할 때 해당 Tuxedo 함수들을 Tmax 함수로 변환하는 헤더 파일이 위치한 디렉터리이다.
- cobinc
-
COBOL 헤더 파일이 위치한 디렉터리이다.
- tuxinc
-
Tuxedo에서 Tmax로 전환할 때 필요한 헤더 파일이 위치한 디렉터리이다.
- tcpgw
-
TCPGW 헤더 파일이 위치한 디렉터리이다.
- tcpgwthr
-
TCPGW THR 헤더 파일이 위치한 디렉터리이다.
- x25gw
-
x25gw 헤더 파일이 위치한 디렉터리이다.
- UninstallerData
-
Tmax 제거에 필요한 파일이 위치한 디렉터리이다.
- bk_appbin (optional)
-
현재 사용 중인 서버 프로세스를 새로운 프로세스로 변경하고자 할 때 새로운 프로세스가 설치될 디렉터리이다. 사용자가 생성해야 한다. (시스템 변수: TMAX_BKAPPDIR)