ZeroAOS 2.0! ZeroM 대신 ZeroBUS

1.
잠시 다녔던 회사를 나와서 새로 사업을 시작한지는 3년이 넘어갑니다. 사업이라고 하지만 제가 하는 역할을 기업가라 할 수 없습니다. 정확히 말하면 비지니스 개발자(Business Developer)입니다. 시장성이 있는 사업을 기획하여 사업을 시작하기 위해서 필요한 인적, 물적 자원을 확보하고 파트너관계를 세운 다음 고객사를 확보하는 일입니다. ZeroAOS는 제가 하는 일중 하나이지만 가장 많은 시간을 들였던 사업입니다. ZeroAOS를 본격적으로 시작한지 1년이 되어 갑니다. 짧은 1년이지만 너무나 많은 우여곡절이 있었습니다.

그동안 ZeroAO는 크게 세 명의 소프트웨어 파트너와 함께 했습니다. 클라이언트부문, 서버부문 및 미들웨어와 FEP인터페이스부문입니다. 모든 부분이 중요하지만 가장 중요한 부문은 역시 미들웨어입니다. 처음 사업을 구상할 때부터 채택하였던 미들웨어입니다. ZeroM입니다. ZeroAOS는 ZeroM을 이용하여 각 업무프로세스간의 통합을 합니다. 클라이언트와 서버사이는 소켓통신을 하고 서버내부는 IPC를 합니다. 매우 중요한 부문이었습니다. 그렇지만 중국사업 파트너를 구합니다에서 잠시 적었던 것처럼 비즈니스적 이유와 기술적인 이슈가 맞물려 2013년 12월 ZeroM을 버린 상태입니다.

새로운 미들웨어의 요건을 정의하고 조사하는 일을 12월에 진행하였습니다. 이 때 멀티유저를 위한 자동매매시스템인 ZeroAOS의 특성을 고려하여 세웠던 요건은 다음과 같습니다.

첫째 Kernelspace가 아니라 Userspace에서 동작한다(userspace mutex)
둘째 Lock Free Algorithm을 적용하도록 한다
셋째 멀티프로세스를 우선으로 하고 멀티쓰레드통신도 고려한다.

아주 일반적인 내용입니다만 나름 중요한 기준입니다.

2.
ZeroM을 대체하는 미들웨어는 넥스트웨어 때 개발하였던 HiperT의 경험을 토대로 하여 IPC와 관련한 기능을 대폭 추가한 방식으로 진행하였습니다. 왜냐하면 서버를 담당하는 파트너가 넥스트웨어 때 HiperT와 HiperOMS를 담당하였던 분이기때문입니다. ZeroM을 대체하는 미들웨어의 코드명은 ZeroBUS입니다. 담당 파트너가 부여한 이름입니다. (^^) ZeroBUS의 역할은 ZeroM이 맡았던 역할을 100% 대체합니다. 즉 Request-Reply방식, Publish-Subscribe방식, Broadcasting방식의 통신을 담당하고 당연히 서버 프로세스와 프로세스 및 서버 쓰레드와 쓰레드간의 통신 그리고 윈도우의 클라이언트 프로세스와의 통신도 담당합니다.

ZeroBUS를 채용한 ZeroAOS 2.0은 기술적으로 다음과 같은 특징을 가집니다.

첫째 프로세스간의 통합을 단일한 구조(ZeroBUS)로 재조정하여 ZeroM을 사용하였을 때에 비하여 불필요한 업무 부하(Overhead)를 대폭 줄였습니다. 즉, Zerofeeder와 ZeroOMS사이의 시세 처리, ZeroOMS-ZeroBOG사이의 주문체결 처리의 특성을 고려하여 ZeroBUS를 구축하였기때문입니다. ZeroM이 범용적인 미들웨어라고 하면 ZeroBUS는 ZeroAOS에 최적화한 미들웨어라고 할 수 있습니다.

둘째 리눅스 커널환경, ZeroM의 시스템적인 제한 등으로 ZeroAOS를 운영할 때 동시사용자의 제한이 있었지만 Libzeroipc의 설계로 이런 제한을 없앴습니다. 그동안 ZeroM가 처리할 수 있는 Topic 숫자로 하나의 서버에서 사용할 수 있는 ZeroAOS의 동시이용자는 70명이었습니다. 그렇지만 ZeroBUS의 통신방식을 변경하여 이런 제한을 극복하였습니다.

셋째 시세데이타를 기준으로 하여 측정한 IPC성능이 이전보다 좋은 숫자를 보여주고 있습니다. ZeroAOS의 시세분배구조는 ZeroFeeder가 받아서 시세를 요청한 복수의 ZeroOMS 프로세스에 전달해주는 방식입니다. 만약 ZeroFeeder와 ZeroOMS가 1:1관계이면 지연요소가 없지만 1:N일 경우 – 다수의 이용자가 ZeroOMS를 사용할 경우 – 지연이 발생합니다. 이를 최소화하는 것이 무척이나 중요하기때문에 많은 고민을 한 부분입니다.

3.
ZeroAOS 2.0을 시작할 준비를 하고 있습니다. 1.0에 비하여 좀더 좋은 성능과 서비스를 목표로 합니다. 이를 위하여 1.0과 달리 서비스를 하려고 합니다.

첫째 BS투자증권을 통하여 서비스를 제공하던 것을 BS투자증권 외에 또다른 증권사를 통하여 서비스를 제공하려고 합니다. 현재 몇 곳에 제안을 해놓고 결과를 기다리고 있습니다.

둘째 ZeroAOS의 사용료를 정액제에 더하여 정률제도 도입하려고 합니다. 정률제는 거래량에 비례하는 요금제입니다.

셋째 ZeroAOS를 위한 전략 및 화면 개발은 이용자의 몫이었습니다. 앞으로 일정한 조건이 맞을 경우 전략 및 화면 개발을 이음이 담당하려고 합니다. 그동안 ZeroAOS라는 환경이 익숙하지 않아 가졌던 불편함을 조금이라도 줄이려고 합니다.

넷째 ZeroAOS를 특화 혹은 개인HTS로 사용하고자 하는 고객일 경우 관련한 프로그램개발을 수행합니다. 물론 무상은 아닙니다.

다섯째 ZeroAOS API를 이용한 이용자교육을 월 1회정도 실시할 계획입니다.

4.
아주오래 전 넥스트웨어를 할 때 이런 생각을 했습니다.

“완성된 소프트웨어가 아니라 계속 발전하는 소프트웨어를 만들고 싶다.”

지금도 비슷한 생각입니다.

“완성된 서비스가 아니라 계속 발전하는 서비스를 만들고 싶다.”
“Done is better than perfect”

이용자의 만족도가 높아지는 ZeroAOS이도록 노력하겠습니다.

Leave a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.