주가정보 취득부터 분석, 리스크 관리, 주문실행 및 결과보고에 이르는 일련의 과정을 동시성 향상 측면에서 프로세스별로 나누어 설계중인데, ZeroMQ를 활용하여 각 모듈의 통신과정을 구현하고 있습니다.

Fetcher : 실시간 주가정보를 비동기 방식으로 가져와 50001 포트에 Publish하며, 이와 동시에 실시간 주가정보는 메모리에 위치한 데이터베이스에 저장해 향후 backtest시 활용
Monitor : 50001 포트를 Subscribe 하여 새로 입수된 주가정보는 메모리의 배열에 추가하고 거래할 타이밍인지 분석 만약 매수/매도할 조건에 부합될 경우, 다음 단계인 Risk Manager 포트인 50002로 Publish한다.  Monitor 단계는 CPU 연상량이 가장 많고, 자칫 분석의 즉시성을 잃어버릴 수 있을 만큼 오래걸릴 수 있다. 따라서 가용한 하드웨어 자원을 최대한 활용하기 위해 4코어 CPU일 경우 3개의 Monitor 프로세스를 띄운다. 각 프로세스간에 담당할 종목은 프로세스가 알아서 분배하고, 프로세스별로 메모리에 저장하고 있는 정보를 최대한 활용하기 위해서 각 프로세스는 맡은 종목들만 분석한다.
Risk Manager : 50002 포트로 들어온 내용을 토대로 진입/청산여부를 최종 검토하고, 보유자산(현금 및 주식)을 고려한 거래수량을 Broker 포트(50003)로 Publish
Broker : 증권사에 송신할 주문을 증권사 API를 통해 처리하고, 체결결과 및 체결오차 등 결과를
Reporter 포트 (50004)로 Publish
Reporter : 거래결과를 분석하고 결과를 데이터베이스에 저장

Monitor 모듈