백엔드
Distributed Cache 도입기 (3): RDB 조회 90% 감소시키기
두줄요약
BillSetting 조회 부하를 줄이기 위해 로컬 캐시와 Redis 글로벌 캐시를 검토했지만 각각 한계가 있었습니다. 결국 Redis Pub/Sub 기반 분산 캐시로 전환해 RDB 조회를 93% 줄였습니다.
문제 상황
- BillSetting 조회가 매니저 API 권한 확인 경로에 걸리며 하루 6000만 건 이상, RDB 조회 1500 TPS 수준의 부하 발생
- Caffeine 로컬 캐시로는 다중 인스턴스 환경의 히트율 편차, Cold Start, 짧은 TTL 만료 부하 해소 한계 존재
- Redis 글로벌 캐시는 캐시 요청이 단일 Redis로 몰리며 CPU 70%까지 상승해 병목 발생
해결 방법
- 각 인스턴스는 로컬 캐시를 유지하고, 변경 시 Redis Pub/Sub으로 invalidate 메시지만 동기화하는 분산 캐시 적용
- TTL을 5초에서 24시간으로 늘려 캐시 만료로 인한 미스를 줄이고, 동기화 실패와 수동 DB 조작을 안전장치로 보완
- 결과적으로 캐시 히트율을 거의 100%에 가깝게 끌어올리고 RDB 조회를 1500 TPS에서 100 TPS 이하로 감소
