Skip to content

feat: Caffeine 캐시 도입 및 성능 측정 환경 구축#119

Open
lilloo04 wants to merge 2 commits intodevfrom
refactor/#118
Open

feat: Caffeine 캐시 도입 및 성능 측정 환경 구축#119
lilloo04 wants to merge 2 commits intodevfrom
refactor/#118

Conversation

@lilloo04
Copy link
Member

@lilloo04 lilloo04 commented Jan 15, 2026

📌 연관 이슈

🌱 PR 요약

외부 공공 API 호출로 인한 응답 지연 문제를 해결하기 위해
Caffeine 기반 캐시를 도입하고, 캐시 적용 효과를 수치로 검증했습니다.

Spring Cache 추상화를 활용하여 도메인별 캐시를 구성했으며,
프로파일 분리를 통해 캐시 미적용 환경(NoOpCacheManager)
캐시 적용 환경(CaffeineCacheManager) 을 명확히 구분했습니다.

k6 부하 테스트 및 캐시 통계 API를 통해
p95 응답 시간과 캐시 히트율 개선 효과를 검증했습니다.

🛠 작업 내용

1. 캐시 구조 설계 및 도입

  • Spring Cache 추상화 기반 캐시 구조 설계
  • CaffeineCacheManager 적용
  • 도메인/기능 단위 캐시 분리
    • tourApiCache
    • cnctrRateCache
    • themeCache
    • regionCache
    • placeLikeCache
  • TTL 및 최대 사이즈 설정을 통한 메모리 사용 제어

2. 프로파일 기반 캐시 전략 분리

  • cache profile: Caffeine 캐시 활성화
  • no-cache profile: NoOpCacheManager 적용
  • 캐시 도입 전/후 성능 비교가 가능하도록 환경 분리

3. 캐시 통계 조회 API 구현

  • CacheManager 기반 캐시 목록 순회
  • CaffeineCache nativeCache.stats() 활용
  • hit / miss / hitRate / size 조회 API 제공
  • JSON 형태로 캐시 상태 확인 가능

4. 성능 테스트 및 검증

  • k6를 활용한 부하 테스트 수행
  • Cold Cache → Warm Cache 시나리오로 테스트 분리
  • 캐시 적용 후 결과:
    • p95 응답 시간: 15.29ms
    • 전체 캐시 히트율: 99.27%
    • Error Rate: 0.00%
  • 외부 API 병목이 캐시를 통해 효과적으로 제거됨을 확인

5. 기타

  • 캐시 통계 기반 성능 분석을 위한 averageLoadPenalty 확인
  • 캐시 미스 시 외부 API 호출로 인한 p99 지연 원인 명확화

📌 비고

  • 본 PR은 신규 기능 추가가 아닌 성능 개선 목적의 리팩토링에 해당합니다.
  • 캐시 적용 전/후 비교를 통해 개선 효과를 재현 가능하도록 구성했습니다.

📸 상세 이미지

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

refactor: 지역 기반 추천 API Caffeine 캐시 도입을 통한 성능 개선

1 participant