캐싱
캐싱(Caching)
데이터의 복제본 혹은 연산 결과를 임시로 저장하여 요청의 응답을 효율적으로 하는 기술
자주 사용되는 복잡한 연산의 결과 혹은 자주 찾는 데이터를 효율적으로 전달하는 것이 목적
장점
요청에 따라 빠르게 데이터를 전달할 수 있음
복잡한 연산 리소스/ 부하를 줄일 수 있음
단점
일관성의 유지가 어려움
아키텍처의 복잡도 증가
비용 증가




조회 서버와 Database 모두에 접근을 줄일 수 있다.
캐싱 주요 개념
원본 : 캐싱할 데이터 혹은 연산 결과를 제공하는 주체
Cache Hit : 요청에 따라 캐시에 저장된 데이터로 응답할 수 있는 상황
캐싱에서 지향할 상황이며 원본에 요청 없이 응답 가능
Cache Miss : 요청에 따른 데이터를 캐시에서 찾을 수 없는 상황
별도로 원본에 요청 혹은 다른 방식으로 응답 필요
캐시 만료(InValidation/Eviction) : 캐시를 삭제하는 행위
TTL(Time To Live) : 캐시가 얼마만큼 살아있는지를 나타내는 시간 단위
캐싱 방식
캐시에 원본 데이터를 채우는 다양한 정책
Lazy Loading : 요청이 있을 때만 캐시에 원본데이터를 채우는 정책
불필요한 요청이 없으나 최초 데이터 로딩이 필요함

Eager Loading : 미리 캐시에 데이터를 채워두고 요청을 기다리는 정책
데이터가 항상 준비되어 있으나 모든 데이터를 채우기에 불필요한 캐시 용량이 낭비될 수 있고 최초 로딩이 매우 큰 리소스가 필요

Write Through : 데이터가 변경되거나 저장되는 시점에 원본과 캐시에 동시에 저장
데이터의 일관성이 항상 보장되지만 쓰기 과정이 복잡해지고 느려질 수 있음
Write Back : 데이터를 캐시에 먼저 쓰고 후에 원본에 업데이트
쓰기가 빠르고 간단하지만 원본에 도달 전 유실될 가능성이 있다.


캐시 만료 방식
TTL (Time To Live) : 일정 시간이 지나면 만료
항상 일정 시간 후 데이터가 만료되고 갱신할 수 있으나 모든 데이터를 항상 갱신 필요
Least Recently Used : 가장 사용시점이 먼 캐싱 데이터부터 만료
Least Frequently Used : 가장 덜 사용된 데이터부터 만료
시간을 고려하지 않기에 현재 자주 사용되지 않는 데이터도 같이 남겨둘 수 있다.
사용 사례
Content Delivery Network(CDN)
ElastiCache( Redis/Memcached)
웹 브라우저
RAM
Last updated