2024.11.11 - [Programming/Project] - [Spring Boot] 모의 투자 사이트 개발기 (1)
2024.11.18 - [Programming/Project] - [Spring Boot] 모의 투자 사이트 개발기 (2)
1. 개요
이전에 가장 먼저 목표로 잡은 것이 클라이언트단에서 bybit 가 아닌 서버에서 데이터를 처리할 수 있도록 변경하는 것이다. 그리고 WebSocket 의 양방향 통신을 이용해서 주문 접수도 WebSocket 을 사용하고자 한다.
2. 시세 데이터 가공 및 처리
Bybit 로부터 WebSocket 으로 시세 데이터 하나만 가져오고 서버 내부적으로 데이터를 가공해 캔들 형태의 실시간 데이터와 과거 데이터를 API 로 제공한다.
2024.11.22 - [Programming/Spring] - [Spring Boot][WebSocket] 실시간 시세 데이터 처리 및 관리하기
[Spring Boot][WebSocket] 실시간 시세 데이터 처리 및 관리하기
1. 개요모의 투자 서비스를 개발하면서 시세 데이터만 1초에 4~5개가 들어오곤 한다. 결국 프론트엔드의 모든 API 엔드포인트를 로컬 서버로 옮겨오기 위해서는 실시간 데이터를 가공해서 분봉 데
happyzodiac.tistory.com
차트를 보면 11시, 15시, 데이터가 다 끊겨있는 것을 확인할 수 있다. 실제로 저 시간에 서버를 틀어놓았기에 실시간 데이터가 저장이 되었고 나머지 시간은 데이터가 없기에 저렇게 보이는 것이다. 무엇보다 실제 서버가 데이터를 가공하고 저장해서 제공한다는 것을 명실히 보여주는 차트이다.
개발자 도구를 열어보더라도 실제 localhost 를 통하는 API 만 있는 것을 직접 확인할 수 있다.
캔들을 나타내는 실시간 데이터도 확인할 수 있는데, 실제 토스 증권처럼 STOMP 를 사용해서 데이터를 주고받고 있다.
우선 가장 기본적인 목표는 달성한 셈이다.
3. WebSocket 을 사용한 주문 접수
WebSocket 의 양방향 통신을 적극 활용하기 위해 매수, 매도 주문도 연결되어있는 WebSocket 을 활용하였다. 이때 JWT 인증 정보도 웹소켓 헤더에 담아 인증 처리 과정을 거쳐 진행하였다.
2024.11.26 - [Programming/Spring] - [Spring Boot][WebSocket + STOMP] 웹소켓 JWT 인증 및 파싱
[Spring Boot][WebSocket + STOMP] 웹소켓 JWT 인증 및 파싱
1. 개요모의 투자 사이트를 개발하면서 토스 증권을 참고해보았을 때 실제 주문도 STOMP 를 통해서 진행되는 것을 확인할 수 있었다. WebSocket 이라는 것 자체가 양방향 통신이 가능한 프로토콜이
happyzodiac.tistory.com
내부 로직은 이미 동시성 제어를 통해 검증이 되어있기에 헤더의 JWT 를 파싱하는 과정만 추가했다.
[Spring Boot] 동시성 제어 with 비관적 락, Redis 그리고 @Transactional 사용 시 동시성 문제점
1. 개요현재 개발 중인 것은 모의 주식 사이트로 매수, 매도 주문이 발생한다. 당연히 이러한 주문은 동시성 제어가 되어야하며 여러 방법들을 사용해보면서 성능과 함께 비교해보겠다. /** *
happyzodiac.tistory.com
동시성 제어를 진행하면서 @Transcational 과 락 스코프에 대한 글을 작성했다.
STOMP 테스트기에 헤더값을 따로 추가할 수 있는 기능도 추가해야겠다.
4. 이후
기존에 목표로 세웠던 일반 기능들은 대체로 해결된 것 같다.
호가창같은 경우에는 서버에서 영향을 줄 수 없기 때문에 bybit 의 데이터를 그대로 가져오는 것이 전부이다. 그렇기 때문에 서버 내부적 호가창을 따로 생성하고자 한다. 서버 주문을 기반으로 호가창을 새로 생성해놓고, 해당 가격이 된다면 모든 주문이 처리되도록 할 예정이다.
'Programming > Project' 카테고리의 다른 글
[Spring Boot] 모의 투자 사이트 개발기 (2) (0) | 2024.11.18 |
---|---|
[Spring Boot] 모의 투자 사이트 개발기 (1) (3) | 2024.11.11 |