Tmax 애플리케이션 소개
본 장에서는 Tmax 애플리케이션의 정의, 구성, 특징 등을 설명한다.
1. 개요
Tmax 애플리케이션이란 개방형 환경에서 Tmax를 미들웨어로 사용해서 개발한 클라이언트/서버 프로그램을 의미한다. 고성능 PC의 등장과 프로그램 기법의 발달은 호스트 중심의 중앙 처리 방식에서 클라이언트와 서버가 작업을 분담하는 환경으로 변화를 가져왔다. 클라이언트/서버 환경은 작업을 분담하므로 고성능 PC의 활용과 서버의 소형화, 각종 하드웨어 선택폭의 확대 등과 같이 자원을 효율적으로 활용할 수 있도록 하였다.
하지만 클라이언트/서버 환경은 다음과 같은 문제점을 가지고 있다.
-
개발자가 각 하드웨어, 운영체제, 네트워크 프로토콜에 대한 깊은 이해가 있어야만 프로그램 작성이 가능하다.
-
사용자 수와 데이터 양의 증가에 따라 처리 속도가 현저하게 저하된다.
-
과다한 네트워크 트래픽 발생으로 속도가 저하된다.
-
분산 환경에 따른 관리(프로세스 관리, 통신, 보안, 장애 대책 등)가 어렵다.
Tmax 애플리케이션은 클라이언트/서버 프로그램의 장점을 유지하면서, 위와 같은 단점을 획기적으로 보완할 수 있다. Tmax를 미들웨어로 하여 애플리케이션을 작성할 경우 Tmax에서 제공하는 함수를 이용하여 프로그램을 작성하기 때문에 통신 프로그램 및 프로세스 관리, 트랜잭션 관리 등 관리의 어려운 부분을 Tmax가 해결한다. Tmax에서 제공하는 함수는 버퍼 및 통신, 기록 트랜잭션 관련 함수이며, 서버 라이브러리(libsvr.a)와 클라이언트 라이브러리(libcli.a)로 나누어 제공된다. Tmax에서 제공하는 함수는 분산처리 국제표준 X/Open DPT 모델을 준수한다.
2. 구성
Tmax 애플리케이션은 크게 클라이언트 프로그램과 서버 프로그램으로 구성되고 Tmax를 사용하기 위한 환경설정 작업이 필요하다.
-
클라이언트 프로그램
클라이언트 프로그램은 서비스를 요청하고, 그 요청에 대한 응답을 서버에서 받아 사용자가 원하는 형식으로 결과를 전달하는 역할을 하는 프로그램이다. Tmax 시스템에 접속하기 위해서는 Tmax 주소(Address), 포트 번호 등을 설정한 UNIX 환경 파일(예: .profile)이 필요하다. 클라이언트 프로그램은 사용자 환경 파일의 환경변수를 참조하여 Tmax 시스템에 접속하고 구조체 버퍼 혹은 필드 버퍼를 사용할 경우 각각에 해당되는 바이너리 파일을 참조한다.
-
서버 프로그램
서버 프로그램은 클라이언트의 요청을 받아서 처리하여 적절한 응답을 생성하는 프로그램으로 시스템 자원에 대한 접근 관리와 클라이언트의 요청을 받아서 처리하고 응답을 클라이언트에게 전달하는 역할을 한다.
서버 프로그램은 Tmax 시스템에서 main() 루틴을 관리하며 개발자는 서비스 루틴만을 작성하면 된다. 서비스 루틴은 Tmax의 유틸리티를 통해 생성되는 각각의 서비스 테이블과 같이 컴파일하며 구조체 버퍼를 사용하는 경우 역시 유틸리티를 사용하여 얻어지는 컨버전 루틴도 함께 사용해야 한다.
Tmax 응용 서버에서는 서버 프로그램과 Tmax 환경 파일이 반드시 필요하다. Tmax 환경 파일은 Tmax가 사용하는 자원들에 대한 전체 시스템 구성을 설정하는 파일이며, Tmax 관리자가 작성한다. 이 파일은 Tmax 시스템과 서버 프로그램 기동할 때 참조되며 서비스 테이블을 작성하는 경우도 참조된다.
다음은 Tmax 애플리케이션 프로그램의 구조이다.
클라이언트/서버 프로그램에 대한 자세한 내용은 각각 클라이언트 프로그램과 서버 프로그램을 참고한다. |
3. 특징
Tmax 애플리케이션은 UNIX 프로그램과 비교하여 다음과 같은 특징을 갖는다.
-
분산처리 국제 표준(X/Open DTP model)을 준수한다.
네트워크를 제어하는 루틴은 Tmax 함수를 사용하며 이 함수는 분산처리 국제 표준(X/Open DTP model)을 준수한다. 규격을 준수하는 다른 미들웨어로 개발된 프로그램도 별도의 수정 없이 사용할 수 있다.
-
클라이언트의 요청을 처리하는 순수한 서비스 루틴만 작성한다.
서버 애플리케이션 프로그램을 작성할 때 클라이언트는 기본적인 C 언어 형식에 맞게 프로그램(내부에 main()을 포함)을 개발해야 하며, 서버 프로그램은 클라이언트의 서비스 요청을 처리하는 순수한 업무 서비스 루틴(내부에 main()이 없는)만 개발한다.
-
다양한 통신 유형을 제공한다.
서비스 요청에는 동기형 통신, 비동기형 통신, 대화형 통신의 3가지 유형이 제공된다. 다양한 통신 유형을 제공하기 때문에 개발자는 통신 네트워크에 대한 깊은 이해 없이도 쉽게 프로그래밍이 가능하게 된다.
다음은 서비스 요청의 유형에 대한 설명이다.
통신 유형 설명 동기형 통신
서비스 요청(tpcall) 후 응답이 올 때까지 기다린다.
비동기형 통신
서비스를 요청(tpacall)하고 응답을 받을(tpgetrply) 때까지 다른 일을 할 수 있다.
대화형 통신
초기 연결 설정(tpconnect) 후 메시지 송신(tpsend)과 수신(tprecv)을 반복적으로 수행할 수 있다.
통신 유형에 대한 자세한 내용은 통신 유형을 참고한다.
-
다양한 버퍼를 사용할 수 있다.
서비스를 요청할 때 7가지 버퍼를 사용할 수 있다. 보통 개발자는 타 기종간 데이터 통신을 할 때 데이터 무결성을 보장하는 데 어려움을 겪는다. 이기종 하드웨어와 운영체제에 따라 데이터를 메모리에 할당하는 방식과 데이터 타입별로 정의된 길이가 서로 다를 수 있다. 따라서 특정 데이터 값을 송신했을 때 수신 측에서는 다른 값으로 인식될 수 있으므로 일반적으로 모든 하드웨어나 운영체제에서 동일하게 인식될 수 있는 문자형으로 변환하여 데이터를 송수신해야 한다.
Tmax에서는 7가지 유형의 버퍼를 지원하여 개발자에게 선택의 폭을 넓혔을 뿐 아니라 머신, 운영체제, 네트워크에 대한 깊은 이해가 없어도 개발이 가능하다. 문자형 외에도 구조체 유형 등의 버퍼를 제공하므로 시스템 성능 향상은 물론 네트워크 부하를 감소시킨다.
버퍼에 대한 자세한 내용은 버퍼 유형을 참고한다.
-
개발이 용이하다.
-
하드웨어, 통신 네트워크에 대한 깊은 이해가 없어도 쉽게 프로그래밍이 가능하다.
-
서비스 요청을 처리할 서버의 주소를 정확히 모르는 경우에도 서비스를 요청할 수 있다.
-
클라이언트는 이름만으로도 서비스를 요청할 수 있다.
-
-
트랜잭션 처리의 무결성을 제공한다.
프로그램에서는 트랜잭션의 범위만을 설정하면 Tmax는 2PC 방식으로 데이터의 무결성을 제공한다.
2PC(2 Phase Commit)는 2개 이상의 데이터베이스가 연동할 때 2단계(Prepare 단계, Commit 단계)로 처리하는 것을 의미한다. 자세한 내용은 트랜잭션을 참고한다.