20분
프로젝트 브리핑: 실시간 주문 분석 시스템
Weekly Project: 실시간 이커머스 파이프라인
프로젝트 브리핑: 실시간 주문 분석 시스템
Spark 심화: Streaming & Delta Lake > Weekly Project: 실시간 이커머스 파이프라인
학습 목표
프로젝트 요구사항을 이해한다 아키텍처를 파악한다 평가 기준을 확인한다
프로젝트 배경
"매출 데이터가 1시간 뒤에나 보여요. 실시간으로 볼 수 없나요?"
현재 상황:
- 배치 잡이 1시간마다 실행
- 경영진이 실시간 매출을 보고 싶어함
- 이상 주문(사기) 탐지가 늦어 피해 발생
목표:
- 실시간 주문 처리: 5초 이내 저장
- 실시간 집계: 5분 윈도우 매출
- 이상 탐지: 고액 주문 즉시 알림
아키텍처
에디터 로딩 중...
테이블 스키마
fact_orders (원본 주문)
| 컬럼 | 타입 | 설명 |
|---|---|---|
| order_id | BIGINT | 주문 ID |
| customer_id | INT | 고객 ID (1-1000) |
| product_id | INT | 상품 ID (1-50) |
| amount | DECIMAL | 주문 금액 |
| region | STRING | 지역 |
| order_time | TIMESTAMP | 주문 시각 |
agg_metrics (5분 윈도우 집계)
| 컬럼 | 타입 | 설명 |
|---|---|---|
| window_start | TIMESTAMP | 윈도우 시작 |
| window_end | TIMESTAMP | 윈도우 종료 |
| total_sales | DECIMAL | 총 매출 |
| order_count | BIGINT | 주문 수 |
| avg_order_value | DECIMAL | 평균 주문액 |
alerts (이상 탐지)
| 컬럼 | 타입 | 설명 |
|---|---|---|
| alert_time | TIMESTAMP | 알림 시각 |
| alert_type | STRING | 알림 유형 |
| order_id | BIGINT | 주문 ID |
| customer_id | INT | 고객 ID |
| amount | DECIMAL | 금액 |
| reason | STRING | 사유 |
요구사항
Phase 1: 기본 파이프라인 (필수)
- Rate Source로 주문 생성 (초당 20건)
- 주문 데이터 변환 (6개 컬럼)
- fact_orders에 저장 (Delta Lake, Append)
- Checkpoint 설정
Phase 2: 윈도우 집계 (필수)
- 10분 Watermark 설정
- 5분 윈도우 전체 집계
- agg_metrics에 저장 (Update)
Phase 3: 이상 탐지 (필수)
- 규칙 1: 단일 주문 금액 > 5000
- alerts에 저장
Phase 4: 고급 기능 (선택)
- 지역별 집계
- Time Travel 분석
- OPTIMIZE 실행
평가 기준
| 항목 | 배점 | 세부 기준 |
|---|---|---|
| Phase 1 | 30% | Rate Source, Transform, Delta 저장 |
| Phase 2 | 25% | Watermark, Window, Update Mode |
| Phase 3 | 25% | 이상 탐지 규칙 구현 |
| Phase 4 | 10% | 고급 기능 |
| 코드 품질 | 10% | 가독성, 주석, 구조화 |
산출물
코드 파일
에디터 로딩 중...
Delta Lake 테이블
에디터 로딩 중...
결과물
- 실행 스크린샷
- Spark UI 분석 (선택)