캐시적중률(CHR)이란
캐시 적중률을 계산하는 공식은 다음과 같다. `캐시적중률 = 캐시 적중/(캐시 적중 + 캐시 미스)` 이때 캐시 적중은 필요한 데이터가 이미 캐시에 있는 상태이고, 캐시 미스는 없는 상태이다.
캐시적중률(CHR)이 얼마나 되어야 할까?
CHR이 너무 낮으면 캐싱때문에 오히려 더 시간이 오래걸릴 수 있다. (예: 캐시를 사용하지 않아야 하는 경우) 캐싱을 하는 것이 안하는 것보다 나은 지점이 CHR의 Minimum이 될 것이다. CHR은 높으면 높을수록 좋지만, 다음 포스팅(How Do I Increase My Cache HIt Ratio)에 다르면 80% 이상이면 "Good CHR"이라고 평가한다. 다만 주로 정적콘텐츠만 서비스 하는 사이트의 경우에는 95~99%까지도 높을 수 있다.
캐시적중률 결정요인
- 캐시 메모리 용량 (Trade-off = 비용) : 캐시 메모리가 클수록 더 많은 데이터를 캐싱할 수 있기에 캐시적중률이 높아질 수 있지만, 캐시는 비교적 비싼 리소스이며, 캐시 용량이 클수록 비용이 증가한다.
- 서비스 특성과 캐시 교체 정책(참고 : 뉴스 사이트와 캐시 교체 알고리즘(Cache Eviction Algorithm)) : 서비스 특성에 알맞은 캐시 교체 정책을 따를 수록 캐시적중률이 높아질 수 있다.
- 캐시 만료 시간(TTL, Time to Live) 최적성 : 캐싱된 데이터가 유효한 시간. TTL을 불필요하게 너무 짧게 잡으면 불필요한 캐시 미스가 증가하므로 CHR에 악영향을 미친다. 동적 TTL 설정(Adaptive TTL)은 콘텐츠 성격에 따라 TTL을 다르게 설정해서 최적화 하는 것을 말한다. 자주 바뀌지 않는 정적 콘텐츠는 TTL을 길게 설정하는 등이다.
- Prefetch 여부와 그 효과: 예측 가능한 요청에 대해 데이터를 미리 캐싱해두는 작업을 통해 캐시적중률을 높일 수 있다.
캐시적중률 외 CDN 활용 고려
애플리케이션 레이어의 캐시 이전에 CDN이 요청을 먼저 핸들하도록하면 응답시간이 더 빨라질 수 있다.
참고 자료
'시스템 디자인' 카테고리의 다른 글
TAO, Facebook의 분산 Social Graph (0) | 2025.03.19 |
---|---|
SNS 피드 시스템 설계하기 (1) | 2025.03.14 |
뉴스 사이트와 캐시 교체 알고리즘(Cache Eviction Algorithm) (0) | 2025.02.27 |
시스템 디자인을 위한 "Back-of-the-envelope calculation" (0) | 2025.02.26 |
개발자라면 외워야 하는 지연 시간 14가지 (0) | 2025.02.24 |