피드로 돌아가기
Dev.toBackend
원문 읽기
Kafka Consumer + Redis Cache 조합으로 시장 데이터 처리 지연 시간 최소화함
From Stream to Database: Processing Market Data with Spring Boot, Redis, and Flyway
AI 요약
Context
Python 서비스가 B3 데이터를 Kafka로 Publish하면 Java 마이크로서비스가 이를 소비하는 아키텍처임. MVP 단계에서는 단위 테스트와 예외 처리가 미구현된 상태로 핵심 데이터 흐름 구축에 집중함.
Technical Solution
- Flyway: assets 테이블 생성 시 ticker 필드에 인덱스를 적용하여 심볼 기반 조회 성능 확보함
- Kafka Consumer: trading-assets-market-data-v1 토픽에서 메시지를 수신하고 AssetService.updateAsset()을 트리거함
- Kafka Key: ticker를 키로 사용하여 메시지 처리 순서 보장함
- MySQL Persistence: 자산 레코드 갱신 또는 신규 생성으로 데이터 일관성 유지함
- Redis Cache: market:price:{ticker} 패턴의 키로 가격 정보 캐싱하여 관계형 DB 부하 감소시킴
- REST API: GET /api/v1/assets와 GET /api/v1/assets/{ticker} 엔드포인트로 자산 조회 기능 제공함
Key Takeaway
이중 저장소 패턴(SQL + Redis Cache)을 적용하면 실시간성 요구사항과 데이터 영속성이라는 두 가지 목표를 동시에 달성할 수 있음.
What's Next
Broker Wallet API 도입으로 사용자 잔액 관리와 자산 소유권 연결, 시가 변동 반영 기능을 구현할 예정임.
실천 포인트
Kafka 기반 실시간 데이터 파이프라인 구축 시 Consumer 서비스에서 DB 저장소와 Cache 저장소를 동시에 활용하면 응답 지연 시간을 줄이면서도 데이터 신뢰성을 확보할 수 있음. 이때 Kafka 메시지 키로 ticker를 사용하면 파티션 내에서 순서가 보장되어 가격 업데이트 순서 오류를 방지할 수 있음.