하루 약 9천만 건의 시장 이벤트를 Kafka 기반으로 처리하고, AI 분석과 실시간 커스텀 차트로 연결한 투자 정보 플랫폼
- 01탐색
시장과 종목 후보를 찾고
- 02분석
차트와 선정 근거를 확인하고
- 03주문
호가와 주문으로 연결하고
- 04복기
진입 전후 판단을 비교합니다.
프로젝트 요약
담당 역할 및 기여
- 5인 팀의 풀스택 개발자로 데이터 흐름과 사용자 화면을 함께 구현
- 커스텀 차트 엔진, REST·WebSocket 데이터 병합, 실시간 처리 구조 개발
핵심 구현
- 평균 초당 약 1,080건의 틱 이벤트를 가공해 차트와 분석 서비스에 전달
- 과거 데이터는 REST, 최신 이벤트는 WebSocket으로 연결하고 거래 당시의 판단을 AI로 복기
아키텍처
프론트엔드와 API 서버, 시장 데이터 처리 서비스, AI 에이전트, 저장소를 연결한 전체 서비스 구성입니다.

대량의 실시간 데이터를 위한 커스텀 주식 차트 구현
범용 라이브러리의 시각화 방식에서 벗어나, 여러 차트의 조합과 AI 분석 결과를 서비스에 필요한 형태로 확장할 수 있는 맞춤형 차트 엔진을 구현했습니다. 데이터 조회·병합부터 좌표 계산, 캔들·거래량·분석선 렌더링까지 TypeScript로 직접 연결했습니다.

전체 데이터를 브라우저에 적재하지 않고 보이는 구간만 가져온 뒤 실시간 이벤트를 이어 붙였습니다. 데이터의 연결과 화면의 갱신을 나눠, 과거 차트를 탐색하면서도 최신 변화를 함께 확인할 수 있도록 했습니다.
과거 조회와 최신 변화의 연결
과거 구간은 REST로 조회하고 최신 변화는 WebSocket으로 반영합니다. 필요한 범위만 추가로 요청하고, 같은 시점의 데이터는 병합해 탐색 중인 화면을 유지합니다.
REST·WebSocket 연결 자세히 보기변경된 레이어만 다시 그리기
캔들·분석선과 크로스헤어를 두 개의 Canvas로 나눴습니다. 포인터 이동은 Overlay만 갱신하고, 연속된 입력은 프레임 단위로 묶어 불필요한 그리기를 줄였습니다.
2-Layer Canvas 자세히 보기거래 결과가 아니라 판단 과정을 복기하는 AI 투자 코치
거래 당시의 기록과 유사 사례를 근거로 AI가 놓친 조건을 설명하고, 다음 투자에서 확인할 기준을 제안하도록 했습니다.

주문·체결 기록과 당시 차트, 확인한 정보들을 연결해 결과뿐 아니라 판단 과정에서 빠진 조건을 확인합니다. 비교·평가 수치는 코드로 계산하고, AI는 근거가 확인된 결과를 피드백으로 설명하도록 역할을 나눴습니다.
복기에서 발견한 개선점을 다음 거래의 확인 기준과 알림으로 연결했습니다.
초당 평균 1,080건의 시장 데이터를 처리하는 실시간 파이프라인

시장 이벤트가 여러 기능으로 전달되는 과정에서 한 경로의 지연이 다른 기능의 진행을 막지 않도록 Kafka 기반 EDA를 적용했습니다. 기능별 Consumer Group이 독립적으로 처리하며, 가공·저장 작업은 처리와 출력이 완료된 뒤 Offset을 커밋해 실패 시 재처리하도록 했습니다.
Consumer Group마다 독립된 진행 위치를 관리
커밋된 Offset 이후부터 다시 읽어 처리
최근 이벤트 ID를 추적해 같은 이벤트를 구분
실시간 상태는 Redis, 틱·과거 조회 데이터는 ClickHouse, 마감 봉과 이벤트 기록은 S3로 나눠 저장했습니다.
실제 서비스의 데이터 전달 경로
백엔드와 협업한 경계
제공 범위
과거 구간 REST 응답 · 최신 WebSocket 이벤트 · 연결 상태
연결 범위
필요한 범위 조회 · 시점별 병합 · 종목과 주기 변경
사용자에게 보이는 범위
조회 범위 · 실시간 변화 · 분석 결과와 선정 근거
