소개

본 장에서는 세션(Session)의 정의 및 SQ의 개요 및 특징에 대해서 설명한다.

1. 개요

Tmax 세션(Session)은 기본적으로 클라이언트가 Tmax 시스템과 연결을 맺고(tpstart() 함수) 끊는 것(tpend() 함수)을 하나의 세션으로 정의한다. 이 경우 클라이언트에서 호출된 서비스들은 같은 세션이 되며 세션은 도메인에서만 유지된다.

figure 1 1
Tmax 세션 흐름

UCS 서비스는 usermain() 루틴에서 요청이 시작되는 경우에 새로운 세션이 시작될 수 있으며, 이때 사용되는 OUTBOUND 채널은 CLH와 지속적인 연결을 맺고 있으므로 하나의 세션(Long Term Session)으로 처리된다. 재시작할 때마다 새로운 세션이 시작된다.

SQ(Session Queue)는 같은 세션으로 묶인 클라이언트와 서비스 사이에 효율적인 데이터 공유를 위한 세션 데이터 저장소를 제공한다. 같은 세션 내에서만 접근이 가능하며 세션이 종료되면 자동으로 자원이 해제된다.

또한 세션에 관계없이 글로벌하게 접근 가능한 GQ(Global Queue)도 제공한다. GQ의 데이터는 엔진이 종료될 때 자원을 해제한다. Tmax SQ 시스템은 공유 메모리 저장소를 사용하여 보다 빠르고 효율적인 데이터 공유를 제공한다.

2. 시스템 구성

Tmax SQ 시스템은 시스템 저장소, SQS, RQ API로 구성된다.

figure 1 2
SQ 시스템 구성
  • 시스템 저장소

    Tmax SQ 시스템을 사용하기위해서는 환경설정 파일에 공유 메모리 키값 및 크기 등을 지정해야 한다. 또한 저장소의 크기가 메모리 크기를 초과할 수 없으므로 대용량의 데이터를 저장해야 할 경우에는 제약이 필요하다.

    시스템 저장소 설명

    SQ(Session Queue)

    같은 세션으로 묶인 클라이언트와 서비스 사이에 효율적인 데이터 공유를 위한 세션 데이터 저장소로 같은 세션에서만 접근이 가능하며 세션이 종료되면 자동으로 자원이 해제된다.

    GQ(Global Queue)

    세션에 관계없이 글로벌하게 접근 가능한 세션 데이터 저장소로 GQ의 데이터는 엔진이 종료될 때 자원을 해제한다.

  • SQS

    SQS는 CLH(클라이언트 매니저)의 제어를 받으며 SQ 데이터를 저장하고 읽어 들이는 모든 과정을 관리하고 제어한다.

  • RQ API

    Tmax에서는 실제 애플리케이션 개발을 위해 API가 제공된다. RQ API에 대한 자세한 내용은 API를 참고한다.

3. 특징

Tmax SQ 시스템은 다음과 같은 특징을 가지고 있다.

  • 키(key) 기반의 큐

    큐에서 사용하는 키 방식은 다음과 같이 2가지 방식으로 구분된다.

    • 시스템 키(SYSKEY) 사용 방식

      시스템 키를 사용할 때 SQ 시스템에서 생성되는 유일한 키를 사용할 수 있다. SYSKEY는 16Byte(SQ_SYSKEY_SIZE로 규정되어 있음) 크기의 키로서 "$SQID"라는 5개의 문자로 시작하게 된다. 나머지 11Byte는 시스템 내부에서 사용하게 된다. 따라서 사용자는 "$SQID"로 시작하는 키를 임의로 사용할 수 없다.

    • 사용자 키(USERKEY) 사용 방식

      사용자가 임의로 지정할 수 있는 키로, 유일성 보장은 사용자 몫이다.

    SQ는 일반적인 큐와 달리 키 기반(Key-based)의 큐를 제공하므로 데이터 입/출력의 경우 반드시 키를 사용해야 한다. SQ에서는 키의 유일성(Uniqueness)을 보장하므로 데이터를 입력(PUT)할 때 중복된 키가 입력되면 에러(TPEMATCH)를 반환한다. 단, 업데이트 flags(TPSQ_UPDATE)를 사용할 때는 데이터가 업데이트된다.

    GQ의 경우 사용자 키를 사용할 때 유일성에 대해서는 시스템 효율성을 위해 사용자의 몫으로 두고 있다. 단, 시스템에서 제공하는 키를 사용할 경우 유일성을 보장할 수 있다.

  • 임시적인 분산 저장소

    SQ의 빠르고 효율적인 I/O를 지원하기 위해 공유 메모리 저장소를 사용하며, 특히 멀티 노드 환경에서는 분산 저장되도록 하여 확장성을 제공한다. 단, 주로 세션이 유지되는 동안 임시적으로 사용되므로 데이터는 세션이 종료되었을 때 자동으로 삭제되며 엔진 장애의 경우 복구(Recovery)는 지원하지 않는다.

    GQ의 경우 엔진이 종료될 때 데이터가 삭제된다.

    트랜잭션으로 묶이거나 데이터 손실이 치명적일 경우에는 RQ를 사용할 것을 권장한다.

  • GQ 지원

    GQ(Global Queue)는 세션에 관계없이 글로벌하게 데이터를 공유할 수 있다. 멀티 노드 환경까지 지원하며 도메인을 넘어갈 수는 없다. GQ도 시스템 키와 사용자 키를 사용할 수 있으며 성능면에서는 시스템 키의 사용을 권장한다.

  • 모니터링 및 관리 기능 지원

    SQ에 대한 모니터링 및 관리는 Tmax 관리 툴(tmadmin)을 통해서 지원한다.