퀀트 관제 웹 프로그램의 보안을 고민
데이트레이딩용 시스템 트레이딩 프로그램을 만들어서 한번 구동시키면 몇개월 몇년 동안 가동될 수도 있는데
중간에 해킹으로 털려버리면 안되기 때문에 처음부터 보안을 고민해야 되네요
그리고 안정성 측면 때문에 트레이딩 엔진은 go보다는 rust로 만들어야 될 것 같네요
고빈도 매매할 것도 아니지만 그래도 1초에 몇개씩 api 요청이 필요하고 초단위의 계산을 통해 주문을 내야 되는데
이 정도는 단기적으로는 go로도 성능이 차고 넘치지만
문제는 수개월 이상 계속 가동할때 메모리 안전성이나 성능저하 문제를 생각하면 rust겠죠?
그리고 서버가 한국에 있어야 됩니다
미국 서부 산호세에 서버를 두고 해보니까 한번 오고 가는 latency가 500ms 이상 발생하기 때문에
이게 누적되면 초단위 대응에서 불리할 수가 있겠더라구요
rust 트레이딩 엔진 프로그램이야 샌드박스 형태로 내부망에서만 접근가능하도록 외부에서 접근 불가능하도록 만들어도 되겠지만
(디지털 노마드 할려고 만드는건데 외부에서 접근 안되는 프로그램이면 집/사무실에 붙어 있고 싶지는 않네요)
어쨋든 서버와 물리적으로 떨어진 곳에서 외부망(cloudflared tunnel)으로 ssh로 접근해서 프로그램을 업데이트 해야되기도 하고
또 관제 웹 프로그램으로 접근해서 프로그램 중단, 전체 포지션 청산, 매매전략 변경, 유니버스 변경 같은 중요한 명령은 내려야 되잖아요
이제까지 알아본 바로는 관제 웹 프로그램을 통해서 모니터링 뿐만 아니라 명령을 전달하려면
sveltekit으로 빌드할때 PWA 보다는 그냥 일반 웹이 더 안전하다는 것이고
(service-worker로 웹브라우저에 캐시/로컬db에 데이터를 저장하는 자체가 위험하고 백그라운드프로세서 자체가 군더더기
PWA라는 형식은 사용자의 편의를 위한 것이지 보안은 오히려 해칠 수 있다)
비공개 나만 알고 있는 웹주소로 cloudflare access zero trust JWT httponly쿠키로 관제 웹에 접근해서 모니터링 하고
중요한 명령을 내릴때는 webAuthn 이라는걸로 내 스마트폰 기기 한번 더 2차 인증을 거친 뒤에만 명령이 실행 되도록 하는 것
물론 서버에서 사용하는 canonical사의 linux인 ubuntu server의 근본적인 보안오류(데이터 탈취 구멍)가 있다면 다 소용없는 것이니 가장 좋은건 서비스 수준 협약(SLA)이 있는 기업용 os(redhat linux 같은것?)를 구매하는 것이겠지요
사실 트레이딩 엔진에서 핵심은 정말 단순한 비지니스 로직으로서 몇십줄 혹은 몇백줄에 불과할 겁니다
그 밖의 것들(보안, 관제 웹, 통신, 데이터 수집과 저장, 백업, 로깅..)이 골치 아플뿐
단일 매매전략이 아니라 앞으로 여러개의 매매전략을 쉽게 추가하고 사용자 선택 혹은 자동 선택할 수 있도록 구조로 만들려면 또 고민할게 많아지는 것이고요
(바이브코딩으로 프로그램을 만들때 90%는 이러한 그 밖의 것들에 대한 세팅?인거죠. 진짜 중요한 비지니스 로직은 세팅이 완료되면 진짜 몇십분 몇시간이면 다됩니다. 그래서 아이디어가 번뜩이는 사람이 바이브코딩으로 뭔가를 만들어 보려고 하더라도 세팅 그러니까 건축으로 말하자면 설계, 조달, 스캐폴딩 여기서 다 막히는겁니다)
프로그램으로 구현하는거야 어쨋건 엉덩이 붙이고 포기하지만 않으면 결국은 되겠지만
돈이 될지 안될지는 모르겠지만 어쨋든 최고의 장난감이긴 하겠죠