본 장은 Tmax의 개념, 구조, 기능, 특징, 도입시 고려할 사항에 대해서 설명한다.
Tmax는 Transaction Maximization의 약어로 트랜잭션 처리 극대화를 의미한다. Tmax는 시스템의 분산 환경에서 이기종 컴퓨터 간의 트랜잭션 처리를 완벽히 보장하면서 부하를 분산시키고 에러가 발생하는 경우 적절한 조치를 담당하는 TP-Monitor이다.
트랜잭션의 특성을 지원하면서 사용자에게는 최적의 개발환경을 제공하고, 클라이언트/서버 환경에서 최적의 솔루션을 제공하며, 성능 개선은 물론 모든 장애에 완벽하게 대처한다.
Tmax는 분산 트랜잭션 프로세싱의 국제 표준인 X/Open DTP(Distributed Transaction Processing) 모델을 준수하고 국제 표준기구인 OSI(Open Systems Interconnection group)의 DTP 서비스에 대한 기능적 분산과 기능 구성 요소 간 API 및 시스템 인터페이스 정의에 따라 개발되었다. 또한, 분산 환경에서 이기종 간의 투명한 업무 처리 및 OLTP(On-Line Transaction Processing)를 지원하고 트랜잭션 처리의 ACID(Atomic, Consistent, Isolated, Durable: Transaction Properties) 특성을 만족하게 한다.
Tmax는 투명한 업무처리를 통해 성능을 극대화하고, 중요도가 높은 기간계 업무를 완벽하게 처리하여 개발자와 시스템 관리자에게 최적화된 컴퓨팅 환경을 제공한다. 또한, 금융, 공공, 통신, 제조, 유통 등 전 산업 분야에서 하루 수천만 건의 트랜잭션이 발생하는 중요도 높은 시스템에서 부하를 조절하고 장애발생을 방지하여 고객 시스템의 안정성을 보장한다. 또한 Large-scale OLTP 애플리케이션 개발이나 항공 및 호텔, 병원, 국방 분야나 은행 온라인 업무나 신용카드 승인 업무, 고객 및 판매 관리 업무와 같은 다양한 사업분야와 업무에서 사용되고 있다.
트랜잭션에 대한 자세한 사항은 “Tmax Application Development Guide”의 “제6장 트랜잭션”을 참고한다.
다음은 Tmax를 구성하는 시스템 구성에 대한 그림이다.
Tmax 시스템을 운영 관리하는 핵심 프로세스로 Tmax 시스템의 모든 공유 정보와 CLL(Client Listener), CLH(Client Handler), TMS(Transaction Management Server) 및 AP(Application Program) 서버 프로세스를 관리한다.
다음은 TMM의 주요 기능에 대한 설명이다.
주요 기능 | 설명 |
---|---|
공유 메모리 할당 | 설정한 환경 정보를 cfl 명령어로 컴파일한 바이너리는 엔진이 기동되는 시점에 TMM 프로세스가 공유 메모리(Shared Memory )에 로딩을 한다. TMM은 로딩된 운영 정보를 이용해서 시스템을 운영한다. |
프로세스 관리 | TMM은 모든 시스템에 대한 운영과 종료의 주체가 된다. |
로그 관리 | Tmax에서 발생하는 시스템 로그(slog)와 사용자 로그(ulog)를 관리한다. |
다음은 Tmax 시스템이 서비스를 수행하는 과정을 보여주는 그림이다.
다음은 Tmax 시스템이 서비스를 수행하는 절차에 대한 설명이다.
클라이언트가 tpstart하면 CLL 프로세스가 연결 요청을 수행하고 내부 동작을 통하여 CLH 프로세스로 연결 처리된다.
서비스 요청이 있을 경우 CLH 프로세스에서 모든 서비스를 처리한다.
CLH 프로세스는 클라이언트의 서비스 요청(tpcall)을 수신하고, 요청 서비스를 분석하며, 업무 서버 프로세스(svr2)에 서비스를 매핑한다.
업무 서버 프로세스(svr2)는 서비스 처리 후 CLH에 결과를 반환(tpreturn)한다.
CLH는 서비스 처리 결과를 수신해서 클라이언트에 전송한다.
TIM(Tmax Information MAP)은 Tmax 시스템을 운용하는 핵심 정보로 Tmax에서 관리하는 공유 메모리를 의미한다. TIM은 엔진 프로세스 중에 TMM 프로세스에 의해서 생성된다.
TIM은 역할에 따라서 다음과 같이 4개로 구분된다.
Tmax 시스템 설정 정보
Tmax 환경파일인 <tmconfig.m> 파일을 관리하기 위해 공유 메모리에 로딩하고 필요한 경우에 참조한다.
Tmax 시스템 운영 정보
Tmax 시스템 운영에 대한 정보를 관리한다. 시스템에 장애가 발생했을 경우의 대응 방법, 부하 분산을 위한 Load Balancing에 대한 기준 정보, 여러 장비로 구성된 시스템의 경우에는 각 서비스에 접근하기 위한 Naming 서비스 정보와 애플리케이션 위치 정보 등을 관리한다.
애플리케이션 상태 정보
시스템에 로딩되는 애플리케이션의 프로세스 상태(Ready/Not Ready/Running 등)를 관리한다.
분산 트랜잭션 정보
RM과 통신의 중계 역할 데이터베이스 운영 정보 및 트랜잭션 처리를 위한 채번 정보를 관리한다.
Tmax는 UNIX 도메인 소켓(Domain Socket) 통신 방식을 사용한다. UNIX 도메인 소켓 통신 방식은 소켓 API를 수정없이 사용하며, 파일을 이용해서 내부 프로세스 간에 통신을 하는 방식이다. 이는 Port 기반의 외부 통신 방식과는 달리 파일을 이용한 내부 통신 방식으로 더욱 안정적이고, 속도가 빠르다는 장점이 있다. 파일을 통한 통신 방식과 커널에서 메시지를 관리한다는 특징은 FIFO(Named Pipe)와 비슷하나, FIFO와 달리 양방향 통신이 가능하여, 다수의 클라이언트/서버 환경을 구축하기가 쉽다.
다음은 CLL, CLH, TLM이 UNIX 도메인 소켓 통신을 하는 과정에 대한 그림이다. PSR로 표시된 애플리케이션 서버는 CLL, CLH, TLM과 연결되어 진다.
다음은 Tmax의 주요 기능에 대한 설명이다.
Tmax는 3-tier 기반의 클라이언트/서버 환경을 제공하여 클라이언트마다 생성되는 서버의 업무처리 프로세스 수를 조절하여 시스템을 최적의 환경으로 활용할 수 있도록 관리한다.
분산 트랜잭션 처리될 때 2PC(2 Phase commit)를 지원하여 데이터 무결성을 보장하고 간단한 몇 가지 함수(tx_begin, tx_commit, tx_rollback 등)를 제공하여 전역 트랜잭션을 용이하게 한다. 또한, 멀티 스레드 방식의 트랜잭션 매니저를 제공하여 적은 자원 대비 높은 효율성을 제공하고 동적 로깅으로 에러가 발생하는 경우 신속히 대응하므로 Recovery/Rollback에 의한 안정성을 보장한다. 모든 트랜잭션은 중앙에서 관리하므로 트랜잭션에 대한 스케줄링이나 관리가 쉽다.
Tmax는 다음과 같은 3가지 방식을 통해 부하 조절 기능을 제공하여 전체 시스템의 처리량을 증대시키고 처리시간을 단축한다.
하드웨어적인 장애가 발생하는 경우 Load Balancing을 통한 장애 대책과 서비스 백업에 의한 정상 운영이 가능하다. 서버 프로세스가 다운되는 소프트웨어적인 장애가 발행하는 경우 프로세스가 재시작되므로 중단 없는 서비스가 제공된다.
Naming 서비스를 통해 분산 시스템 내의 서비스 위치 정보를 이름으로 제공하여 간단하고 쉽게 서비스 호출이 가능하고 위치 투명성을 제공한다.
Tmax는 다음과 가은 3가지 방식의 데이터 전달 프로세스를 제공한다. 이에 대한 자세한 내용은 “2.3.6. 프로세스 제어”를 참고한다.
서비스 수행 중 장애 등으로 요청 내용이 사라지는 것을 방지하는 디스크 큐(Disk Queue) 처리를 통해서 데이터를 보존하고 신뢰성 있는 처리를 보장한다.
Tmax는 Fiffie-Hellman 알고리즘 바탕의 데이터 보호 기능을 제공하고 UNIX에서 제공하는 보안기능을 포함하여 다음의 3단계 보안기능을 지원한다.
1단계: 시스템 접속 인증
전체 Tmax 시스템(도메인)에 대한 단일 암호를 설정하고 이 암호를 등록한 클라이언트에 한해서만 Tmax 시스템 접속을 허락한다.
2단계: 사용자 인증
Tmax 시스템에 등록되어 있는 사용자 ID에 한해서만 인증을 거쳐 Tmax에서 제공하는 서비스 사용을 허락한다.
3단계: 서비스 접근 인증
특별히 보안이 요구되는 서비스에 대하여, 권한이 있는 사용자에게만 해당 서비스를 지원한다. Tmax v4.0부터 지원한다.
보안기능에 대한 자세한 내용은 “Tmax Application Development Guide”의 “제8장 보안 시스템”을 참고한다.
편리한 API 및 다양한 통신방식 지원
동기형 통신(Synchronous), 비동기형 통신(Asynchronous), 대화형 통신(Conversational), 요구 재요청(Request Forwarding), 알람 통지(Notify), 메시지 동시 전달(Broadcasting)과 같은 다양한 통신방식을 지원하며, 이를 위해 편리한 API를 제공한다.
시스템 관리와 자원 관리
프로세스 상태, 서비스 큐잉 상태, 서비스 처리 건수, 평균 서비스 처리시간과 같은 전체 시스템 진행 상황을 모니터링할 수 있고 시스템 상태 및 큐 관리 시스템 통계 분석 및 보고서 작성이 가능하다.
애플리케이션과 데이터베이스를 통합하여 관리하므로 자원의 효율적인 관리가 가능하다.
멀티 도메인 및 다양한 게이트웨이 서비스 제공
장거리 분산 시스템의 상호 데이터를 교환하고, 다른 플랫폼 기반의 시스템 간에 손쉽게 연동할 수 있으며, SNA CICS, SNA IMS, TCP CICS, TCP IMS, OSI TP 등과 같은 다양한 게이트웨이 모듈을 지원한다. 도메인 간 트랜잭션 서비스 처리 및 라우팅 기능이 가능하다.
다양한 클라이언트 에이전트 제공
2-tier 시스템에서 3-tier 시스템으로 변환이 쉬운 다양한 에이전트를 제공한다.
다양한 개발 방식 지원
확장지원
웹과의 연동
클라이언트/서버 환경과 웹 환경을 Java Applet/Servlet, PHP 등을 통해 연동함으로써 빠른 응답시간을 보장하고, 시스템 성능을 향상시킬 수 있다. Tmax에서는 서비스 연동을 쉽게 하기 위해 WebT를 제공한다. WebT에 대한 자세한 내용은 "Tmax WebT User Guide"를 참고한다.
메인프레임 연동
IBM 등 레거시 시스템에 존재한 애플리케이션 서비스를 Host-link를 이용하여 클라이언트/서버 환경의 애플리케이션 서비스와 동일하게 접근할 수 있다.
다른 미들웨어 전환 용이
다른 미들웨어(Tuxedo, TopEnd, Entera)로 개발된 시스템도 소스 수정 없이 Tmax로 쉽게 전환이 가능하며, 더욱 향상된 성능과 수준 높은 기술 서비스 및 비용 절감의 효과를 기대할 수 있다.
기존의 2-tier 기반의 클라이언트/서버 환경은 애플리케이션 개발의 가장 일반적인 방법으로 하나의 클라이언트에 서버 프로세스가 하나씩 생성되는 방식이다. 즉, 클라이언트의 수가 증가하면 서버 프로세스의 수도 함께 증가한다. 이러한 클라이언트와 서버 프로세스의 증가는 프로세스 생성에 필요한 시간과 파일 및 데이터베이스의 open/close에 많은 시간이 소요되고, 하나의 서버는 연결된 클라이언트에서만 사용이 가능하므로 서버 프로세스의 현저한 사용 저하와 많은 관리 비용의 문제가 발생했다.
2-tier 기반의 클라이언트/서버 환경은 이러한 문제를 해결하기 위해 미들웨어인 TP-Monitor를 이용하여 3-tier로 구성한 클라이언트/서버 구조를 도입하였다. TP-Monitor인 Tmax는 생성되는 프로세스의 수를 조절하고, idle 중인 서버 프로세스를 스케줄링하며, 서버 프로세스의 Tuning을 통한 최적의 시스템을 운영한다.
다음은 2-tier 클라이언트/서버 구조를 나타내는 그림이다.
다음은 3-tier 클라이언트/서버 구조를 나타내는 그림이다.
3-tier 환경은 2-tier 환경보다 성능, 확장성, 관리 기능, 장애 대책 측면에서 월등한 시스템으로 구축할 수 있고, 내부에서 프로세스 관리 모듈을 통해 안정적 서비스를 제공한다. 3-tier 환경에서 Tmax의 내부 프로세스 관리 모듈은 생성되는 프로세스 수 조절하고 Idle 중인 서버 프로세스 스케줄링한다. 또한 서버 프로세스의 Tuning을 통한 최적의 시스템을 운영한다.
다음은 2-tier와 3-tier의 클라이언트/서버 환경에 대한 비교이다.
적용분야
2-tier 환경 | 3-tier 환경 |
---|---|
|
|
장점
2-tier 환경 | 3-tier 환경 |
---|---|
|
|
단점
2-tier 환경 | 3-tier 환경 |
---|---|
|
|
트랜잭션은 논리적으로 하나의 단위로 처리함으로써 다양한 자원들을 일괄적으로 활용할 수 있으며 분산된 자원 간의 자료 무결성을 유지할 수 있다. 분산 트랜잭션은 네트워크상의 시스템 간의 트랜잭션을 의미하며, 트랜잭션의 ACID(Atomic, Consistent, Isolated, Durable: transaction properties) 특성을 만족하게 해야 한다. Tmax 시스템은 이기종 또는 동종 복수 DBMS 간의 분산된 트랜잭션에서 ACID를 보장한다.
Tmax의 분산 트랜잭션 관리는 기본적으로 국제 표준인 X/Open의 DTP 모델을 준수한다. X/Open DTP 모델을 따라 AP(Application Program), TM(Transaction Manager), RM(Resource Manager), CRM(Communication Resource Manager)로 구성되어 있으며, X/Open DTP 모델을 준수하는 표준 함수의 집합체인 ATMI 함수를 지원한다. 또한 X/Open DTP를 준수하는 서로 다른 종류의 DBMS 사이에 발생하는 트랜잭션을 묶어서 처리한다.
다음은 X/Open DTP의 구조이다.
분산 트랜잭션을 처리하는 경우 2단계(2 Phase) commit을 지원하여 데이터 무결성을 보장하고 API를 제공하여 전역 트랜잭션을 용이하게 한다. 분산 트랜잭션 관리란, 여러 지역으로 분산된 환경에서 다수의 이기종 하드웨어 플랫폼 및 데이터베이스를 이용하여 실행하는 트랜잭션의 관리를 의미한다.
2PC(Two-phase commit) protocol
둘 이상의 동종 및 이종의 데이터베이스가 관련된 전역 트랜잭션에서는 트랜잭션의 속성을 보장하기 위해 2PC를 사용한다. 2PC(Two-phase commit)란 둘 이상의 데이터베이스가 연동할 때 ACID 속성을 완전히 보장하기 위해 2단계 처리를 하는 것을 말한다.
트랜잭션에 관련된 모든 데이터베이스에 트랜잭션을 처리할 준비가 되었는지 확인한다. 모든 데이터베이스로부터 준비가 완료되면 신호를 전달한다. 하나의 분산 트랜잭션으로 묶여 있는 각각의 데이터베이스나 네트워크, 서버 등이 commit이나 rollback을 할 수 있는지를 체크하고 데이터베이스를 준비시키는 단계이다.
모든 데이터베이스로부터 정상 신호를 받았으면 commit이 된다. 하나라도 비정상 신호를 받았다면 rollback를 처리하여 전역 트랜잭션을 완료한다. commit 메시지를 모든 노드에 보내고 각 노드에서는 RM으로 commit 요청을 수행하는 단계이다. 단, Commit Phase에 참여하는 모든 노드가 Commit Complete가 완료되어 tx_commit()을 요청한 쪽으로 정상 처리되었음을 알리는 시점에 데이터 변경 작업이 완료된다는 점에 주의한다.
다음은 2PC(Two-phase commit) 동작 과정을 보여주는 그림이다.
다수의 이기종 하드웨어 및 데이터베이스를 하나의 논리적인 단위(트랜잭션)로 취급하여 작업한다. 둘 이상의 동종 또는 이기종 시스템상에 존재하는 DBMS와 관련된 전역 트랜잭션 처리 시 2단계(2 Phase) commit을 지원하여 데이터 무결성을 보장함으로써 분산 트랜잭션을 완벽하게 처리한다. Tmax 시스템은 매우 간단한 함수(tx_begin, tx_commit, tx_rollback 등)를 제공하여 전역 트랜잭션을 용이하게 지원한다. 전역 트랜잭션 처리될 때 노드 간 통신은 클라이언트 핸들러를 통해 이루어진다.
다음은 전역 트랜잭션의 동작에 대한 설명이다.
Recovery / Rollback
트랜잭션이 실패하면 현재 사용 중인 RM의 내용이 바뀌었다 하더라도 이전의 내용으로 회복한다.
트랜잭션 중앙관리
노드들이 물리적으로 멀리 떨어져 있더라도 노드 간에 발생하는 트랜잭션에 대하여 중앙에서 관리 및 통제한다.
트랜잭션 스케줄링
우선순위를 고려한 동시성 제어 기법을 지원한다.
Tmax는 다양한 부하 조절 기능을 제공하여 전체 시스템의 처리량을 증대시키고 처리 시간을 단축한다. Tmax는 SLM(System Load Management)에 의한 부하 조절, DDR(Data Dependent Routing)에 의한 부하조절, DLM(Dynamic Load Management)에 의한 부하조절을 제공한다.
SLM(System Load Management)은 정의된 부하 비율로 분산 처리하는 방식이다. 하드웨어 성능에 따라 고유의 작업 처리량을 설정해서 한 노드의 서비스 요청량이 작업 처리량을 초과하면 다른 노드로 서비스 연결을 전환하는 방식이다. 노드마다 처리량을 다르게 설정하여 부하를 처리할 수 있다.
SLM은 다음과 같은 동작 방식으로 각 프로세스에서 처리된다.
클라이언트의 요청을 CLH가 수신한다.
CLH는 TIM을 통해서 SLM 서비스인지를 판단해서 서버 그룹별 처리 건수를 확인한다.
CLH가 적절한 서버 그룹에 스케줄링을 한다.
다음은 SLM에 의해 부하를 조절하는 프로세스의 예로 Node 1, Node 2, Node 3에 작업 처리량을 각각 1:5:2로 설정해 놓으면 Node 1에서 1개의 작업을 처리하고 다음 작업은 Node 2, 다음 작업은 Node 3에서 처리한다. 이후 연속적인 3개의 작업은 Node 2에서 모두 처리한다.
DDR(Data Dependent Routing)은 데이터 값에 따라 분산 처리하는 방식이다. 여러 노드에서 공통된 서비스를 제공하면 데이터 범위에 따라 노드 간 라우팅을 할 수 있도록 지정한다. 입력된 필드의 값을 확인하여 적절한 서버 그룹으로 해당 서비스를 요청한다.
DDR은 다음과 같은 동작 방식으로 각 프로세스에서 처리된다.
클라이언트의 요청을 CLH가 수신한다.
CLH는 TIM을 통해서 DDR 서비스인지를 판단해서 CLH가 구분 필드값을 확인한다.
CLH가 정의된 서버 그룹에 스케줄링을 한다.
다음은 DDR에 의해 부하를 조절하는 프로세스의 예로 연령층 별로 각각 다른 노드에서 고객조회 서비스를 제공한다면 Node 1에서는 0~10세까지, Node 2에서는 11~20세까지, 그리고 그 이외의 연령은 Node 3에서 처리되도록 한다.
DLM(Dynamic Load Management)은 부하 비율에 따라 동적으로 처리 그룹을 선택하는 방식이다. 특정 노드에 부하가 집중되는 경우 Tmax 동적 부하 조절 방법에 따라 부하를 분산하여 전체 시스템의 처리량을 증가시키고 처리 시간을 단축한다. 시스템의 부하는 기동되어 있는 프로세스의 큐잉 상태로 판단된다.
Tmax 시스템은 프로세스별로 메모리 큐를 관리하여 요청된 서비스에 대해서 현재 매핑 가능한 프로세스가 없는 경우에는 메모리 큐에 저장한다. 메모리 큐에 쌓인 거래의 건수가 시스템의 부하를 의미한다.
DLM은 다음과 같은 동작 방식으로 각 프로세스에서 처리된다.
클라이언트 요청을 CLH가 수신한다.
CLH는 TIM을 통해서 DLM 서비스인지를 판단해서 CLH가 서버별로 큐잉 건수를 확인한다.
CLH가 임계치에 도달하면 다음 서버 그룹에 스케줄링을 한다.
다음은 DLM에 의해 부하를 조절하는 프로세스의 예로 Node 1, Node 2에서 서비스를 동일하게 제공하고, Node 1에 서비스 요청이 집중되는 경우 Tmax에서 제공하는 동적 분산 알고리즘에 의해 부하를 분산하여 처리한다.
Tmax는 시스템 자원의 높은 가용성을 보장하기 위하여 머신, 네트워크, 시스템, 서버 프로세스 등의 장애가 발생하는 경우 장애 대책을 통하여 중단없는 서비스를 제공할 수 있다. 장애는 하드웨어적인 장애와 소프트웨어적인 장애로 구분할 수 있다.
하드웨어적인 장애가 발생하는 경우 Load Balancing을 통한 장애 대책과 서비스 백업에 의한 정상 운영이 가능하다. 서버 프로세스가 다운되는 소프트웨어적인 장애가 발생할 때에도 프로세스가 재시작되어 중단없이 서비스가 제공된다.
Tmax의 시스템 구성은 각 노드가 서로 다른 노드를 감시하는 Peer-to-Peer 방식이다. 따라서, 아무리 많은 노드라 해도 동일한 조건에서 즉각적으로 장애에 대응할 수 있다.
하드웨어 장애는 다음과 같은 2가지의 장애 대책이 있다.
부하 조절에 의한 장애 대책
하나의 서비스가 여러 노드에서 제공되는 경우에는 한 노드에서 장애가 발생하더라도 다른 노드에서 계속적인 서비스를 제공한다. 클라이언트에서 백업 노드로 재연결하고 서비스를 요청한다.
서비스 백업에 의한 장애 대책
노드 장애가 발생하는 경우 다른 노드에서 미리 준비된 백업 프로세스를 동작시켜 서비스를 처리한다.
프로그램 내부적인 버그에 의해서 혹은 사용자의 실수로 인하여 비정상적으로 서버 프로세스가 다운됐을 경우 자동으로 재시작될 수 있는 기능을 제공한다. 그러나 TMS, CAS, CLH와 같은 시스템 프로세스들은 제한 없이 무한으로 재시작되고 이 프로세스들이 비정상적으로 종료되었을 때에는 처리 중이던 서버 프로세스도 같이 다운될 가능성이 있으므로 주의해야 한다.
Tmax에서 제공하는 Naming 서비스는 간단 명료한 서비스 호출이 가능하도록 하여 위치 투명성(Location Transparency)을 보장한다. Tmax는 Naming 서비스를 통해 분산 시스템 내의 서비스 위치 정보를 이름으로 제공하여 간단하고 용이한 서비스 호출이 가능하고 위치 투명성을 제공한다. Naming 서비스는 간단 명료한 서비스 호출이 가능하고 서비스명만 호출하여 해당하는 서비스를 받으므로 프로그래밍이 쉽다. 클라이언트는 서버의 주소를 알지 못해도 서비스명을 통해 서버의 정보를 얻을 수 있다.
Tmax에서는 3가지 종류의 서버 프로세스를 지원한다.
클라이언트가 요청하면 수동적으로 실행되는 프로세스로 대부분은 이 프로세스가 사용된다. 클라이언트의 요청을 처리할 서버는 미리 부팅된 상태이어야 한다. 클라이언트의 요청 프로세스를 처리하는 전형적인 처리 방법이다. 호출자의 요청을 Tmax 핸들러로부터 수신하여 일을 처리하고 그 결과를 Tmax에서 반환하고서 다음 요청을 기다린다.
UCS는 호출자의 요청이 없어도 능동적으로 데이터를 전달할 수 있는 프로세스로 Tmax만의 고유 기능이다. 클라이언트의 요청을 처리할 서버는 미리 부팅된 상태이어야 한다. 클라이언트의 요청 없이 클라이언트에게 지속적으로 데이터를 보낼 수도 있으며, 동시에 TCS 프로세스와 동일하게 호출자의 요청을 받아들여 업무를 처리할 수도 있다. 즉, UCS는 TCS와 동일하게 클라이언트의 요청을 처리하면서 자발적이며 능동적으로 업무를 처리할 수 있는 기능이 부여된 프로세스이다.
POD는 클라이언트의 요청이 있을 때만 서버 프로세스가 기동되어 처리할 수 있도록 하는 방식이다. 클라이언트의 요청 때만 기동하고 업무 수행 후에는 종료되는 프로세스로 요청이 많지 않은 업무에 적합한 형태이다.
서버 프로세스 제어에 대한 자세한 내용은 “Tmax Application Development Guide”의 “제3장 서버 프로그램”을 참고한다.
Tmax의 RQ(Reliable Queue)는 서비스 수행도중 장애 등으로 인하여 요청 내용이 사라지는 것을 방지하여 서비스가 신뢰성있게 처리되도록 한다. 많은 시간이 필요한 작업이라든지 반드시 신뢰성이 보장되어야 하는 업무의 경우, 요청된 업무를 일단 디스크에 저장하고 처리한다. 시스템 장애 혹은 다른 치명적인 요인이 발생한 때에도 시스템 복구 후 해당 업무를 정상적으로 처리하는 방식이다.
tpenq() 함수의 반환값을 통하여 요청된 서비스가 정확히 디스크에 저장되었는지 확인할 수 있다. 큐잉 업무처리는 Queue manager(Qmgr)가 독립적으로 담당함으로써 다른 업무처리에는 전혀 영향을 주지 않는다. tpdeq() 함수를 사용하여 Queue manager의 처리결과에 대한 정상 유무를 확인할 수 있다.
프로세스 상태, 서비스 큐잉 상태, 서비스 처리 건수, 평균 서비스 처리 시간과 같은 전체 시스템 진행 상황을 모니터링할 수 있고 시스템 상태 및 큐 관리 시스템 통계 분석 및 보고서 작성이 가능하다.
시스템 관리는 정적 시스템 관리, 동적 시스템 관리, 모니터링 및 운영(Administration) 기능을 지원한다.
정적 시스템 관리
사용자의 환경에 따라 Tmax 시스템을 구성하는 서비스, 서버, 서버 그룹, 노드, 도메인 등에 대한 전반적인 시스템 환경을 설정한다.
동적 시스템 관리
Tmax가 동작 중에도 각 구성요소를 항목별로 변경할 수 있다.
모니터링 및 운영(Administration) 기능
동적환경 설정 변경이 가능하다.
각종 자료를 출력하고 서버의 트랜잭션 처리량, 서비스별 처리 건수, 평균 처리 시간 등의 각종 통계 정보를 제공한다.
애플리케이션과 데이터베이스의 통합 관리를 통해서 자원의 효율적인 관리가 가능하다.
기존 시스템에서는 전체 시스템에 대한 관리가 이루어지지 못해서 자원의 낭비가 발생해서 분산 시스템은 더 확실한 관리 기능이 요구되었다. Tmax는 전체의 분산 시스템에 대한 중앙 집중식의 모니터링 기능을 통해 애플리케이션을 관리한다.
단일 애플리케이션에 동종의 데이터베이스 혹은 이기종의 데이터베이스를 함께 사용하는 경우 Tmax는 다양한 종류의 자원을 애플리케이션 차원에서 통합관리가 가능하다.
Tmax 도메인은 Tmax에서 독립적으로 관리(start/down)되는 최상위 단위로 지역별 또는 업무별로 시스템을 여러 개의 도메인으로 분산 관리하는 때에도 도메인 게이트웨이를 통해 도메인 간의 연동뿐만 아니라 멀티 도메인 2PC 등의 기능을 지원한다.
Tmax는 장거리 분산 시스템의 상호 데이터를 교환하고, 다른 플랫폼 기반의 시스템 간 손쉬운 연동을 지원하며, SNA CICS, SNA IMS, TCP CICS, TCP IMS, OSI TP 등과 같은 다양한 게이트웨이 모듈을 지원한다. 도메인 간 트랜잭션 서비스 처리 및 라우팅 기능이 가능하다.
여러 노드를 한 도메인에서 관리할 때 발생하는 전체 노드 관리의 어려움, 노드 간 통신 트래픽 급증 등의 문제점을 해결할 수 있다. 또한, 어느 시스템에서든지 요청된 서비스의 처리가 가능하다. 멀티 도메인 환경에서 서비스 방식은 도메인 간 서비스 처리, 도메인 간 라우팅 , 도메인 간 트랜잭션으로 이루어진다.
다음은 멀티 도메인 구성에 따른 서비스 호출 흐름에 대한 설명이다. 멀티 도메인은 게이트웨이를 통해 연결된다. 도메인 게이트웨이는 서로 연결을 맺을 때 서버 또는 클라이언트로 동작한다. 게이트웨이 간 기동 순서는 없다.
Tmax는 TCP/IP, X.25, SNA 등 다양한 게이트웨이를 제공해서 타업무 시스템/대외기관과의 연동을 쉽게 해준다. 게이트웨이는 효과적인 통신을 가능하게 하고 업무 로직과 연계 모듈 분리를 통해 관리의 편의성을 제공한다. 게이트웨이는 Tmax에 의해 관리되므로 자동으로 장애 복구가 가능하고 관리자에 의한 별도 관리가 필요없다.
다음은 게이트웨이의 동작에 대한 설명으로 클라이언트가 서비스를 요청하면 해당 서비스가 있는 도메인으로부터 그 처리 결과를 응답받는 것을 보여준다. 이때, 양쪽 도메인에서는 게이트웨이를 통해 트랜잭션 서비스나 값에 따라 도메인 간에 라우팅할 수 있다.
2-tier 시스템에서 3-tier 시스템으로 변환이 용이하도록 다양한 에이전트를 제공한다.
RCA는 Tmax 클라이언트 라이브러리를 사용할 수 없는 기존 통신 프로그램과 TCP/IP 소켓으로 연결하여 Tmax 시스템에서 제공하는 서비스를 이용할 수 있도록 지원하는 에이전트로 리모트(REMOTE) 모드 또는 로컬(LOCAL) 모드의 서비스를 지원한다. 기존 Tmax 클라이언트 라이브러리처럼 하나의 클라이언트 라이브러리는 하나의 클라이언트 프로그램에서만 사용한다. 그러나 RCA는 멀티 스레드 방식으로 작성되어 하나의 스레드가 하나의 Tmax 클라이언트로 동작한다. 또한, 다양한 형태의 클라이언트를 지원하기 위해 최대 32개까지의 멀티 포트 지정이 가능하다.
RCA는 사용자의 접속을 제어하는 RCAL, 사용자의 로직과 함께 생성되는 RCAH를 통해 안정적인 장애대책이 가능하고 관리 툴인 rcastat와 rcakill을 제공한다.
다음은 RCA의 구조이다.
SCA는 Tmax 클라이언트 라이브러리를 사용할 수 없는 기존의 통신 프로그램과 TCP/IP 통신으로 연결하여 Tmax 시스템에서 제공하는 서비스를 이용할 수 있도록 지원하는 에이전트이다. SCA는 customizing routine과 CLH 라이브러리로 구성된다. CLH는 CLH 라이브러리와 링크된다.
클라이언트와 접속 및 해제, 데이터의 송수신에 해당하는 네트워크에서의 처리 부분은 시스템 내부적으로 처리된다. 개발자는 클라이언트와 미리 정의된 포트 번호를 Tmax 환경파일에 설정하여 클라이언트와 접속할 수 있으며, 수신된 데이터와 송신할 데이터를 개발자의 의도에 맞도록 수정 및 보완할 수 있다.
SCA는 다양한 형태의 클라이언트를 지원하기 위해 최대 8개까지 포트 지정이 가능하다. SCA 모듈은 CLH 모듈과 직접적인 데이터의 전달이 가능하고 Non-Tmax 클라이언트/Tmax 클라이언트를 동시에 수용할 수 있다. SCA의 서비스 방식은 TCP/IP raw 소켓을 이용하는 방법과 Tmax 클라이언트 라이브러리를 이용하는 방법으로 나뉜다.
다음은 SCA 중 하나인, CA(Client Agent)를 이용한 서비스 호출 형태를 보여주는 그림이다.
클라이언트에서 서버로 통신을 요청하는 다음과 같은 4가지 방식을 지원한다.
실시간으로 지속적으로 변하는 데이터를 보다 빠르게 처리하기 위해 CLH(Client Handler)를 거치지 않고 RDP에서 클라이언트에게 직접적으로 데이터를 전달할 수 있다. 따라서 RDP를 이용하게 되면 CLH의 부하를 크게 낮출 수 있기 때문에 Tmax 시스템 전체적인 성능을 높일 수 있다. RDP는 UDP 데이터 유형에 대해서만 지원하고 있다. RDP는 UCS 서버 프로세스 형태로 구성된다.
Window 기반의 클라이언트 프로그램에서 사용할 수 있는 편리한 라이브러리를 제공한다. WinTmax 라이브러리와 tmaxmt 라이브러리 2가지 종류가 있으며 기본적으로 스레드 기반으로 동작한다.
Window 기반의 클라이언트 라이브러리로 다중 Window를 설정할 수 있도록 설계되어 있다.
WinTmax 라이브러리는 내부적으로 관리 스레드와 작업 스레드로 구성된다. 다중 Window 설정이 가능하고 256개까지의 Window 설정이 가능해서 동시 다발적으로 발생하는 데이터 처리에 유용하다.
구분 | 설명 |
---|---|
관리 스레드 | Tmax 시스템과의 접속, 데이터의 송신, 작업 스레드 관리, Tmax 시스템과의 접속 해제의 기능을 수행한다. |
작업 스레드 | 데이터의 수신과 특정 Window에 데이터 전달의 기능을 수행한다. |
다음은 WinTmax 라이브러리 구조를 보여주는 그림이다.
클라이언트 프로그램의 스레드화가 가능하도록 개발되어 있다. 개발자는 스레드를 사용하여 프로그램을 만들어야 하며 각각의 스레드에서 지정된 함수(WinTmaxAcall(), WinTmaxAcall2())를 사용하여 데이터를 송수신할 수 있다. 각각의 함수는 내부적으로 스레드를 생성하고, 서비스를 호출하며 그 결과를 받아 지정된 Window나 함수로 데이터를 전달한다.
WinTmaxAcall은 지정된 Window에 데이터를 SendMessage를 사용하여 전달한다. 반면 WinTmaxAcall2는 지정된 Callback 함수에 데이터를 전달한다.
Tmax는 HMS(Hybrid Messaging System)를 통해서 안정적인 메시지 전달을 지원한다. Tmax HMS는 다음과 같은 특징을 갖는다.
Hybrid 아키텍처
TP-Monitor(Tmax)와 MOM(Messaging Oriented Middleware)이 공존하고, MOM과 RM 사이의 2PC 기능을 제공한다. Tmax HMS는 Tmax의 TP-Monitor 기능에 추가하여 MOM 기능을 제공하기 위한 모듈로, 모듈 간 연계가 유연한 구조를 제공한다. HMS는 TMS와 TP-Monitor(Tmax 기본 기능)와 MOM이 공존하는 구조를 갖는다.
신뢰성 있는 장애복구
Persistent 메시지의 저장을 위해 DBMS를 사용한다.
높은 가용성
백업노드를 지정하여 장애에 유연하게 대처한다. Tmax HMS는 스토리지를 이용하여, 장애복구 및 신뢰성 있는 메시지 전달을 보장한다. 장애복구의 신뢰성 보장을 위해 DBMS를 사용하고 장애가 발생하면 Persistent 메시지를 DBMS로부터 복구한다.
JMS 메시징 모델 수용
JMS 메시징 모델을 수용하여 P2P, Publish/Subscribe를 지원하고 JMS 스펙과 유사한 C API 제공하여 사용하기 쉽다.
HMS는 Tmax의 기능으로 Sender와 Receiver의 느슨한 결합(loosely coupled)을 위한 통신 매개체이며, Queue 방식과 Topic 방식을 지원한다.
HMS에 대한 자세한 내용은 "Tmax HMS User Guide"를 참고한다.
Tmax는 기존 Master/Slave 방식 대신 Peer-to-Peer 구조를 채택하였고 각 노드에 RACD(Remote Access Control Daemon)가 존재한다. 또한, Stream Pipe 통신 방식을 사용하여 Queue Full을 원천적으로 방지하고 네트워크 프로세스에서의 과다한 트랜잭션을 차단함으로써, 메시지 큐 방식보다 프로세스 간의 통신을 안정적으로 유지시킬 수 있다. Tmax의 이러한 특장점은 메모리 자원의 낭비를 최소화하고 빠른 장애 복구를 지원하며, 관리자가 능동적으로 장애에 대응할 수 있게 하여 탁월한 안정성을 제공한다.
다음은 Tmax의 특징이다.
X/Open, ISO-TP 등 각종 DTP 국제표준 100% 준수
분산 트랜잭션 프로세싱의 국제 표준인 X/Open DTP(Distributed Transaction Processing) 모델을 준수하므로 응용프로그램(AP), 트랜잭션 관리자(TM), 자원 관리자(RM), 통신 자원 관리자(CRM) 등을 기반으로 호환성 있는 API와 시스템 구조를 명시한다.
국제 표준 기구 OSI(Open Systems Interconnection group)의 DTP 서비스에 대한 기능적 분산과 기능 구성 요소 간 API, 시스템 인터페이스에 정의되어 분산 트랜잭션을 지원하기 위한 기능 그리고 분리된 개방형 시스템에 존재하는 다수 트랜잭션을 상호 조정이 가능하도록 기본 틀을 명시한다.
분산 환경에서 이기종 간의 투명한 업무 처리 및 OLTP(On-Line Transaction Processing)를 지원한다.
Protection, Multiplexing의 효율성 향상
Stream Pipe 방식의 IPC(Inter Process Communication) 구현으로 Protection, Multiplexing의 효율성을 향상시킨다.
다양한 메시지 타입 및 통신 유형 제공
Integer, Long, Character 등의 메시지 타입을 지원한다.
동기형(Synchronous) 통신, 비동기형(Asynchronous Mode) 통신, 대화형(Conversational) 통신, 전달형 등의 통신 유형을 제공한다.
FDL(Field Definition Language) 및 Structure Array를 지원한다.
장애대책(Fault Tolerance, Fail-Over)
Peer-to-Peer 방식의 TP-Monitor 구조를 갖는다.
H/W 및 S/W에 대한 장애 대책을 갖는다.
다양한 장애 방지 기능을 지원한다.
확장성(Scalability)
클라이언트들의 증가에도 무리 없는 시스템 활용성을 제공한다.
CA(Client Agent)를 이용한 2-tier 모델에서 3-tier 모델로의 효율적인 전환이 가능하다.
레거시 시스템에 대한 다양한 프로토콜을 제공한다.
WebT를 이용한 웹 환경으로 서비스를 확대하여 제공한다.
TCP/IP, SNA, X.25 등 레거시 시스템에 대한 다양한 프로토콜을 제공한다.
다양한 프로세스 제어 방식을 지원한다.
유연성(Flexibility)
다양한 프로세스 제어 방식을 지원한다.
사용 환경별 특성을 고려한 기능이 요구될 경우 추가 기능을 지원한다.
뛰어난 성능
시스템 자원의 효율적 활용이 가능하다.
단순, 명료한 개발 생산성 향상을 위한 API를 제공한다.
사용자 입장의 편리하고 사용하기 쉬운 시스템 관리(System Monitoring) 기능을 제공한다.
다양한 H/W 플랫폼 지원
IBM OS 390, 대부분의 UNIX 계열 운영체제, Linux, Windows NT 등의 플랫폼을 지원한다.
PowerBuilder, Delphi, Visual C/C++, Visual Basic, .NET(C#, VB) 등의 모든 4GL 지원
다음은 Tmax 시스템의 기본 환경을 보여주는 표이다.
구분 | 설명 |
---|---|
프로토콜 | Application API : XATMI, TX |
Integrating API : XA | |
Network : TCP/IP, X.25, SNA(LU 0/6.2) | |
OS | 서버 : All UNIX, NT, Linux |
클라이언트 : All UNIX, Windows, MS-DOS, etc. | |
지원 플랫폼 | IBM OS 390, UNIX, Linux 및 NT를 지원하는 모든 H/W |
서버용 개발언어 | C, C++, COBOL |
클라이언트용 개발언어 | C, C++ 및 다양한 4GL(Power Builder, Delphi, Visual C/C++, Visual Basic, .NET(C#, VB) etc.)에 대한 인터페이스 지원 |
DBMS 지원 | Oracle, Informix, Sybase and DB2 (UDB) |
다음은 Tmax를 도입할 때 고려해야 할 서버의 요구사항을 보여주는 표이다.
구분 | 설명 |
---|---|
H/W | Memory: 0.50 Mbytes |
Disk(Tmax 클라이언트) : 0.277 Mbytes (Include - 83K, DLL - 86K, Type Compiler - 108k) | |
S/W | IBM OS 390, UNIX, Linux, NT |
C 또는 C++, COBOL Compiler | |
네트워크 프로토콜 | TCP/IP |
다음은 Tmax를 도입할 때 고려해야 할 클라이언트의 요구사항을 보여주는 표이다.
구분 | 설명 |
---|---|
H/W | Memory : 0.537 Mbytes + 0.2 ~ 0.5 Mbytes / application |
Disk(Tmax 클라이언트) : 0.277 Mbytes (Include - 83K, DLL - 86K, Type Compiler - 108k) 단, Power Builder의 경우 203K(DLL, PBD) 추가 | |
S/W | Linux, NT, Windows (2000, XP), MS-DOS, UNIX |
Power Builder, Delphi, Visual Basic, Visual C++, C, .NET(C#, VB) | |
네트워크 프로토콜 | TCP/IP |
Tmax를 도입할 때 기능, 성능 및 안정성 등 여러 측면에서 고려해야 할 사항이 있다.
다음은 기능 면에서 고려해야 할 사항에 대한 설명이다.
고려사항 | 세부 사항 |
---|---|
TP-Monitor의 기본 기능 |
|
부가 기능 |
|
다음은 기능 외에 고려해야 할 사항에 대한 설명이다.
항목 | 고려사항 |
---|---|
성능 |
|
안정성(장애 대책) |
|
교육 및 기술지원 |
|
리스크 관리 |
|
개발 및 운영 편리성 |
|
사용자 만족도 |
|
호환성 |
|
업체 규모 |
|
기타 |
|