Cache Strategy

TTL, 무효화, Stampede, Cache-Aside 운영 구조

캐시는 빠르게 만드는 장치이면서 오래된 데이터를 퍼뜨리는 위험원이므로 TTL, 무효화, 동시 재생성, 저장소 선택을 명확히 설계해야 합니다.

01

키 설계

tenant, user scope, query params, version을 포함해 충돌 없는 캐시 키를 만듭니다.

key
02

조회 시도

캐시에 값이 있으면 TTL과 권한 범위가 맞는지 확인하고 반환합니다.

hit
03

원본 조회

miss일 때 DB나 외부 API를 읽고 응답 가능한 형태로 정규화합니다.

miss
04

저장과 만료

데이터 변동성과 허용 stale 시간을 기준으로 TTL을 정해 저장합니다.

ttl
05

무효화

쓰기 작업, 배치 갱신, 관리자 변경 시 관련 키를 삭제하거나 버전을 올립니다.

invalidate
Cache-Aside
앱이 캐시를 직접 관리 가장 흔하고 유연하지만 무효화 누락과 stampede 방지가 필요합니다.
락 또는 singleflight
Write-Through
쓰기와 캐시 갱신 동시 수행 읽기 일관성이 좋아지지만 쓰기 경로가 느려지고 실패 처리가 복잡해집니다.
원자성 고려
Redis
인스턴스 간 공유 캐시 수평 확장 환경에서 좋지만 네트워크 지연과 key eviction 정책을 봐야 합니다.
메모리 모니터링

캐시 장애 예방

권한 범위 사용자별 데이터가 공용 키로 저장되면 심각한 정보 노출이 됩니다.
동시 만료 많은 키가 동시에 만료되면 원본 DB에 부하가 몰릴 수 있습니다.
무효화 기준 쓰기 작업이 어떤 캐시 키를 지워야 하는지 코드와 문서가 일치해야 합니다.