Github Link: https://github.com/santoryu1118/yfinance_source, https://github.com/santoryu1118/yfinance_kafka?tab=readme-ov-file
Kafka와 Kafka Streams의 개념 공부한 것을 체득하기 위해 작은 프로젝트를 해보았습니다. 생성되는 yFinance 주식 데이터를 Kafka Streams를 통해 가공한 후, 가공된 데이터를 주식 데이터 예측 모델에 실시간으로 전달해 예측하는 작업을 수행했습니다. 이 프로젝트의 주된 목적은 예측 모델을 고도화하는 것보다는 Kafka Streams의 다양한 기능을 실습하고 활용하는 것에 중점을 두었습니다.

프로젝트의 전체적인 워크플로는 다음과 같습니다.
yFinance 데이터셋을 다운받아 모델 학습용 training 셋과 test 셋으로 나누었습니다. test 셋에서는 임의의 outlier 데이터를 추가하여, 나중에 kafka streams 단계에서 걸러지도록 합니다.
training 데이터 셋을 사용해 기본 LSTM 모델을 학습시킵니다.
test 데이터 셋은 실시간 데이터를 모방하기 위해 몇 초 간격으로 시간 순서대로 PostgreSQL DB에 넣습니다. Kafka Connect가 해당 데이터를 읽어 Kafka 토픽으로 전송합니다.
Kafka로 들어오는 데이터는 예측 모델이 학습하기 적합한 형태로 Kafka Streams에서 가공되어 valid 타겟 토픽으로 보내집니다. test 셋에서 outlier가 발견되면 rejected 토픽으로 보냅니다.
(Kafka Streams에서 이동 평균(moving_avg)과 최근 10일 간의 주가(lastTenPrices) 데이터 가공하고 outlier data 제거)
valid 타겟 토픽으로 보내진 데이터는 학습해둔 LSTM 모델을 통해서 결과값을 예측합니다.