Developer/Cache
Cache 정책
GustavEiffels
2025. 2. 24. 13:30
Cache 전략
Cache 전략이란?
캐시를 읽고, 쓰고, 삭제하는 방식이다. 캐시와 DB를 함께 사용하면 같은 데이터를 서로 다른 두 저장소에 저장하게 되므로,
업데이트가 발생할 때 두 곳에 동시에 적용해야 한다.
하지만 네트워크 문제나 시스템 장애 등으로 인해
특정 저장소에만 데이터가 반영된다면,
두 곳의 데이터가 일치하지 않는 데이터 정합성 문제가 발생한다.
이를 방지하며, 성능을 개선 시킬 수 있는 다양한 Cache 전략에 대해서 알아보자
Cache 읽기 전략
데이터 조회 시, Cache 와 DB 간 조회 방식 및 흐름을 결정하는 방법1. Read-through : 자동 로드 캐시

즉, 찾으려는 데이터가 Cache 에 존재하지 않을 때
DB 로 부터 데이터를 가져와 Cache 에 저장하는 방식 이다.
상품 정보 같이 자주 찾는 데이터를 조회 할 때 사용하기 적합하다.
- 캐시에 찾는 데이터가 없음 ➔ DB로 부터 데이터를 가져와 Cache 에 저장
- 캐시에 찾는 데이터가 존재함 ➔ Cache 에 저장된 데이터를 반환
- Cache 적중률이 증가한다.
- Cache 에서 직접 DB 를 호출하기 때문에, Application 코드가 단순화 된다.
- Cache 서버의 책임이 많아진다.
2. Look-aside : Lazy Loading

존재하지 않으면 DB 에서 조회 한다.
캐시 miss 가 발생하면 어플리케이션에서 DB 로
데이터를 가져와서 Cache 에 저장한다.
위의 Read-through 과 다른 점은 Database 에서
데이터를 가져오는 주체가 Cache 가 아니라 Application 이라는 점이다.
반복적으로 읽기가 많은 호출에 적합하며
Cache 와 DB 가 분리되어 동작하기 때문에 장애 대비 구성이 되어 있다.
Cache 가 다운 되더라도 DB 에서 데이터를 가져올 수 있어
비교적 안정적으로 서비스를 운영할 수 있다.
장점
- 어플리케이션이 Cache 를 제어하여, Cache 정책을 세밀하게 조율 가능
- Cache 서버에 대한 장애 대응 구성 가능
- 반복적인 조회에 적합하다.
- 처음 조회 시, 반드시 Cache Miss 가 일어난다.
- 데이터가 업데이트 되어도, 캐시에 반영되지 않는다.
Cache 쓰기 전략
데이터가 캐시와 데이터 베이스에 반영되는 방식을 결정하는 전략1. Write-through

쓰기 성능은 다소 떨어지는 방식이다.( 동시에 쓰기 작업이 2개 일어나기 때문 )
데이터 유실이 발생하면 안되는 상황에서 적합하다.
장점
- DB 와 Cache 데이터가 항상 일치한다.
- 최신 데이터가 항상 Cache 에 반영이 된다.
- Cache 데이터가 유실되더라도 복구하기 쉽다.
단점
- 쓰기 성능이 저하된다.
- 쓰기만 하고 사용하지 않는데이터도 존재하기 때문에, 리소스 낭비가 발생한다.
2. Write-back

DB에 쓰기 작업을 진행하는 방식
쓰기 작업이 동시에 일어나지 않음으로 빠르며, 자주 사용하는 작업에서 많이 사용한다.
하지만 Cache 에서 DB 로 저장되기 전, Cache 가 날아가면
데이터 유실 문제가 발생할 수 있으며 그만큼 일관성을 유지하기 힘들다.
장점
- 쓰기 작업의 성능 개선이 일어남수정이 많이 일어나는 데이터에 적합하다.
- Cache가 삭제되면 데이터 유실 문제로 이어질 수 있다.DB 와 Cache 간의 데이터를 맞추기 힘들다.
3. Write-around

자주 사용하지 않는 데이터를 캐시에 저장하지 않아 캐시 오염(Cache Pollution)을 방지할 수 있다
이러한 특성 때문에 읽기 성능을 중요하게 생각하는 시스템에서 유용하다.
하지만 Cache Miss가 발생하면 DB에서 데이터를 읽어와야 하므로 읽기 성능이 저하될 수 있다.
또한, Cache Miss가 발생해야만 DB에서 최신 데이터를 가져오기 때문에,
데이터베이스가 업데이트되더라도 캐시에 기존 데이터가 남아 있다면
이전 데이터를 반환할 가능성이 있다.
장점
- 캐시 오염을 방지 할 수 있다.
- 자주 조회되는 핫 데이터가 캐시에 오래 유지됨
- DB 에 바로 작성함으로 쓰기 성능이 좋아짐
- 캐시 메모리에 필요한 데이터만 있기 때문에, 메모리 효율이 좋아진다.
- Cache Miss 발생 시 성능 저하
- Cache 에 데이터가 존재하면 이전 데이터를 반환하는 데이터 정합성 문제
- DB 에 바로 작성함으로 쓰기 성능이 좋아짐
잘 일어나지 않는 데이터에 적합하다.
로그 데이터나, 거래 내역들을 저장하기 적합하다. ( 읽기 보다는 쓰기에 적합 )
글을 마치며
다양한 캐시 정책을 살펴보았다.
특히, 쓰기(Write) 전략과 읽기(Read) 전략에 대해 알아보았으며,
일반적으로 두 전략은 함께 사용된다.
쓰기 전략: Write-Through, Write-Around, Write-Back 등
각 방식의 속도, 정합성, 데이터 최신성에 따른 차이점
읽기 전략: Lazy Loading, Read-Through, Write-Through 방식 등
Cache Miss와 성능 최적화 방법
각 전략은 시스템의 요구사항에 따라 다르게 적용되며,
캐시의 장점을 극대화하기 위해 적절한 조합이 필요하다.
다음으로, 캐시와 Redis의 관계, 그리고 Redis가 캐시로서 어떻게 활용되는지에 대해 살펴보려고 한다.