Skip to content

Commit febeab0

Browse files
committed
docs: 10round.md
1 parent d5a2599 commit febeab0

1 file changed

Lines changed: 53 additions & 0 deletions

File tree

docs/10round/10round.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# 📝 Round 10 Quests
2+
3+
---
4+
5+
## 💻 Implementation Quest
6+
7+
> 이번에는 Spring Batch 를 활용해 주간, 월간 랭킹을 제공해 볼 거예요.
8+
이전에 적재했던 `product_metrics` 와 같은 일간 집계정보를 기반으로 **주간, 월간 랭킹 시스템을 구축**해봅니다.
9+
>
10+
11+
<aside>
12+
🎯
13+
14+
**Must-Have (이번 주에 무조건 가져가야 좋을 것-**무조건하세요**)**
15+
16+
- Spring Batch
17+
- Batch Processing
18+
- Materialized View (Statistics)
19+
</aside>
20+
21+
### 📋 과제 정보
22+
23+
이번 주는 대규모 데이터 집계 및 조회 전용 구조에 대한 설계를 진행해 봅니다.
24+
25+
### (1) Spring Batch Job 구현
26+
27+
- 하루치 메트릭 테이블을 읽어 데이터를 집계하고 처리해봅니다.
28+
- 대상 테이블 : `product_metrics`
29+
- Chunk-Oriented 방식을 통해 대량의 데이터를 읽고 처리할 수 있도록 구성해 보세요.
30+
31+
### (2) Materialized View 설계
32+
33+
- 집계 결과를 조회 전용 테이블 (MV) 로 저장합니다.
34+
- `mv_product_rank_weekly` : 주간 TOP 100 랭킹
35+
- `mv_product_rank_monthly` : 월간 TOP 100 랭킹
36+
37+
### (3) Ranking API 확장
38+
39+
- 기존 Ranking 을 제공하는 GET `/api/v1/rankings?date=yyyyMMdd&size=20&page=1` 에서 기간 정보를 전달받아 API 로 일간, 주간, 월간 랭킹을 제공할 수 있도록 개선합니다.
40+
41+
---
42+
43+
## ✅ Checklist
44+
45+
### 🧱 Spring Batch
46+
47+
- [x] Spring Batch Job 을 작성하고, 파라미터 기반으로 동작시킬 수 있다.
48+
- [x] Chunk Oriented Processing (Reader/Processor/Writer or Tasklet) 기반의 배치 처리를 구현했다.
49+
- [x] 집계 결과를 저장할 Materialized View 의 구조를 설계하고 올바르게 적재했다.
50+
51+
### 🧩 Ranking API
52+
53+
- [x] API 가 일간, 주간, 월간 랭킹을 제공하며 조회해야 하는 형태에 따라 적절한 데이터를 기반으로 랭킹을 제공한다.

0 commit comments

Comments
 (0)