-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Description
현재 조회 방식
- 특정 기간동안 주문된 상품을 DB에서 조회
- 애플리케이션에서 주문 수량 계산, 인기 상품 형식 변환 작업 수행
fun getPopularItemsOnTop10(period: Long): List<PopularItem> {
// 입력된 기간만큼 주문 상품 전체 조회
// 중복 제거 후, 주문 수량 합 계산
// 정렬된 주문 상품의 id로 실제 상품 조회
// 인기 상품 변환
}문제점
현재 조회 방식은 요청이 올 때마다 작업을 수행하기 때문에, 조회되는 데이터가 많거나 트래픽 급증 상황에서 오버헤드 발생.
해결방안
- 인기 상품 조회 캐시 적용 -> Caffeine, Redis
- 인기 상품 데이터를 저장할 주문 통계 테이블 생성하고, 스케줄러를 활용하여 특정 시간마다 데이터 집계
- 인기 상품 조회 시 주문 통계 테이블만 조회하여 응답
고려사항
- 인기 상품 순위 변경에 대해 실시간성은 고려하지 않음.
- 스케줄러가 동작하는 특정 시간에 대한 구체화 필요. -> 하루 1번 or 정각
Metadata
Metadata
Assignees
Labels
No labels