: 외환은행 환율수신시스템 구축
 
개발 기간
      ● 2006. 11 ~ 2007. 4
개발 목적
     환율 수신 서버 프로그램 개선
     - 기존 시스템을 신규 시스템으로 대체
주요 기능 (프로세스)
로이터시스템과 업무서버간 데이터 통신을 담당하는 G/W 서버 : 로이터시스템과 로이터사에서 제공
   하는 API 모듈에 의해서 정해진 형식으로 로이터시스템앞 자료를 요청하고 응답받음.
로이터 시스템 : 세계시장의 금융시장정보를 제공하는 서비스로 대표적으로 환율, 선물옵션등의 시장
   정보를 실시간으로 제공함.
RMDS : Reuters Market Data System 으로 환율수신 System
RDF : 로이터 전용선을 통해서 정보를 받는 최상위 서버
MDH : SOURCE 서버로 SINK Distributer 잎으로 Data(환율수신서버)를 제공
SINK Distributer : MDH 에서 Data 를 받는 역할을 한다.
P2PS : 딜링 단말 또는 ssl lib 을 이용한 APP 에서 접속해서 DATA 를 수신하기 위한 서버
R_Recv (로이터 수신) : Reuter 에서 ssl 라이브러리를 이용해서 데이터를 수신 후 File 로 저장하는
   프로세스
R_SendRecv (로이터 RIC 별 환율 수신) : req 에서 Queue 를 이용 데이터를 받고 Reuter 에서 ssl
   라이브러리를 이용해서 데이터 수신 후 req 에 데이터 전달, 저장하는 프로세스
IEmem (외국환 공유메모리) : 일자.dat 파일을 읽어서 DB 에서 공유메모리로 저장하는 프로세스
IEreq (외국환 요청전문 처리) : 수신 된 전문으로 공유메모리에서 필요한 데이터를 전문으로 조립하여
   송신하는 프로세스
FCmem (외화자금 공유메모리) : 일자.dat 파일을 읽어서 DB 에서 공유메모리로 저장하는 프로세스
FCreq (외화자금 요청전문 처리) : 수신 된 전문으로 공유메모리에서 필요한 데이터를 전문으로 조립
   하여 송신하는 프로세스
Fcreal (실시간 환율 전문 to DB): 일자.dat를 읽어서 실시간 전문 to DB 를 만드는 외화자금 프로세스
Fcappraise (시간대 별 전문 to DB) : 평가용환율을 공유 메모리에서 읽어서 외화자금에 전문 to DB로
   송신하는 프로세스
Fxmon (모니터링) :프로세스 상태를 모니터링 하는 프로세스 (오류확인)
 
프로세스구성도
  
장점 및 특징
  ▶ 통신 프로세스와 SSL Interface 프로세스 분리
  ◎ EAI 등과의 프로세스와 RIC 처리 프로세스를 분리
 기존 프로세서는 Publisher, Requester 두개의 프로세서로 이루어졌으나 신규 프로세서는 Publisher 를 R_Recv, FCmem, IEmem 으로, Requester 를 R_SendRecv, FCreq, IEreq 로 변경하였고, FCreal, FCappraise 를 신규로 추가 하였다. 이 중 FCreq, IEreq 가 TCP/IP Socket 을 이용하여 EAI 채널과 통신한다. 업무별로 각각 프로세스를 분리하여 고효율의 프로세스 구조를 가지도록 하였다.

  ◎ 통신 방식 변경시 통신 프로세스만 변경
 프로세스 간의 역할을 세분화하여 통신 방식이 변경되더라도 특정 프로세스(FCreq, IEreq) 만 변경을 하면 가능 하도록 하여서 전체 프로세스의 업무에 영향을 받지 않는다. 기존의 프로세스 구조 보다 훨씬 적은 부분만 변경하면 될 수 있도록 하였다.

  ◎ 프로세스간 자료교환은 UNIX IPC Tool 을 이용

 프로세스 간에는 Shared Memory 를 이용하여 데이터를 공유하였고, 세마포어 락을 이용하여 오류를 회피하였다. 프로세스간의 통신 처리는 각 프로세스 별로 독립적으로 Message Queue를 송수신하여 통신을 할 수 있도록 하였다.
  병렬 RIC 처리
   ◎ 800 개 RIC 기준 현재 처리시간 4 시간 -> 120 초 이내로 단축
 (개발 이전 요건은 30 분 이내였으나 개발과정에서 개선)
RIC Field 를 메시지 큐를 이용하여 R_Send_Recv 프로세스에서 RIC Open 하여 로이터에서 직접 읽고 Message Queue 를 이용하도록 하였다. (대용량 데이터 전송 가능)
  처리 프로그램 개선
  ◎ Reuter Library (SSL) 의 사용법 준수
 Reuter 에서 제공하는 API 를 사용하여 프로그램을 개발하여 SSL 사용법을 준수 하였다. 개발 완료 후에 발생하는 유지 보수에 혼란을 방지 하였다.

  ◎ 재컴파일 없는 로그 레벨 변경

동적 로그 레벨 변경을 도입하여 모니터링 프로그램(관리자용) 기타 정보 조회 및 관리 탭에서 실시간으로 로그 레벨을 설정 할 수 있도록 하였다. (로그 레벨 단계는 0 ~ 4 까지 단계로 하였음)

  ◎ 프로세스 별 처리상황을 IPC 를 이용하여 통합 모니터링

 주요 프로세스 모니터링을 하는 별도의 프로세스(FXmon) 를 이용하였다. FXmon 프로세서는 외환은행 환율 서버 모니터링 프로그램 과 내부 전문을 이용하여 통신하도록 하였다.

  ◎ 불필요한 Mutex 처리 배제 - 처리시간 단축, 교착 증상 해소

 세마포어를 이용한 프로세스 처리를 통하여 Shared Memory 사용중에 발생 할 수 있는 오류를 회피 하였고, fork() 함수를 이용한 멀티 프로세스 기술을 적용하여 처리시간을 단축 하였다.