SEONGGUK.SYS
◀ ITEM BOX

StockPulse

DATA

국내외 시황과 모의투자를 한 화면에 모은 대시보드

기간
2026.07 ~ 2026.09
역할
프론트 · 백엔드 프록시 단독
사용 기술
React 18 · D3 · SSE · Zustand · Node 프록시

개요

지수·히트맵·뉴스 감성·실시간 체결과 호가·순위·KIS 모의계좌를 한 화면에 모은 시황 대시보드입니다. 국내 부동산 실거래와 3D 단지 배치도도 함께 제공합니다.

UI 구성과 함께 외부 API의 호출 제한·부분 실패·데이터 부재를 일관되게 처리하는 데 중점을 뒀습니다.

문제와 해결

  1. 01

    호출 한도 안에서 요청 직렬화

    KIS 모의계좌는 초당 상한이 낮아, 라우트가 각자 요청을 던지면 서로를 밀어냅니다. 실측으로 서로 다른 종목을 연속 조회할 때 10건 중 6건, 실패율 60%였습니다.

    모든 호출을 kisFetch로 모으고 전역 직렬 큐에 적응형 간격을 적용했습니다. 5xx나 429가 발생하면 간격을 1.6배 늘리고, 성공하면 15ms씩 줄입니다(200~1600ms). 같은 조건에서 다시 측정한 12건은 모두 성공했습니다.

    주문 요청은 자동으로 재시도하지 않습니다. 같은 주문이 중복 전송되지 않도록 조회와 주문의 실패 처리 방식을 분리했습니다.

  2. 02

    대체 데이터의 명확한 구분

    실패 경로에서 목 데이터를 반환하면 화면은 정상처럼 보이지만 사용자는 실제 값과 대체 값을 구분할 수 없습니다.

    실데이터가 없으면 unavailable 상태와 -를 표시하고, 실패한 응답과 빈 성공 응답은 캐시에 저장하지 않도록 했습니다.

  3. 03

    초기 화면 번들 분리

    분석과 부동산 화면까지 한 번에 내려받아 첫 진입 번들이 632KB까지 커졌습니다.

    탭별 코드를 지연 로딩하고 공통 모듈 경계를 정리해 초기 번들을 356KB로 줄였습니다.

주요 구현

회고

실시간 데이터 화면에서는 많은 값을 보여주는 것보다 데이터의 출처와 최신성, 실패 상태를 사용자가 구분할 수 있게 만드는 일이 먼저였습니다.

화면

◀ ITEM BOX