こんな感じの構成で、リアルタイムトレードへ対応させる変更を今後行っていく。

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 から取得しながら行う。