프로젝트 소개
E-Commerce Clickstream Analytics Platform은 약 285만 개의 e-commerce 클릭스트림 이벤트를 처리하는 풀스택 데이터 엔지니어링 프로젝트입니다(Kaggle 데이터셋, 2019년 10월~11월).
## 개요
플랫폼은.Raw CSV 이벤트 데이터(~14GB)를 S3 호환 오브젝트 저장소(MinIO)로 흡수하고, Apache Spark로 배치 분석을 실행하며, Kafka와 Spark Structured Streaming으로 실시간 스트리밍을 처리하고, Hadoop MapReduce 작업을 실행한 뒤 FastAPI 백엔드를 통해 React 프론트엔드 대시보드에 결과를 제공합니다.
## 아키텍처 구성 요소
**흡수 및 저장:**
- MinIO(S3 호환 오브젝트 스토리지): 원시 CSV 및 Parquet 출력물 저장
- PostgreSQL 16.3: 집계된 KPI 및 쿼리 준비 결과 저장
- Redis 7.4.1: 캐싱 계층 제공
- Apache Kafka 3.9(KRaft 모드): 스트리밍 데이터를 위한 메시지 버스 역할
**처리:**
- Apache Spark 3.5: 5개 PySpark Jobs로 배치 ETL 처리(일일 KPI 연산, 퍼널 분석, 장바구니 버림 감지, 제품 상호 연관성 스코어링, MapReduce용 데이터 준비)
- Apache Hadoop 3.4.1 YARN Streaming: 두 개의 MapReduce Job 실행(카테고리 이벤트 카운팅 및 브랜드 수익 집계)
- Spark Structured Streaming: Kafka에서 소비하여 활성 세션을 5초마다 집계하고 PostgreSQL에 upsert
**오케스트레이션 및 API:**
- Apache Airflow 2.9.3: 전체 배치 파이프라인을 DAG로 오케스트레이션
- FastAPI(asyncpg): 대시보드용 REST 엔드포인트 제공
- Terraform: AWS 및 GCP 배포 템플릿
**프론트엔드:**
- React 18.3 + TypeScript + Tailwind CSS + Recharts 기반 4개 페이지:
- Overview: KPI 카드 및 일일 추이 차트
- Funnel Analysis: 뷰→장바구니→구매 흐름 및 카테고리별 장바구니 버짐
- Product Analytics: 상위 제품, 브랜드, 카테고리
- Live Monitor: Server-Sent Events 기반 실시간 세션 추적
## 데이터 파이프라인
1. **배치 분석**: MinIO에서 Raw CSV 읽기 → 일일 지표(이벤트, 사용자, 수익, 전환율), 상위 제품/브랜드/카테고리 연산 → PostgreSQL 쓰기. 별도 Job에서 카테고리별 퍼널율 계산, 장바구니 버짐 식별, 제품 상호연관성 리프트 스코어(성능을 위해 10% 샘플링) 산출.
2. **MapReduce**: 준비된 Parquet 파일을 CSV로 변환해 HDFS 업로드 → Hadoop Streaming Job으로 카테고리별 이벤트 카운트 및 브랜드별 수익 합산.
3. **실시간 스트리밍**: Kafka 프로듀서가 CSV를 설정 가능한 속도로 재생(기본값 200건/초). Spark Streaming 컨슈머가 5초 마이크로 배치를 통해 활성 세션을 집계하고 `live_sessions` 테이블에 영속화.
## 배포
모든 13개 서비스는 Docker Compose로 실행됩니다. 필수 요구사항: Docker Desktop >= 4.30, RAM 16GB 이상, 디스크 30GB. Windows 사용자는 WSL2 + 메모리 12GB 이상 필요. Makefile은 서비스 시작, 데이터 업로드, 파이프라인 실행, 테스트 실행을 위한 타겟을 제공합니다.
시작 후 접근 URL: 대시보드(포트 3000), FastAPI docs(포트 8000), Airflow(포트 8080), MinIO Console(포트 9001), Spark Master UI(포트 8081), HDFS NameNode(포트 9870), YARN(포트 8088).
## 저장소 구조
주요 디렉터리: `spark/jobs/`(5개 PySpark 배치 스크립트), `spark/streaming/`(Kafka 컨슈머), `kafka/producer/`(재생 프로듀서), `api/`(라우트된 엔드포인트를 가진 FastAPI 서비스), `frontend/`(React 애플리케이션), `hadoop/mapreduce/`(스트리밍 Job 스크립트), `airflow/dags/`(오케스트레이션), `terraform/`(IaC 템플릿), `docker/`(Hadoop 및 Kafka 서비스 정의).
라이선스: MIT
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.