저번 주식거래프로그램을 반성하며
돈이 오가는 프로그램이니 더 철저하게 한답시고
주식 주문/체결 데이터를 여러 겹의 저장소에 넣고 비교해서 주문을 처리하도록 했습니다.
1) 한국투자증권 openAPI 로 호출하는 HTS 데이터베이스
2) go 로 빌드된 트레이딩 머신 프로그램의 캐시
3) 텔레그램 봇의 메세지들
4) 오라클 클라우드 sql db 의 두개의 테이블
그러다보니 4개의 저장소에 처리/저장/업데이트 하고 각각 네트웍/처리 시차 때문에 계산할때 오류가 많이 생겼고 KRX/NXT 거래시간 문제와 더불이 이 문제 때문에 개발시간의 절반 이상이 소모됐습니다. 더 잘해 보려다가 무의미한 곳에서 시간과 에너지만 낭비한 셈
이번에는 주문/체결은 HTS 데이터베이스의 데이터만을 기준으로 할 것이고
보조적으로 redis cache 에서 flag(현재상태: 주식매도주문, 매도체결완료…)만 이용할 것이고
redis streams 에서 API 호출을 queue로 관리해서 호출 후 처리시간, 호출 후 성공/실패율, 재호출만 이용할 겁니다
postgresql에는 종료된 거래기록와 문제가 있었던 API호출기록만 저장해서 거래와 기록을 분리시킬 겁니다
prometheus 로 node exporter 의 시스템 감시 + rust 트레이딩 엔진의 redis streams 의 API호출 감시를 추적해서
cli 명령어 및 이메일 보고서에서 report로서 체결내역, 거래성과, 자산현황, 프로그램상태, 시스템상태, API호출상태를 확인할 수 있도록 할겁니다
sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN 172.30.1.0/24
서버에서는 http https 웹으로의 접근은 다 막아놨고
유일하게 들어올 수 있는 방법은 cloudflared tunnel 을 통해 특정 도메인에 한해서 ssh, https api 가 가능하지만
이번 프로그램에서는 외부망에서의 웹접근을 아예 허용하지 않을 것이고
ssh로 접속했을때 내부망에서의 웹서빙도 안할겁니다
저번에는 텔레그램에서 report조회와 명령을 내리도록 하다보니까 복잡해졌던건데
이번에는 웹 대시보드&SSE, 텔레그램 등 다 없애고
그냥 linux shell에서 cli 명령어로만 report를 조회하고 명령을 내릴 수 있도록 할 겁니다
이번에는 보안과 경제성을 최우선으로
리서치 및 기획과 스캐폴딩은 대강 끝낸 것 같은데 먼지나는 현장으로 또 들어가야 되나