1. 이 프로젝트를 하게 된 계기
회사를 다니면서 테크리더님과 데이터 인프라를 구축하시는 전 과정을 함께 할 수 있었다. 다만, 그 과정에서 '나 혼자 하얀 도화지에 이 모든 과정을 완성시킬 수 있을까?'라는 의문이 들었다. 상상속에서는 충분히 할 수 있었다. 다만, 실제로 할 수 있을지에 대해서는 자신이 없었다. 그래서 이 프로젝트를 시작해보려고 한다.
좀 더 다양한 이유를 말해보면, 아래와 같다.
- 고팍스에서 구축한 Gorocket 프로젝트의 A-Z를 내 방식대로 구축해보고 싶은 마음.
- 프로그래머스 KDT 1기 데이터 엔지니어링 과정에서 최종 프로젝트를 1주일 뒤부터 시작한다길래 경쟁해볼겸.
- 곧 시간이 엄청 많아질 것이라, 일을 벌려보자는 심정.
- 현업에서 안써봤던 기술도 써보고 싶은 마음.
2. 프로젝트 구체화
A. 기한
2023-07-30 ~ 2023-09-02 (5주)
B. 목표
a. 기술 목표 및 도전 과제
- AWS cloud 사용
- Docker 사용
- Production Database은 가능하면 구축 혹은 미구축
- Data Lake 구축 (S3)
- Data Warehouse 구축 (S3, Redshift Serverless)
- Spark (Glue)
- Data Quality Validation
- Glue Data Catalog
- Trino (Athena)
- Athena Small File issue
- Airflow (EC2, ECS)
- Thread Pool로 병렬 처리
- CI/CD (Github Action)
- BI (superset?)
- Notification (Slack, Telegram)
C. 도식화
아래 그림처럼 파이프라인을 간단하게 도식화하였다.
이 구조를 보고 떠오를 수 있는 질문 몇개를 생각해봤다.
a. MWAA를 사용하지 않은 이유
MWAA 대신에 EC2를 사용한 이유는 크게 2가지가 있다.
- MWAA는 매니지드 서비스라서 월 40만원 정도의 비용이 든다.
- 회사에서 너무 많이 써봐서 색다르게 해보고 싶었다.
b. Athena, Glue를 사용한 이유
토이 프로젝트 특성 상 Airflow만으로도 모든 파이프라인의 데이터 처리가 가능하다.
그럼에도 불구하고 Airflow만 사용하지 않은 이유는 Airflow에 너무 많은 책임을 부여하고 싶지 않았기 때문이다.
Airflow는 스케줄러 역할에만 충실하면 된다.
간단하게 쿼리로만 데이터를 가공할 수 있는 경우 Athena를 사용하고 복잡한 Python 작업이 필요한 경우 Glue를 사용하려고 한다. ECS는 회사에서 하지 못했던 파이썬 라이브러리의 디펜던시 분리를 해보고 싶은 욕심에서 추가했다.
c. Data Warehouse를 Redshift, s3 둘 다 사용하는 것인가?
일단 S3로 구축하고 Redshift Serverless로 변경해보려고 한다.
3. 결론
일단 해보자.
어떤 데이터를 수집할지도 정해야하는데.. 그냥 아무 데이터나 Lake에 넣어두고 고민할까..
Ghost