Skip to content

인기 상품 조회 방식 변경 #8

@scars97

Description

@scars97

현재 조회 방식

  • 특정 기간동안 주문된 상품을 DB에서 조회
  • 애플리케이션에서 주문 수량 계산, 인기 상품 형식 변환 작업 수행
fun getPopularItemsOnTop10(period: Long): List<PopularItem> {
    // 입력된 기간만큼 주문 상품 전체 조회

    // 중복 제거 후, 주문 수량 합 계산

    // 정렬된 주문 상품의 id로 실제 상품 조회

    // 인기 상품 변환
}

문제점

현재 조회 방식은 요청이 올 때마다 작업을 수행하기 때문에, 조회되는 데이터가 많거나 트래픽 급증 상황에서 오버헤드 발생.

해결방안

  • 인기 상품 조회 캐시 적용 -> Caffeine, Redis
  • 인기 상품 데이터를 저장할 주문 통계 테이블 생성하고, 스케줄러를 활용하여 특정 시간마다 데이터 집계
    • 인기 상품 조회 시 주문 통계 테이블만 조회하여 응답

고려사항

  • 인기 상품 순위 변경에 대해 실시간성은 고려하지 않음.
  • 스케줄러가 동작하는 특정 시간에 대한 구체화 필요. -> 하루 1번 or 정각

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions