こんな感じの構成で、リアルタイムトレードへ対応させる変更を今後行っていく。
stock-trading-system
は time_and_sales_deliver
の存在を知っているが、 fake-kabus-websocket-server
の存在は知らない。
fake-kabus-websocket-server
fake-kabus-websocket-server
は、フェイクのWebSocketサーバである。
これは市場が開いているときにWebSocketのメッセージをデータベースへ記録しておき、後日に実際にこのサービス自身がWebSocketのメッセージを送信できる仕組みになっている。
例えて言うと、カセットでラジオの放送を録音しておいて、それを再生するようなイメージである。
time_and_sales_deliver
歩み値の受信・再配信は、全て time_and_sales_deliver
が担当する。これは、歩み値がWebSocketで配信されるためである。このサービスは、WebSocketを扱う上での面倒を一気に引き受けてくれる存在である。(これは筆者がPythonでWebSocketを扱いに慣れておらず、回避したいことも関係している)
time_and_sales_deliver
は開発時はリクエストの向き先をfake-kabus-websocket-server
にすることで、土日祝日や閉場後でも実際にWebSocketのメッセージを使う開発を可能にしている。
一方、本番では向き先を kabu STATION APIへ向けることで、実際にリアルタイムで配信されるWebSocketのメッセージをstock-trading-system
が扱いやすい形式に変換する。
stock-trading-system
注文発注やその判断は stock-trading-system
の仕事としている。判断の材料として、歩み値をtime_and_sales_deliver
から取得しながら行う。