상호 통신

본 장에서는 원격 OSC 애플리케이션 서버에 있는 파일, TDQ, TSQ 리소스에 대한 접근 및 프로그램 링크 기능에 대해 기술한다.

1. 개요

OSC 애플리케이션 서버는 OSC 애플리케이션 프로그램에서 원격 OSC 애플리케이션 서버가 관리하는 리소스에 접근할 수 있도록 하는 서버 간 상호 통신(Intercommunication) 기능을 제공한다.

다음은 OSC에서 제공하는 3가지 상호 통신 기능이다.

  • Function Shipping

    OSC 애플리케이션 프로그램이 원격 OSC 애플리케이션 서버가 관리하는 파일, TDQ, TSQ 등의 리소스에 접근하는 기능이다.

  • Asynchronous Processing

    OSC 애플리케이션 프로그램이 원격 OSC 애플리케이션 서버가 관리하는 트랜잭션과 비동기적으로 통신할 수 있다.

  • Distributed Program Link(이하 DPL)

    OSC 애플리케이션 프로그램이 원격 OSC 애플리케이션 서버의 프로그램을 Link하는 기능이다.

2. 기본 개념

OSC 애플리케이션 서버는 SYSID라는 식별자로 자신과 다른 OSC 애플리케이션 서버를 구별한다. SYSID 식별자는 CONNECTION 리소스 정의를 통해 해당 SYSID가 지정하는 원격 시스템과의 연결 정보를 얻고, 이를 통해 원격 시스템과 연결한다.

SYSID는 OSC 애플리케이션 서버의 식별자를 의미한다. 이는 전체 OpenFrame 시스템 내에서 각 서버를 구분짓기 위하여 OSC 애플리케이션 서버마다 배정되는 시스템 레벨의 고유 식별자가 아니라, 한 OSC 애플리케이션 서버 내부에서 다른 OSC 애플리케이션 서버를 구분하기 위한 식별자이다. 예를 들어 OSC00001이라는 이름의 서버에서 OSC00002를 식별하는 SYSID와 OSC00002에서 OSC00003을 식별하는 SYSID는 동일하게 설정하더라도 해당 서버에서 실제 가리키는 물리적인 서버는 다르다.

상호 통신을 위하여 먼저 OSC 애플리케이션 서버 자신의 SYSID 식별자를 OpenFrame 환경설정에 osc.{servername} 서브젝트, GENERAL 섹션의 SYSID 키의 VALUE 항목에 4Byte의 문자열로 지정한다. 이 값은 OSC 애플리케이션 서버에서 원격 시스템을 구분할 때 사용된다.

osc.{servername} 서브젝트 설정방법에 대한 자세한 내용은 OpenFrame OSC "환경설정 안내서"를 참고한다.

OSC 애플리케이션 프로그램에서 SYSID 식별자를 이용하여 원격 OSC 애플리케이션 서버에 접근하는 방법은 다음과 같다.

  • Function Shipping, Asynchronous Processing 또는 DPL 요청을 하려는 EXEC CICS 명령어 인터페이스의 SYSID 옵션에 원격 애플리케이션 서버의 SYSID를 설정한다.

  • Function Shipping하려는 파일, TDQ의 리소스 정의나 TSMODEL 리소스 정의 또는 DPL하려는 프로그램 리소스 정의 중 REMOTESYSTEM 항목에 원격 애플리케이션 서버의 SYSID를 지정한다.

여기서 SYSID란, 원격 애플리케이션 서버에 대한 연결 정보가 담긴 CONNECTION 리소스 정의의 이름을 의미한다. CONNECTION 리소스 정의의 NETNAME 항목에 원격 애플리케이션 서버의 이름이 기술되며, 이 연결 정보를 바탕으로 상호 통신 요청이 진행된다.

CONNECTION 리소스 정의에 대한 자세한 내용은 OpenFrame OSC "리소스 정의 안내서"를 참고한다.

3. Function Shipping

Function Shipping은 OSC 애플리케이션 프로그램이 원격 애플리케이션 서버에 설정된 리소스(파일, TDQ, TSQ)에 접근하여 READ, WRITE, DELETE 또는 순차 검색할 수 있는 기능을 의미한다.

Function Shipping을 통하여, 접근하고자 하는 원격 애플리케이션 서버를 지정하는 방법은 다음과 같다.

  • EXEC CICS 명령어 인터페이스의 SYSID 옵션으로 해당 리소스가 존재하는 원격 애플리케이션 서버의 SYSID를 지정한다.

  • 해당 리소스 정의의 REMOTESYSTEM 항목에 해당 원격 애플리케이션 서버의 SYSID를 설정한다.

원격 리소스에 접근하는 방법은 리소스의 종류에 따라 차이가 있으므로 종류별 설명을 참고한다.

Function Shipping 동작방식

Function Shipping은 기본적으로 다음과 같이 동작한다.

  1. OSC 애플리케이션 프로그램에서 EXEC CICS 인터페이스를 통하여, Function Shipping을 요청한다.

  2. SYSID 옵션 또는 REMOTESYSTEM 항목에 지정된 값이 로컬 애플리케이션 서버 설정의 osc.{servername} 서브젝트, GENERAL 섹션의 SYSID 키의 VALUE 항목과 동일한지 확인한다. 자세한 내용은 OpenFrame OSC " 환경설정 안내서"를 참고한다.

    동일하면 로컬 리소스를 사용하고, 동일하지 않는 경우 원격 OSC 애플리케이션 서버에 대한 CONNECTION 리소스 정의를 얻는다(CONNECTION 리소스 정의의 PROTOCOL 항목이 지정되어 있는 경우만 지원한다).

  3. 관련 리소스 매니저는 요청 내용을 메시지화한다.

  4. CONNECTION 리소스 정의에서 NETNAME에 기술된 이름에 해당하는 원격 애플리케이션 서버의 대화형 서버에 지정된 미러 서비스를 메시지화한 데이터와 함께 호출한다.

  5. 원격 서버의 미러 서비스는 CSM*이라는 미러 트랜잭션을 바탕으로 해당 리소스에 접근하여 요청을 처리하고 그 결과를 Function Shipping을 요청한 애플리케이션 서버에 돌려준다.

    복구 가능한 리소스를 접근하거나, 순차 검색 또는 READ UPDATE 기능을 사용한 경우 해당 미러 서비스는 종료되고, 이외의 경우 미러 트랜잭션은 애플리케이션 프로그램에서 RETURN, SYNCPOINT 또는 SYNCPOINT ROLLBACK 명령어를 실행할 때까지 기다렸다가 요청에 따라 커밋 또는 롤백 처리를 수행하고 종료된다.

이와 같이 Function Shipping 기능은 원격 서버에 대한 미러 서버 및 미러 서비스를 기반으로 하므로 대화형 서버와 미러 서비스가 미리 등록되어 있어야 한다. 자세한 설정 방법은 OpenFrame OSC "운영자 안내서"를 참고한다.

리소스 종류에 따른 Function Shipping

다음은 리소스 종류에 따른 Function Shipping의 설명이다.

  • 파일의 Function Shipping

    DELETE, READ, REWRITE, UNLOCK, WRITE, ENDBR, READNEXT, READPREV, RESETBR, STARTBR 등 파일에 접근하는 EXEC CICS 인터페이스의 명령어에서 다음과 같은 방법으로 Function Shipping 기능을 활용할 수 있다.

    • 명령어의 SYSID 옵션에 원격 애플리케이션 서버의 SYSID 식별자를 지정한다.

    • FILE 리소스 정의에서 REMOTESYSTEM에 SYSID 식별자를 지정한다. REMOTENAME도 지정하면 원격 시스템에서 REMOTENAME과 동일한 이름을 가진 파일에 명령어 요청이 내려진다.

  • TDQ의 Function Shipping

    TDQ 접근 명령어 중 DELETEQ TD, READQ TD, WRITEQ TD 명령어에서 다음과 같은 방법으로 Function Shipping 기능을 활용할 수 있다.

    • 명령어의 SYSID 옵션에 원격 애플리케이션 서버의 SYSID 식별자를 지정한다.

    • TDQUEUE 리소스 정의에서 REMOTESYSTEM에 SYSID 식별자를 지정한다. REMOTENAME도 지정하면 원격 시스템에서 REMOTENAME과 동일한 이름을 가진 파일에 명령어 요청이 내려진다.

    • TYPE에 아무것도 지정하지 않은 채 TDQ 리소스 정의의 REMOTESYSTEM에 원격 서버의 SYSID 식별자를 지정한다. REMOTENAME에 접근할 TDQ 이름을 지정한다.

  • TSQ의 Function Shipping

    TSQ 접근 명령어 중 DELETEQ TS, READQ TS, WRITEQ TS 명령어에서 Function Shipping 기능을 활용할 수 있다.

    • 명령어의 SYSID 옵션에 원격 애플리케이션 서버의 SYSID 식별자를 지정한다.

    • TSMODEL 리소스 정의에서 REMOTESYSTEM에 SYSID 식별자를 지정한다.

4. Asynchronous Processing

Asynchronous Processing은 OSC 애플리케이션 프로그램에서 원격 OSC 애플리케이션 서버에 새로운 태스크에 대한 기동을 요청하고, 태스크가 요청한 프로그램과는 비동기적으로 동작하는 기능을 의미한다.

새로운 태스크 요청은 Interval Control 기능인 START 명령어를 통하여 이루어진다. SYSID로 애플리케이션 서버를 지정하는 것 외에, 같은 애플리케이션 서버에 요청하는 방식과 동일하다. 요청을 받아 기동된 태스크의 프로그램은 RETRIEVE 명령어를 통하여 START로 보내진 데이터를 받는다.

로컬 애플리케이션 서버로의 요청을 CANCEL 명령어로 취소가 가능한 것과 동일하게 CANCEL 명령어를 통하여 원격 애플리케이션 서버로의 요청도 취소가 가능하다.

5. DPL

DPL(Distributed Program Link)은 OSC 애플리케이션 프로그램에서 원격 OSC 애플리케이션 서버에 존재하는 프로그램을 링크하는 기능이다. 사용자 애플리케이션의 End User 인터페이스(예: Mapping Support를 통한 터미널 화면)를 비즈니스 로직을 분리하여 애플리케이션을 다양한 사용자 인터페이스로부터 호출될 수 있는 구조로 만들려고 하는 경우나 다수의 반복적인 Function Shipping으로 인한 성능 상의 문제를 최소화하기 위하여 DPL이 사용된다.

애플리케이션 프로그램에서 DPL을 사용하는 방법은 2가지가 있다.

  • EXEC CICS LINK 명령어의 SYSID 옵션에 원격 애플리케이션 서버의 CONNECTION 리소스 정의 이름을 지정한다.

  • PROGRAM 리소스 정의의 REMOTESYSTEM 항목에 원격 애플리케이션 서버의 CONNECTION 리소스 정의 이름을 지정한다. 이 경우 REMOTENAME 항목에 원격 애플리케이션 서버에서 링크될 프로그램명을 EXEC CICS LINK PROGRAM 옵션에서 지정된 프로그램명이 아닌 다른 이름으로 지정할 수 있다.

DPL은 다음과 같은 과정으로 동작한다.

  1. LINK 명령어를 처리하는 프로그램 매니저는 SYSID 옵션으로 받은 식별자가 서버 설정 파일에 지정된 SYSID와 동일한지 비교한다. 동일하다면 서버 내부에서 프로그램을 링크하고, 그렇지 않으면 CONNECTION 리소스 정의를 찾는다.

  2. 해당 CONNECTION 리소스 정의의 PROTOCOL 값이 지정되었는지 확인한다. 현재 PROTOCOL 값을 APPC로 지정하지 않는 경우만 지원한다.

  3. 다른 서버에서 요청을 처리할 수 있도록 메시지화한다.

  4. 메시지화한 데이터를 CONNECTION 리소스 정의의 NETNAME에 기술된 원격 서버의 이름에 따라 원격 서버의 미러 서비스를 요청한다. 서버의 미러 서비스 등록 방법은 OpenFrame OSC "운영자 안내서"를 참고한다.

  5. 요청을 받은 원격 서버의 미러 서비스는 메시지화된 데이터를 분석한 다음, 요청에 따라 내부적으로 DFHMIRS 프로그램을 거쳐 DPL 요청된 프로그램을 링크한다. EXEC CICS LINK 명령어의 TRANSID 옵션에 지정된 트랜잭션명 또는 PROGRAM 리소스 정의의 TRANSID 항목에 지정된 이름으로 DFHMIRS 및 링크 프로그램이 동작한다. TRANSID 옵션이 지정되지 않은 경우 CSMI라는 이름으로 트랜잭션이 동작한다.

  6. 링크된 프로그램이 RETURN될 때, COMMAREA와 함께 다시 메시지화하여 DPL 요청한 서버로 돌려준다.

  7. 요청한 서버는 메시지를 분석하여, DPL 요청한 프로그램으로 수정된 COMMAREA와 함께 컨트롤을 넘긴다.

다음은 CSMI 트랜잭션을 이용하여, OSCA라는 SYSID를 가진 애플리케이션 서버 OSC00001의 프로그램에서 OSC00002 서버에 DPL 요청을 하는 간략한 흐름이다.

figure 8 1
DPL 예제

DPL 요청을 하는 EXEC CICS LINK 명령어는 기본적으로 로컬 프로그램을 링크하는 때와 모두 동일하나, 위에서 설명한 SYSID, TRANSID 외에 SYNCONRETURN 옵션을 통하여 기능을 달리 할 수 있다.

SYSNCONRETURN 옵션은 원격 애플리케이션 서버가 지정한 프로그램을 링크한 다음, SYNCPOINT 처리를 어떻게 할 것인가를 결정내린다. 지정한 경우 미러 서비스는 요청된 프로그램을 실행한 뒤 바로 SYNCPOINT 처리를 하고 COMMAREA를 돌려주면서 종료한다.

반면 SYSNCONRETURN 옵션이 지정되지 않은 경우 미러 서비스는 요청된 프로그램 실행한 뒤에도 SYNCPOINT를 수행하지 않고 SYNCPOINT 처리 요청이 올 때까지 기다린다. DPL 요청한 애플리케이션 프로그램에서 SYNCPOINT 또는 RETURN 명령어를 수행하여 태스크가 종료하는 경우 미러 서비스도 함께 SYNCPOINT 처리하면서 종료한다. SYNCPOINT ROLLBACK 명령어를 실행하거나, ABEND 명령어를 통하여 태스크가 비정상 종료되는 경우 미러 트랜잭션은 롤백한 후 종료한다.