2023년 9월의 이야기입니다.
제 프로젝트는 사용자가 특정 차트를 고르면, 코스피 코스닥 전 종목의 과거(5년) 차트들을 모두 탐색하여 가장 유사한 차트 10개 정도를 골라 사용자에게 보여주는 것이 목표입니다.
similar chart finder
내 종목의 차트는 상승하는 차트일까요?
3.35.36.208
도커가 그렇게 좋다며? 나도 사용해 보자
일단 공부부터
도커는 저의 새로운 도전이었습니다.
저는 8월에 도커에 대해 조금 공부했었습니다. 가상화를 프로세스단위로 할 수 있다는 것과, 이미지로 특정 환경을 캡처해 놓을 수 있다는 것 정도를 배웠을 뿐입니다. 실제로 도커를 사용하려면 공부가 꽤 필요했죠.
도커 명령어 실습이 잘 정리된 블로그 글을 보며 따라 해보고, 유튜브에 얄팍한 코딩사전님의 도커 실습 강의를 보고 따라 하며 실습했습니다.
또한 제 비서이자 선생님인 챗 GPT에게도 많이 배웠습니다.
저는 위와 같은 방식으로 비서를 한 명 무료로 고용하고 작업합니다. 기존에 구글링 하여 일주일 걸릴 작업을 하루이틀 만에 하게 된 것 같습니다.
프로젝트 구조
아래는 챗 GPT가 제안해 준 제 프로젝트 개발환경의 초기 구성입니다.
/myapp
├── flask_server
│ ├── main.py
│ ├── image_manager.py
│ ├── templates
│ │ └── ... (HTML files)
│ └── Dockerfile
├── data_updater
│ ├── data_generator.py
│ └── Dockerfile
├── shared_files
│ ├── data_manager.py
│ ├── stock_data_20130801-20230915.pkl
│ └── codes.csv
├── database # new directory for database scripts!
| └── init.sql # initialization script for the database.
└── docker-compose.yml
Flask 컨테이너
: Flask를 사용하여 HTTP 요청을 받아 응답을 반환
데이터 수집, 갱신, 정제, 분석 컨테이너
: 장이 끝나는 시각인 3시 30분에 실행되어 주가 데이터를 수집하고 정제하여 mysql 컨테이너에 저장하고, 비슷한 차트 데이터 추출등 데이터를 관리하는 컨테이너
mysql 컨테이너
: 개발 환경에만 존재하고 프로덕션 환경에서는 AWS RDS로 대체 예정
공유 파일 저장소
: db에서 데이터를 읽어오는 등의 전체적으로 쓰이는 기능들과 파일들을 모아놓은 곳.
초기 설정은 위와 같습니다. 물론 이후에는 미국 주식을 위한 데이터 웨어하우스 컨테이너와 Nginx 컨테이너가 추가됩니다.
사용소감
도커가 정말 좋다고 주변에서 들어봤지만 이번 기회에 직접 사용해 보니 말 그대로군요.. 도커는 어떤 프로젝트를 하든 거의 필수 같습니다. 이후에 쿠버네티스도 사용해 봐야겠습니다.
+ 도커 데스크톱에서 메모리를 추적해 보자
제 목표는 메모리 1GB 이하의 환경에서도 위 프로그램이 문제없이 잘 돌아가는 것입니다. 어떠한 상황에서도 단 1초의 순간이라도 메모리 1GB를 넘긴다면 문제가 발생할 것 입니다.
도커 데스크톱에는 컨테이너별 메모리 사용량을 그래프로 알 수 있어 메모리 관리가 용이했습니다. 이 과정에서 메모리 누수를 확인할 수 있었습니다. 파이썬은 가비지 콜렉터가 자동으로 실행되어 메모리 누수 문제가 없을 줄 알았는데, 큰 착각이었습니다. 제 머리를 아직도 아프게 하는 메모리 누수 문제는 이후 포스팅에서 다뤄보겠습니다.
'프로젝트' 카테고리의 다른 글
프로젝트 - 5. 데이터 파이프라인, 데이터베이스 구조 정리 (0) | 2024.02.17 |
---|---|
비슷한 차트 탐색 프로젝트 - 4. AWS를 사용해서 배포해보자 (0) | 2024.02.17 |
비슷한 차트 탐색 프로젝트 - 2. Flask, Django, Spring 어떤걸 쓸까? (0) | 2024.02.17 |
비슷한 차트 탐색 프로젝트 - 1. 시간을 줄이기 위한 여러 실험과 테스트 (0) | 2024.02.17 |
비슷한 차트 탐색 프로젝트 개요 - 처음에 막막했던 부분들(23.12.21) (0) | 2024.02.17 |