본 장에서는 Tmax에 대한 개요, 내부 구조, 시스템 구성 등을 설명한다.
클라이언트/서버(Client/Server) 중심의 컴퓨팅 환경에서 클라이언트의 수가 증가함에 따라 머신(Machine)의 다양화, 운영체제와 데이터베이스의 혼재, 데이터 호환성 결여, 서버의 성능 저하 등의 문제점이 발생하고 있다.
Tmax는 이러한 문제점을 해결하고 프로세스 관리, 트랜잭션 관리, 부하 조절, 이기종 사이의 자원을 관리하는 등의 기능을 제공하기 위한 트랜잭션 처리 미들웨어(Middleware)이다.
프로세스 관리
서버 프로세스 기동, 업무분산, 프로세스 자동생성 등의 수행과정을 모니터링한다.
트랜잭션 관리
ACID 특성을 보장하도록 트랜잭션을 처리한다.
부하 조절
시스템 성능을 최적화하여 일정한 응답시간을 유도한다.
이기종 자원 관리
이기종 사이에 발생할 수 있는 여러 가지 문제점을 해결한다.
Tmax에는 내부적으로 9개의 운용 프로세스 (TMM, TMS, CLL, CLH, RQS, GW, CAS, TLM, HMS)와 4개의 관리 명령어(tmadmin, racd, tmboot, tmdown)가 존재한다.
운용 프로세스
Tmax의 전체적인 시스템을 운용하는 프로세스이다. 시스템의 운영 정보를 관리하고, CLL, CLH, TMS, RQS 프로세스 및 업무처리 서버 프로세스를 관리한다. TMM은 Tmax 시스템이 기동할 때 가장 먼저 메모리에 로드되고 시스템이 종료될 때는 가장 나중에 종료된다.
Tmax 시스템이 멀티 노드로 구성되었을 경우 타 노드의 TMM과 세션을 유지하고 heartbeat을 체크해 서버 그룹 단위의 장애 대책을 지원한다. 또한 모든 공유 정보의 갱신과 각 프로세스의 로그 기록을 담당한다. 디스크 여유공간의 부족 등으로 인해 로그를 기록할 수 없는 경우 추가적인 기록을 중단해 문제가 해결될 때까지 정상적인 운영이 가능하도록 한다.
Tmax 시스템의 디스크 큐를 관리하는 프로세스이다. 일반적으로 데이터는 메모리에 저장되어 처리되므로 돌발적인 시스템 장애가 발생할 경우 메모리에 있는 데이터는 삭제된다. RQS는 데이터의 신뢰도를 높이기 위해 서비스 요청 전후의 데이터를 디스크에 저장한다. 시스템이 재부팅된 후 장애 이전에 저장된 데이터를 사용해 요청된 서비스를 다시 처리할 수 있다.
서비스 수행 속도를 저하할 수 있으므로 기본적으로는 동작하지는 않으며 사용자가 필요에 따라 환경 파일에 정의한 시스템에서만 동작한다.
기존의 TMM(4.0 이전)에서 트랜잭션을 로깅하는 부분을 분리하여 TLM이 담당한다. 기존처럼 단순히 로깅만 하지 않고 Pending 트랜잭션에 대한 감시도 수행한다.
송신자(Sender)와 수신자(Receiver) 간의 느슨한 결합(loosely coupled)을 가능하게 하는 통신 매개체이다. 메시징 시스템을 사용하여 송신자와 수신자는 서로에 관한 정보를 알 필요없이 가상적 채널인 Destination에 관한 정보만 가지고 서로 통신을 할 수 있다. 또한 송신하는 시점과 수신하는 시점을 분리할 수 있게 되어 데이터에 대한 지연처리가 가능하며, 이를 위해 메시징 시스템은 메시지의 송, 수신에 대한 신뢰성(Reliability)을 보장한다.
관리 명령어
도메인(Domain)은 하나의 동일한 환경 파일을 공유하는 Tmax 시스템의 구성단위이다. 도메인은 하나 이상의 노드(Machine)로 구성되며, 각 노드는 Peer-to-peer 방식으로 연결되어 있어, 일정한 시간 간격으로 다른 노드와 통신하여 환경 파일에 구성된 정보를 공유한다. 이러한 방법으로 각각의 노드가 도메인 전체의 상태와 도메인 내의 다른 모든 노드의 정보를 공유하고 있다. 따라서 클라이언트는 도메인 내의 어느 노드에 연결하더라도 도메인에서 제공하는 모든 서비스를 제공받을 수 있다.
클라이언트는 도메인을 구성하는 특정 노드에 연결될 수 있으며, 연결된 노드는 해당 클라이언트의 서비스를 담당한다. 클라이언트가 요청한 서비스가 연결된 노드에서 제공하는 것이면 연결된 노드가 서비스를 처리하고, 다른 노드에서 제공하는 것이면 클라이언트와 연결된 노드가 서비스를 제공하는 노드에 요청하여 처리 결과를 클라이언트에게 되돌려주는 역할을 담당한다.
다른 노드에서 제공되는 서비스를 클라이언트가 요청하는 경우에는 다음과 같은 흐름으로 처리된다.
클라이언트와 처음 연결(1)된 노드 Node A가 서비스를 제공하는 노드인 Node B와 통신하여 해당 서비스의 처리를 요청하고(2) 그 응답을 받아(3) 클라이언트에 돌려준다(4).
다음은 Tmax 세부 시스템 구성이다.
Tmax 시스템 관리는 크게 정적 관리와 동적 관리로 나뉜다.
시스템 정적 관리는 Tmax 시스템 환경설정을 통해서 이루어진다.
Tmax 환경 파일 작성
Tmax 시스템 환경설정을 위해서는 환경 파일의 작성이 필요하다. 이 환경 파일은 하나의 독립적인 시스템을 구성하는 도메인 그리고 도메인 사이의 연결이나 Legacy 시스템과 통신하는 게이트웨이, 시스템을 구성하는 노드, 각 노드의 서비스, 서비스를 제공하는 서버 프로세스, 연관된 서버의 모임인 서버 그룹에 대한 전반적인 시스템 환경 정보를 담고 있다.
환경 파일의 작성은 Tmax 관리자가 해야 하는 일이다. 환경 파일의 작성에 대한 자세한 설명은 “제3장 환경 파일 설정”을 참고한다.
Tmax 환경 파일 컴파일
Tmax 환경 파일을 작성한 후에는 컴파일 작업을 통해 환경 파일이 올바르게 작성되었는지 검증하는 과정이 필요하다. 환경 파일이 올바르게 작성되었다면 컴파일 과정을 통해 이진(binary) 형태로 변환된 Tmax 환경 파일이 만들어진다. 이렇게 만들어진 이진 Tmax 환경 파일은 Tmax 시스템을 기동하고 종료할 때 참조된다.
서비스 테이블 생성
Tmax 시스템에게 서비스의 종류와 위치를 알려주기 위해 작성한 환경 파일로 서비스 테이블을 생성하는 과정이 필요하다. 서비스 테이블은 환경 파일의 내용을 근거로 각 서버 프로세스별로 테이블 형태로 생성된다. 또한 개발자가 생성한 서버용 소스 프로그램과 함께 컴파일되어 서버의 실행 프로그램을 만드는 데 사용된다. 서비스 테이블을 링크하지 않은 실행 프로그램은 Tmax 시스템이 인식하지 못하므로 실행할 수 없다.
다음은 동적 관리와 관련된 기동과 종료, 시스템 동작 관리에 대한 설명이다.
기동과 종료
환경설정 작업이 완료되면 관리자는 Tmax를 기동할 수 있다. 시스템이 기동될 때 Tmax의 기능 프로세스인 TMM, CLL, CLH(데이터베이스가 관련되는 경우 TMS 프로세스가 포함되며, RQ가 관련된 경우 RQ 프로세스 포함된다.)뿐만 아니라 실질적인 업무처리 서버 프로세스도 포함된다. 업무처리 서버 프로세스가 별도로 동작하는 것이 아니라 기능 프로세스와 함께 기동 및 종료되며 Tmax 시스템에 의해 관리가 이루어진다.
시스템 동작 관리
Tmax 시스템이 동작 중일 때, 관리자는 각 구성 요소의 상태를 확인하고 필요한 경우 적절한 조치를 취할 수 있다. Tmax 시스템에서는 tmadmin이라는 콘솔 형태의 대화형 관리 도구를 사용하여 동작 상태 변경 등의 동적인 작업이 가능하다.
각종 정보 출력
tmadmin은 현재의 환경설정 정보를 확인할 수 있는 명령어를 제공한다. Tmax 관리자는 tmadmin에서 명령어와 옵션을 사용해 클라이언트(이름, 위치), 서버(위치, 그룹, 프로세스 상태, 수행 횟수), 서비스(위치, 상태, 처리시간, 수행 횟수, 적체된 데이터량), 네트워크(연결 노드, 파티션 노드) 등과 이 외에도 수행되고 있는 트랜잭션, 애플리케이션 파라미터 등에 대한 정보를 확인할 수 있다.
동적 환경설정 변경
관리자는 환경설정을 통해 시스템의 설정을 수정할 수 있다. 응답시간 초과(timeout), 처리 우선 순위(priority), 부하 조절(load) 값, 동작 불능 상태의 서버 프로세스 재시작(restart) , 서버 프로세스 종료, 종료된 프로세스의 재기동 등을 설정할 수 있다. 또한 운영 중인 서버 프로세스에 새로운 서비스를 동적으로 추가하는 기능을 제공한다.
동적으로 변경된 Tmax 환경변수는 동작 중일 때는 변경된 내용이 적용되지만, 시스템을 종료(tmdown)하고 난 후 다시 기동(tmboot)하면 Tmax 환경 파일에 설정된 내용이 적용된다.
일반적으로 Tmax 시스템이 설치될 파일 시스템의 디렉터리 구성은 다음과 같다. 디렉터리는 시스템 환경변수나 Tmax 시스템 환경설정 파일의 항목에서 참조된다.
$Tmax HOME |---- appbin |---- bin +---- sample +---- client +---- server +---- sdl +---- fdl |---- config |---- lib |---- license +---- log |---- slog |---- tlog |---- ulog |---- path |---- svct |---- usrinc |---- bk_appbin
Tmax 시스템의 홈 디렉터리이다. ( 시스템 변수: TMAXDIR, 환경 파일 항목: TMAXDIR )
서버 프로세스가 위치하는 디렉터리이다. (환경 파일 항목: APPDIR)
Tmax 시스템의 명령어/유틸리티를 포함하는 디렉터리이다.
클라이언트와 서버의 샘플 프로그램을 저장하는 디렉터리이다.
서브 디렉터리 | 설명 |
---|---|
client | 클라이언트의 샘플 프로그램을 저장하는 디렉터리이다. |
server | 서버의 샘플 프로그램을 저장하는 디렉터리이다. |
sdl (optional) | 구조체 관련 파일을 저장하는 디렉터리이다. (시스템 변수: SDLFILE) |
fdl (optional) | 필드키 관련 파일을 저장하는 디렉터리이다. |
환경설정 파일을 저장하는 디렉터리이다.
Tmax 라이브러리 파일을 저장하는 디렉터리이다.
라이선스 파일을 저장하는 디렉터리이다.
프로세스 간 내부 통신을 위한 named pipe가 생성될 디렉터리이다. (환경 파일 항목: PATHDIR)
서비스 테이블 파일을 저장하는 디렉터리이다.
Tmax 헤더 파일을 저장하는 디렉터리이다.
현재 사용 중인 서버 프로세스를 새로운 프로세스로 변경하고자 할 때 새로운 프로세스가 설치될 디렉터리이다. (시스템 변수: TMAX_BKAPPDIR)