-
Notifications
You must be signed in to change notification settings - Fork 1
Top10 캐싱 개선 검증 실험 #81
Copy link
Copy link
Open
Description
배경
PR #80 에서 Top10 쿼리 기간 제한(최근 2개월) 및 Redis 장애 시 DB fallback을 추가했다.
배포 후 아래 두 가지 실험으로 개선 효과를 검증해야 한다.
실험 1: k6 부하 테스트 - cache miss 시 latency 감소 확인
목적
Top10 쿼리에 기간 제한을 추가하여 cache miss 시 DB 쿼리 시간이 단축되었는지 확인한다.
단건 쿼리 기준 5,695ms → 2,054ms(64% 감소)가 부하 환경에서도 유효한지 검증.
실험 조건
| 항목 | 값 |
|---|---|
| 도구 | k6 |
| VUs | 50 |
| 지속 시간 | 5분 |
| 스크립트 | scripts/k6/baseline.js |
실행 명령어
K6_WEB_DASHBOARD=true \
K6_WEB_DASHBOARD_EXPORT=./top10/after-date-filter.html \
k6 run --env BASE_URL=http://jongju.duckdns.org:8080 --env API_PREFIX=/api --env ACCESS_TOKEN=$ACCESS_TOKEN ./baseline.js확인 포인트
-
get_top10_latencymax 값이 이전(58s)보다 감소했는지 - 초반 stampede로 인한 타임아웃 건수가 이전(40건)보다 감소했는지
- Grafana Backend Latency에서 초반 스파이크 크기 비교
비교 기준 (이전 결과)
| 지표 | 이전 값 |
|---|---|
| Top10 avg | 315ms |
| Top10 max | 58.01s |
| Top10 p95 | 27ms |
| 타임아웃 | 40건 (0.22%) |
실험 2: Redis 장애 시 DB fallback 확인
목적
Redis가 죽었을 때 Top10 API가 500 에러 대신 DB fallback으로 정상 응답하는지 확인한다.
실험 절차
# 1. Redis EC2에서 Redis 중지
docker stop redis
# 2. Top10 API 호출 (정상 응답이 와야 함)
curl -w "\nHTTP Status: %{http_code}\nTime: %{time_total}s\n" \
http://jongju.duckdns.org:8080/api/posts/top10
# 3. 앱 로그에서 fallback 경고 확인
docker logs community-app --tail 20
# 4. Redis 재시작
docker start redis
# 5. 다시 API 호출하여 캐시 정상 동작 확인
curl -w "\nHTTP Status: %{http_code}\nTime: %{time_total}s\n" \
http://jongju.duckdns.org:8080/api/posts/top10확인 포인트
- Redis 중지 상태에서 HTTP 200 응답 반환
- 앱 로그에
Redis 조회 실패 - DB fallback경고 출력 - Redis 재시작 후 캐시 정상 동작 복귀 (응답 시간 ms 단위)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels