장바구니 조회 - ekdan38/HotDealService GitHub Wiki

장바구니 조회 성능 최적화 및 k6 테스트 비교

테스트를 위해 4만개의 장바구니 더미 데이터를 생성하였다.

장바구니 조회

개선 전 k6 테스트

k6 테스트 결과
  • VU 100
    VU100 결과
  • VU 200
    VU200 결과
  • VU 300
    VU300 결과
장바구니 조회 (3분) 총 처리량 Latency(mean) Latency(P95) TPS
VU 100 14220 1.26s 1.55s 78
VU 200 14014 2.58s 2.9s 76
VU 300 13477 4s 7s 73

테스트 결과 분석

  • VU 100 에서 Latency(mean) 가 1.26s, Latency(P95)의 경우도 1.55s 로 큰 Latency 발생
  • VU 200 이후 Latency는 크게 증가
  • TPS 증가 없음
  • 단순 조회임에도 성능이 매우 나쁨

성능 개선 계획

  1. Dto Projection : 단건 Row 조회이며, 필드가 4개로 많지 않아 생략
  2. 인덱싱 : 장바구니 추가에서 진행한 커버링 인덱스를 통해 성능 향상 기대
  3. 캐싱 : 적용할 수 있지만, 사용자가 핫딜 조회, 상품 조회, 상품 주문, 결제 흐름에서 장바구니 조회를 여러번 하지 않는다 판단하여 캐싱은 생략(필요시 추후 적용) ​ 장바구니 추가에서 생성한 커버링 인덱스를 통해 성능 개선 확인

성능 개선

1. 인덱싱

​ 인덱싱 과정은 장바구니 추가와 같이 커버링 인덱스를 적용, 조회 쿼리 또한 같기 때문에 내용은 생략 ​

인덱싱 적용 후 k6 테스트

k6 테스트 결과
  • VU 100
    VU100 결과
  • VU 200
    VU200 결과
  • VU 300
    VU300 결과
장바구니 조회 (3분) 총 처리량 Latency(mean) Latency(P95) TPS
VU 100 45698 392ms 696ms 253
VU 200 46214 778ms 1.45s 255
VU 300 45497 1.18s 2.27s 251

테스트 결과 분석

Latency

  • Latency(mean)
    • VU 100: 1.26s → 392ms (약 68.9% 개선)
    • VU 200: 2.58s → 778ms (약 69.8% 개선)
    • VU 300: 4.00s → 1.18s (약 70.5% 개선

Latency(mean) : 전 구간 약 70% 개선

  • Latency(P95)
    • VU 100: 1.55s → 696ms (약 55.1% 개선)
    • VU 200: 2.90s → 1.45s (약 50.0% 개선)
    • VU 300: 7.00s → 2.27s (약 67.6% 개선)

Latency(P95) : 전 구간 50% 이상 개선, 특히 VU 300 에서 7s 에서 2.27s로 크게 감소

TPS

  • VU 100: 78 → 253 (약 224.4% 증가)
  • VU 200: 76 → 255 (약 235.5% 증가)
  • VU 300: 73 → 251 (약 243.8% 증가)

TPS :전 구간 220% 이상 개선, 이전 대비 3배 이상 향상

개선 전에는 인덱스를 타고 있지 않아 단순 조회 API 임에도 성능이 매우 낮았음 커버링 인덱스를 통해 눈에 띄는 성능 개선을 보임


2. 장바구니 조회 성능 개선 최종 정리 

항목(각 개선 단계는 이전 단계 포함) 인덱싱
평균 Latency 감소율 약 70%
TPS 증가율 약 224 ~ 243%
  • 커버링 인덱스 적용을 통해 Latency(mean) 는 약 70% 개선 효과를 보임
  • TPS 는 224 ~ 243% 라는 높은 수치의 개선 효과를 보임
  • 캐싱은 적용하지 않았지만 추후 필요시 캐싱 적용
⚠️ **GitHub.com Fallback** ⚠️