-
Cache / Caching 전략 / Cache Expiration, Eviction📖 개발 공부 2023. 8. 14. 09:00
Cache
- Cache: 성능 향상을 위해 값을 복사해놓는 임시 기억 장치이다.
- Cache에 복사본을 저장해놓고 읽음으로써 속도가 느린 장치로의 접근 횟수를 줄인다.
- Cache의 데이터는 원본이 아니며 언제든 사라질 수 있다.
Cache UseCase
- 웹브라우저 캐시
- 외부 서버에 대한 캐시
- DB에 대한 캐시
이는 네트워크 지연을 감소 / 서버 리소스 사용(api call을 줄임) 감소 / 병목현상을 감소할 수 있다.
DB가 스케일 아웃될 때 DB가 병목현상이 된다. 늘어나는 트래픽을 받아줄 수 없을 때 캐시로 인해 DB에 요청하는 트래픽을 줄일 수 있다.
Cache 관련 개념들
- Cache Hit: 캐시에 접근하여 데이터가 존재
- Cache Miss: 캐시에 접근했으나 데이터가 존재하지 않음
- Eviction Policy: 캐시의 데이터 공간 확보를 위한 데이터 삭제 정책
- 캐시 전략: 환경에 따라 적합한 캐시 운영 방식을 선택할 수 있다. (Cache-Aside, Write-Through)
Caching 전략: Cache-Aside, Write-Through, Write-Back
Cache-Aside (Lazy Loading)
- 항상 캐시를 먼저 체크하고, 없으면 원본 저장소에서 읽어온 후에 캐시에 저장한다.
- 장점: 필요한 데이터만 캐시에 저장되고, Cache Miss가 있어도 치명적이지 않다.
- 자주 사용되는 데이터만 이 캐시에 올라갈 확률이 높다.
- 단점: 최초 접근이 느리다. (그리고 서버를 새로 올릴 때 캐시에 들어가있는 게 없어서 거의 모든 요청이 원본 저장소에 요청이 갈 것이다.) 업데이트 주기가 일정하지 않기 때문에 캐시 데이터가 최신이 아닐 수 있다.
- 캐시 주기를 짧게 주거나 하는 해결책이 있다.
Write-Through
- 데이터를 쓸 때 항상 캐시를 업데이트하여 최신 상태를 유지한다.
- 장점: 캐시가 항상 동기화되어있어 데이터가 최신이다.
- 단점: 자주 사용하지 않는 데이터도 캐시되고, 항상 2 step을 거쳐야해서 쓰기 지연시간이 증가한다.
Write-Back
- 데이터를 캐시에만 쓰고, 캐시의 데이터를 일정 주기로 원본 저장소에 업데이트한다.
- 장점: 쓰기가 많은 경우, DB에 부하를 줄일 수 있다.
- 단점: 캐시가 DB에 Write 되기 전에 장애가 생기면 데이터 유실이 생길 수 있다.
Expiration
Expiration: 각 데이터에 TTL(Time-To-Live)를 설정해 시간 기반으로 삭제한다. 이는 사용자가 데이터를 삭제하겠다고 의도한 동작이다. Eviction과 다른 개념이다.
Eviction Policy
Eviction: 공간을 확보해야 할 경우, 어떤 데이터를 삭제할지 결정하는 방식이다. 이는 사용자가 데이터를 삭제하겠다는 의도 없이 동작한다.
- LRU(Least Rececntly Used): 가장 오랫동안 사용되지 않은 데이터를 삭제한다.
- LFU(Least Frequently Used): 가장 적게 사용된 데이터를 삭제한다.
- FIFO(First In First Out): 먼저 들어온 데이터를 삭제한다.
반응형'📖 개발 공부' 카테고리의 다른 글
What's Wrong with Layers? (계층형 아키텍처의 문제점) (0) 2023.08.23 Redis vs Memcached (1) 2023.08.18 [HTTP] HTTP 메서드 (0) 2023.08.09 RPC, gRPC, stub (0) 2023.08.03 재고시스템으로 알아보는 동시성이슈 해결방법 (0) 2023.08.02