1. 목표
이번 프로젝트의 목표는 데이터파이프라인을 직접 구축하고 관리해보는 것이 목표이다.
그래서 데이터 파이프라인을 주기적으로 관리해보기 위해 Apache Airflow라는 플랫폼을 사용하였다.
Apache Airflow라는 플랫폼을 처음 사용해봐서 최대한 Airflow의 다양한 기능을 접하기 위해 이 프로젝트를 시작했다. 또한 Airflow에서 워크플로우(DAG)를 작성하여 스케쥴링, 모너터링을 쉽게 해주는 장점을 적용해볼 수 있는 시스템을 생각 해 본 결과, 매 주 로또번호를 추천해주는 시스템을 만들어 보기로 하였다.
프로젝트의 가장 큰 목표
1. 먼저 주기적인 데이터를 지속적으로 업데이트하여 매 주 새로운 정보 받아보기
2. 각 task들을 지속적으로 모니터링해보기
3. 다양한 외부 툴(DB, kakao 알림)들을 사용해보기
2. 사용한 기술 및 언어
Apache Airflow, Docker, AWS S3, Postgres, Python
Apache Airflow 같은 경우 데이터 파이프 라인을 DAG을 통해 구성 할 수 있어 편리하고, Schedule 시스템이 있어 주기적으로 관리 및 모니터링을 할 수 있는 좋은 오케스트레이션이라 들었기에 사용하였다.
Docker 같은 경우 Airflow를 시작하는 방법이 다양하게 있는데 이 중 Docker에서 CeleryExecutor로 Airflow를 시작하는 방법이 공식문서에 가장 빠른 방법이라 하여 이번에는 이 방법을 선택해 보았다. Docker를 이용하여 airflow를 설치하면 Airflow의 각 컴포넌트(Webserver, Scheduler, Redis 등)에 대해 관리가 가능하여 사용하였다.
AWS S3 같은 경우 역대 로또 당첨 데이터를 받아와 저장하는 데이터 베이스로 사용하였다.
Postgres 같은 경우도 해당 데이터들을 받아와 local에 저장하는 용도로 데이터 베이스를 사용해 보았다.
Python 같은 경우 Airflow의 DAG을 구성할 때 뿐만 아니라 S3, PostgresDB에서 받아온 데이터들을 scikit-learn 라이브러리를 사용 하여 다음 회차 로또 번호를 예측해보는 용도로 사용해 보았다.
3. 전체적인 구성

먼저 현재까지(DAG 실행 주) 로또 데이터(URL)를 추출하여 Database(Postgres db, S3)에 저장시킨다.
그 후, 매 주 새로 나오는 로또 당첨 결과를 불러와 기존에 있는 데이터에 추가 시켜 준다.
업데이트가 반영된 데이터를 불러와 scikit-learn을 사용하여 변환시켜 로또 추천 번호를 메일과 카카오톡으로 알려준다.
4. 참고 정보
https://github.com/guswns00123/Weekly_Recommend_LottoNum.git
GitHub - guswns00123/Weekly_Recommend_LottoNum
Contribute to guswns00123/Weekly_Recommend_LottoNum development by creating an account on GitHub.
github.com
'My Project' 카테고리의 다른 글
| TFT 데이터 적재를 위한 데이터 파이프라인 설계 (2) | 2024.10.22 |
|---|---|
| Teamfight Tactics(TFT) 데이터 베이스 설계하기 (1) | 2024.10.15 |
| 로또 번호 추천 자동화 시스템 만들기 (2) (4) | 2024.03.29 |
| 로또 번호 추천 자동화 시스템 만들기 (1) (4) | 2024.03.19 |