전지웅

← 전체 프로젝트
MAU 52,470명

가상 주식 시뮬레이션

2026.04.25 — 2026.07.01 · 개인 프로젝트 · 설계·구현·배포·운영

시연 영상 촬영 예정 — 매매·랭킹 화면과 Grafana 지표 화면이 이 자리에 들어갑니다
월 API 요청
4,500만 건+
API p95
약 23ms
5xx 오류율
0.0011%

프로젝트 소개

실시간 시세로 모의 매매를 하는 서비스를 혼자 설계·구현·배포·운영했습니다. 조회는 캐시로, 거래는 락으로, 배치는 실행 토큰으로 나눠 처리하고 운영 지표로 확인했습니다.

사용 기술

  • Java 17
  • Spring Boot
  • MySQL
  • Redis
  • Nginx
  • Prometheus
  • Grafana

링크

GitHub ↗과거 배포 주소 virtual-stock.xyz · 2026.07 운영 종료

문제 해결

요청의 대부분이 시세·랭킹 조회였습니다. 전부 캐싱하면 잔고와 보유 수량이 실제와 달라질 수 있어 갱신이 잦고 정합성 요구가 낮은 조회만 Redis로 옮기고, 거래는 데이터베이스에 남겼습니다.

같은 계정에서 주문이 동시에 들어오면 잔고와 보유 수량이 어긋납니다. 충돌 자체는 드물어 전체를 잠그는 비관적 락 대신 낙관적 락으로 충돌만 감지해 재시도하게 했고, 계정·종목 복합 키로 중복 보유 레코드를 막았습니다.

외부 시세 API를 한 번에 호출하던 스케줄러가 다음 주기까지 끝나지 않았습니다. 종목을 청크로 나눠 호출하고, 인스턴스가 겹쳐도 같은 배치가 두 번 돌지 않도록 Redis에 TTL을 둔 실행 토큰을 사용했습니다.

운영 기간 동안 연동 계정 21,975개, 지원 종목 3,500종 이상, 누적 거래 135만 건 이상을 처리했습니다.

2026년 7월 서비스 운영을 종료했습니다. 저장소와 관측 지표는 남아 있습니다.