반응형
매일메일을 통한
하루하루 CS 공부하기
Cache Aside (Lazy Loading) 방식
Cache hit 시 캐시에서 데이터를 불러오며, Cache miss 시 원본 DB에서 조회하여 반환한다
애플리케이션은 Cache miss가 발생하면 해당 데이터를 캐시에 적재한다.
- 장점
- 실제 요청된 데이터만 캐시에 저장되므로 불필요한 데이터 캐싱을 줄일 수 있다.
- 캐시에 문제가 발생해도 애플리케이션은 원본 데이터에 직접 접근할 수 있기 때문에 서비스가 계속 작동할 수 있다.
- 단점
- Cache miss가 발생하는 경우에만 데이터를 캐시에 적재하기 때문에, 원본 데이터와 캐시가 일치하지 않는 Cache Inconsistency가 발생할 수 있다.
- 초기에는 대량의 캐시 미스로 인해 DB 부하 발생 가능
Cache Inconsistency를 해소하기 위한 쓰기 전략
Cache Inconsistency란, 위에서 설명했듯 원본 DB에 저장된 데이터와 캐시에 저장된 데이터가 일치하지 않는 상황을 의미한다.
1. Write Through
원본 데이터에 대한 변경분이 생긴 경우, 매번 캐시에 해당 데이터를 찾아 함께 변경
2번의 쓰기가 발생하지만, 캐시는 항상 최신 데이터를 갖는다.
무작정 데이터를 갱신하거나 저장하는 방식은 리소스 낭비가 될 수 있으니, expiration time을 함께 사용하는 것이 좋다.
2. Cache Invalidation
원본 데이터에 대한 변경분이 생긴 경우, 캐시 데이터를 만료시키는 것.
-> Write Through의 단점 보완
3. Write Back
원본 데이터에 대한 변경분이 생긴 경우, 캐시를 먼저 업데이트 한 이후 원본 데이터 변경
Disk Write 작업을 비동기 작업으로 수행하여 성능을 개선할 수 있다.
원본 데이터와 캐시가 일시적으로 일치하지 않을 수 있있기 때문에 쓰기 작업이 빈번하며 일시적인 캐시 불일치를 허용하는 서비스에서 유용하게 사용될 수 있다.
반응형
'Back-end' 카테고리의 다른 글
[DataBase] CAP 정리란? (0) | 2025.02.12 |
---|---|
[Back-End] 캐시 스탬피드 현상이란? (0) | 2025.02.10 |
[DataBase] Transaction - ACID란? (0) | 2025.02.03 |
[Back-End] 로드밸런싱 톺아보기 (0) | 2025.01.30 |
[Back-End] DB Replication이란 무엇인가. (0) | 2025.01.24 |