본문으로 이동

실시간 투자 정보 플랫폼

하루 약 9천만 건의 시장 이벤트를 Kafka 기반으로 처리하고, AI 분석과 실시간 커스텀 차트로 연결한 투자 정보 플랫폼

  1. 01탐색

    시장과 종목 후보를 찾고

  2. 02분석

    차트와 선정 근거를 확인하고

  3. 03주문

    호가와 주문으로 연결하고

  4. 04복기

    진입 전후 판단을 비교합니다.

실시간 투자 정보 플랫폼 시연 영상 보기
팀원
5인
기간
2026.03 — 2026.07
담당
풀스택

프로젝트 요약

담당 역할 및 기여

  • 5인 팀의 풀스택 개발자로 데이터 흐름과 사용자 화면을 함께 구현
  • 커스텀 차트 엔진, REST·WebSocket 데이터 병합, 실시간 처리 구조 개발

핵심 구현

  • 평균 초당 약 1,080건의 틱 이벤트를 가공해 차트와 분석 서비스에 전달
  • 과거 데이터는 REST, 최신 이벤트는 WebSocket으로 연결하고 거래 당시의 판단을 AI로 복기

아키텍처

프론트엔드와 API 서버, 시장 데이터 처리 서비스, AI 에이전트, 저장소를 연결한 전체 서비스 구성입니다.

AWS Cloud의 VPC와 가용 영역, 프론트엔드·API 서버·시장 데이터 처리·AI 에이전트 및 저장소를 연결한 전체 서비스 아키텍처
AWS 기반 전체 서비스 아키텍처 · 클릭하면 원본 크기로 볼 수 있습니다.

대량의 실시간 데이터를 위한 커스텀 주식 차트 구현

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

여러 종목의 캔들, 추세선과 지지·저항선을 비교하는 네 개의 차트 및 거래 당시 확인 항목을 보여주는 복기 화면

전체 데이터를 브라우저에 적재하지 않고 보이는 구간만 가져온 뒤 실시간 이벤트를 이어 붙였습니다. 데이터의 연결과 화면의 갱신을 나눠, 과거 차트를 탐색하면서도 최신 변화를 함께 확인할 수 있도록 했습니다.

과거 조회와 최신 변화의 연결

과거 구간은 REST로 조회하고 최신 변화는 WebSocket으로 반영합니다. 필요한 범위만 추가로 요청하고, 같은 시점의 데이터는 병합해 탐색 중인 화면을 유지합니다.

REST·WebSocket 연결 자세히 보기

변경된 레이어만 다시 그리기

캔들·분석선과 크로스헤어를 두 개의 Canvas로 나눴습니다. 포인터 이동은 Overlay만 갱신하고, 연속된 입력은 프레임 단위로 묶어 불필요한 그리기를 줄였습니다.

2-Layer Canvas 자세히 보기

거래 결과가 아니라 판단 과정을 복기하는 AI 투자 코치

거래 당시의 기록과 유사 사례를 근거로 AI가 놓친 조건을 설명하고, 다음 투자에서 확인할 기준을 제안하도록 했습니다.

거래 시점 근거 검증 및 이벤트 기반 재검증: 판단 데이터, 복기 근거 구성, AI 주장 검증과 관찰 조건으로 이어지는 흐름. 새 이벤트가 발생하면 연결된 판단과 알림을 재검증합니다.

주문·체결 기록과 당시 차트, 확인한 정보들을 연결해 결과뿐 아니라 판단 과정에서 빠진 조건을 확인합니다. 비교·평가 수치는 코드로 계산하고, AI는 근거가 확인된 결과를 피드백으로 설명하도록 역할을 나눴습니다.

복기에서 발견한 개선점을 다음 거래의 확인 기준과 알림으로 연결했습니다.

초당 평균 1,080건의 시장 데이터를 처리하는 실시간 파이프라인

Kafka에 기록된 이벤트를 기능별 Consumer가 독립적으로 처리하고, 지연된 처리 경로는 복구하는 개념도
기능별 확장·변경·복구를 분리한 개념도 · 실제 데이터 전달 경로는 아래 흐름도 참고

시장 이벤트가 여러 기능으로 전달되는 과정에서 한 경로의 지연이 다른 기능의 진행을 막지 않도록 Kafka 기반 EDA를 적용했습니다. 기능별 Consumer Group이 독립적으로 처리하며, 가공·저장 작업은 처리와 출력이 완료된 뒤 Offset을 커밋해 실패 시 재처리하도록 했습니다.

처리 경로 분리

Consumer Group마다 독립된 진행 위치를 관리

실패 후 재처리

커밋된 Offset 이후부터 다시 읽어 처리

중복 수신 확인

최근 이벤트 ID를 추적해 같은 이벤트를 구분

실시간 상태는 Redis, 틱·과거 조회 데이터는 ClickHouse, 마감 봉과 이벤트 기록은 S3로 나눠 저장했습니다.

실제 서비스의 데이터 전달 경로

실시간 파이프라인의 데이터 전달 경로외부 WebSocket에서 받은 이벤트를 Kafka 입력 토픽에 기록합니다. Market Processor가 가공한 실시간 상태는 Redis와 WebSocket을 통해 차트에 전달하고, 마감 봉과 이벤트는 별도 토픽으로 전달해 ClickHouse 저장, S3 기록과 AI 분석 Consumer가 독립적으로 처리합니다.AWS EKS · 독립 워크로드외부 WebSocket체결 · 호가 · 봉Kafka 입력이벤트 기록 · 분산Market Processor정규화 · 봉 가공Redis실시간 상태차트 화면WebSocket 갱신Kafka 가공 토픽마감 봉 · 체결 · 호가 · 이벤트ClickHouse · 틱 / 과거 데이터 조회S3 · 마감 봉 / 이벤트 기록분석 Consumer · 시장 이벤트 감지그룹별 처리 위치 분리저장과 분석의 독립 실행
가공한 이벤트를 실시간 화면 갱신과 저장·분석 경로로 나눠 전달합니다.

백엔드와 협업한 경계

BACKEND CONTRACT

제공 범위

과거 구간 REST 응답 · 최신 WebSocket 이벤트 · 연결 상태

FRONTEND STATE

연결 범위

필요한 범위 조회 · 시점별 병합 · 종목과 주기 변경

RENDERING

사용자에게 보이는 범위

조회 범위 · 실시간 변화 · 분석 결과와 선정 근거

구현 상세 보기

  • React
  • TypeScript
  • Python
  • Kafka
  • Kubernetes
  • REST API
  • WebSocket
  • Canvas 2D