https://www.similarchart.com/
비슷한 차트 검색기
전 종목의 최근 10년간 모든 차트를 탐색합니다. 내 종목의 차트는 과연 상승하는 차트일까요?
www.similarchart.com
구현 가능할까..?
이 프로젝트가 진짜 가능할까..?
'나는 이런 웹사이트를 만들어보고 싶어', '나는 이런 앱을 만들어보는 게 꿈이야' 등 개발자들은 이런 생각을 해보지 않은 사람은 드물 것입니다. 그런데 실제로 구현까지 이어지기는 매우 어렵죠. 실제로 구현이 가능한 건지도 불투명할 것 같네요.
일단 저도 '비슷한 차트를 탐색하는 웹사이트를 한번 만들어보자'로 결정했습니다. 그런데 처음에 이 프로젝트가 진짜 가능한지, 가능하더라도 비용이 얼마나 들지 감도 잡히지 않았습니다. 당시의 저는 AWS, Docker 등도 잘 모르던 상태라 더욱 막막했던 것 같습니다.
처음에 막막했던 부분
제 프로젝트는 사용자가 특정 차트를 고르면, 코스피 코스닥 전 종목의 과거 차트들을 모두 탐색하여 가장 유사한 차트 10개 정도를 골라 사용자에게 보여주는 것이 목표입니다. 일단 32일 치 비교를 먼저 만들어보기로 했습니다. 이때 '전 종목의 과거 차트들을 모두 탐색하여'가 매우 걸리는 부분이죠.
1. 시간복잡도
예를 들어 사용자가 '삼성전자'의 32 거래일치 차트와 비슷한 과거 차트를 찾아달라고 요청하면
(전 종목 수) X (각 종목당 5년 치 데이터) X (32 거래일치) X (시가 고가 저가 종가 4 항목을 고려한 비교)
2630 X 1230 X 32 X 4 = 414,067,200
다른 로직을 다 제외하고 기본적인 연산의 양만 본 경우에도 4억 번 이상의 연산이 필요합니다. 파이썬은 기본적으로 1초에 2천만 번의 연산을 수행한다고 알려져 있는데, 응답시간이 30초 이상 걸리면 사용자는 그냥 뒤로 가기를 누를 것입니다.
2. 공간복잡도
프로젝트를 진행하기 전, 향후 배포를 생각하며 여기저기 클라우드 서비스를 조사했습니다. 알고리즘 공부를 할 때는 몰랐는데, 메모리가 커질 때마다 요구 비용이 높아지는 것을 보고 메모리 사용을 최대한 줄여 비용을 절감해야 한다는 것이 실감이 났습니다.
AWS에서 가입 후 1년 동안 무료를 제공되는 EC2인스턴스는 최대 메모리가 1GB가 채 안되었습니다. 그래서 저는 500MB 이하를 사용하는 것으로 목표를 잡았습니다.
하지만 전 종목의 5년 치 데이터는 300만 개가 넘어갑니다. 이 데이터를 메모리에 띄우는 것만 해도 2GB가 훌쩍 넘어갔습니다. 이 과정에서 연산까지 일어나면 3GB가 넘어갔죠. 어떻게 이 메모리 문제를 해결해야 할지도 막막했습니다.
챗 GPT가 있다. 어떻게든 해보자
올해에는 챗 GPT라는 혁명이 한번 일어났었죠. 저는 챗 GPT를 아주 높게 평가하고 있습니다. 올해 상반기, 3-1학기에 저를 죽다 살아나게 한 주범이 크게 두 가지입니다. '머신러닝을 활용한 데이터 분석 팀 프로젝트'와 'CNN 이미지 분류 및 feature space 분석 팀 프로젝트'를 진행했었습니다.
이때 힘들었지만, 얻은 것도 매우 많았습니다. 프로젝트를 진행하며 챗 GPT를 많이 사용하며 사용법을 익혔습니다. 마치 월급을 주고 비서를 한 명 고용한 느낌을 받았습니다. 이때 챗 GPT가 없었으면 어떻게 됐을지 아찔하네요.
비슷한 차트 검색 웹 프로젝트도 막막하지만 제 비서인 챗 GPT를 믿고 일단 뛰어들어 본 것 같습니다. 물론 챗 GPT가 알고리즘을 떠올리는 것에는 좀 약한 모습을 보였습니다. 시간복잡도와 공간복잡도를 줄이는 알고리즘을 연구하는 것이 제일 큰 과제가 될 것 같네요.
저는 백준 문제를 하루에 하나씩 꾸준히 거의 600일째 풀고 있습니다. 하지만 이 알고리즘 공부가 정말 개발에 도움이 되는지 의문을 가졌던 것 같습니다. 하지만 프로젝트를 하며 알고리즘은 정말 중요하다는 것을 깨달았습니다.
가능할진 모르겠지만, 일단 부딪혀봅니다.
'프로젝트' 카테고리의 다른 글
비슷한 차트 탐색 프로젝트 - 3. 프로젝트를 Docker로 구성해보자 (0) | 2024.02.17 |
---|---|
비슷한 차트 탐색 프로젝트 - 2. Flask, Django, Spring 어떤걸 쓸까? (0) | 2024.02.17 |
비슷한 차트 탐색 프로젝트 - 1. 시간을 줄이기 위한 여러 실험과 테스트 (0) | 2024.02.17 |
프로젝트 주제 변경(딥러닝 주가예측 -> 비슷한 차트 검색) (0) | 2024.02.17 |
토익 끝! 인공지능 주가예측 프로젝트 개요(23.8.15) (0) | 2024.02.16 |