캐싱 전략

김현재·2025년 3월 8일
0

공부

목록 보기
45/54
post-thumbnail

캐시의 목표

캐시의 목표는 성능 향상과 부하 감소.

Cache Aside(Lazy Loading)

Cache Aside 방식은 캐시 히트시 캐시에서 데이터를 불러오며, 캐시 미스 발생 시 원본 데이터베이스에서 조회하여 반환한다. 애플리케이션은 캐시 미스가 발생하면 해당 데이터를 캐시에 적재한다.

장점은 실제 요청된 데이터만 캐시에 저장되므로 불필요한 데이터 캐싱을 줄일 수 있다. 또한 캐시에 문제가 발생해도 애플리케이션은 원본 데이터베이스에 직접 접근할 수 있기 때문에 서비스가 계속 작동할 수 있다.

하지만 단점은 캐시 미스가 발생하는 경우에만 데이터를 캐시에 적재하기 때문에 원본 데이터베이스와 같은 데이터가 아닐 수도 있으며, 초기에는 대량의 캐시미스로 인한 데이터베이스 부하가 발생할 수 있다.

캐시 불일치를 해소할 수 있는 쓰기 전략

캐시 불일치(Cache Incosistency)란 원본 데이터베이스에 저장된 데이터와 캐시에 저장된 데이터가 서로 다른 상황을 의미한다. Write Through, Cache Invalidation, Write Behind 방식으로 캐시 불일치 해소할 수 있다.

Write Through

Write Through방식은 원본 데이터에 대한 변경분이 생긴 경우, 매번 캐시에 해당 데이터를 찾아 함께 변경하는 방식이다. 2번 쓰기가 발생하지만, 캐시는 항상 최신 데이터를 가지고 있다. 캐시는 다시 조회되는 경우에 빛을 발휘한다. 무작정 데이터를 갱신하거나 저장하는 방식은 리소스 낭비가 될 수 있으니 해당 방식을 사용하는 경우, 만료 시간을 사용하는 것이 권장된다.

Cache Invalidation

Cache Invalidation방식은 원본 데이터에 대한 변경분이 생긴 경우, 캐시 데이터를 만료시키는 방식이다. Write Through 방식의 단점을 보완한 방식이며, 캐시에 데이터가 삭제되니 캐시 불일치에 대한 걱정을 하지 않아도 된다.

Write Behind

Write Behind(Write Back) 방식은 원본 데이터에 대한 변경분이 생긴 경우, 캐시를 먼저 업데이트한 이후 추후에 원본 데이터를 변경한다. 디스크 쓰기 작업을 비동기 작업으로 수행하여 성능을 개선할 수 있다. 원본 데이터와 캐시가 일시적으로 일치하지 않을 수 있기 때문에 쓰기 작업이 빈번하며 일시적인 캐시 불일치를 허용하는 서비스에서 유용하게 사용될 수 있다.

profile
Studying Everyday

0개의 댓글