-
Notifications
You must be signed in to change notification settings - Fork 1
실시간 자산 조회 기능 개발 과정
사용자의 주식 자산은 보유 종목의 현재가에 따라 달라지기 때문에, 해당 부분을 실시간으로 구현할 때 고민이 있었습니다.
처음에 해당 기능에 대해 구상해볼 때에는 현재 보유하고 있는 종목의 가격이 변화할 때마다 업데이트 해주는 방식으로 구현해야 하나 생각했었습니다. 그러나, 해당 방식으로 구현하게 되면 DB에 접근하는 빈도가 너무 잦아질 것으로 예상되었습니다.
한국 투자 증권 웹소켓에 대한 테스트를 해 본 결과 한 종목 당 주가가 1초에 2번 씩은 변화하는 것 같아 보였는데, 사용자가 한 명이라고 해도 한 사용자가 20개의 종목을 사 두면 자산은 1초에 40번이나 바뀌어야 하는 문제가 생겼습니다.
그래서 다음으로는 스케줄러를 통해 1분마다 현재 가격을 조회해 자산 DB를 업데이트하는 방식으로 구현하고, 마이페이지를 조회했을 때는 스케줄러를 통해 마지막으로 업데이트된 자산 결과를 보여주는 것으로 구현했습니다.
그러나, 이 방식에도 문제가 있었습니다. 만약 한 종목을 구매하고 1분이 지나지 않은 상태로 마이페이지에 접근하게 되면, 구매가 반영되지 않은 결과를 조회하기 때문에 정확한 자산을 확인할 수 없었습니다. 마이페이지에 접근할 때는 해당 시점의 정확한 자산을 보여주어야 할 것 같았습니다.
그래서, 마이페이지 API를 조회하는 시점에서 보유 종목의 현재가를 반영해 DB를 업데이트해주고 업데이트된 결과를 반환하도록 다시 구현을 진행했습니다. 이런 방식으로 구현을 진행하니 1분마다 스케줄러로 DB를 업데이트할 필요도 없을 것 같다는 생각이 들어 업데이트 주기도 10분으로 늘려주었습니다. 스케줄러로 업데이트된 자산 데이터는 랭킹 기능에서 활용될 예정입니다.
- [FE] 프론트엔드 기술스택
- [FE] 라이브러리 없이 차트 구현 이유
- [FE] Canvas API 사용방법
- [FE] 네비게이션 바 애니메이션 구현
- [FE] Socket.io 사용방법
- [FE] Tanstack Router에 대하여...
- [FE] Intl(Internationalization) API
- [FE] React Suspense 적용
- [FE] 한글 입력 방식의 유연성을 높인 검색 시스템 구현하기
- [BE] 백엔드 기술 스택
- [BE] SSE vs Socket.io
- [BE] Redis를 도입하게 된 계기
- [BE] ACG Rule을 활용한 Secure CI CD 파이프라인 구현
- [BE] Nginx 로드밸런싱을 통해 한국 투자 API 소켓 제한 극복
- [BE] 주가 지수 기능 개발 과정
- [BE] 매수 및 매도 기능 개발 과정
- [BE] 실시간 자산 조회 기능 개발 과정
- [BE] 단위 테스트
- [BE] redis를 이용한 한국투자 Open API 세션 관리
- [BE] 데이터베이스 인덱싱
- [FE] React에서의 DOM 요소 접근 (useRef vs getElementById)
- [FE] Outlet을 활용한 공통 레이아웃 관리
- [FE] react hooks가 특정 조건에서 실행되면 안되는 이유 & useQuery에 query function 매개변수가 undefined일 수도 있을 때 어떻게 해결할까
- [FE] cross‐domain 로컬 환경에서 cookie로 인증 처리하기 with vite proxy
- [FE] 크롬&사파리 Composition 차이
- [FE] useEffect 의존성 배열
- [BE] Naver Cloud Platform HTTPS 무응답 현상
- [BE] 한국투자 Open API에서 access token을 발급받지 못하는 문제
- [BE] 한국투자 Open API와 웹소켓 연결이 되지 않던 문제
- [BE] 한국투자 Open API 웹소켓 연결이 중단되는 문제
- [BE] 같은 주식 주문이 동시에 여러 번 체결되는 문제
- [BE] 한국투자 Open API Websocket 세션을 두 개에서 한 개로 변경하기
- [BE] Nginx 로드 밸런싱 중 Socket bad Request 발생하는 현상
- [BE] 매수/매도 체결 로직에 의해 redis pub/sub이 정상적으로 동작하지 않는 문제