CACHE-ASIDE OPERATIONS

운영 캐시는 cache-aside에 네 개의 보호 장치를 붙인다

hit는 빠르게 반환하고, miss는 원본에서 채운다. TTL, 무효화, stampede 방지, 관측 지표가 붙어야 운영 가능한 구조가 된다.

TTL + event delete시간 만료와 쓰기 삭제를 같이 둔다.
single flight동시에 몰린 miss를 한 번의 원본 조회로 묶는다.

Request side

1. key 계산요청 조건과 권한 범위를 같은 규칙으로 만든다.
2. cache lookuphit면 바로 응답하고 원본을 건드리지 않는다.
3. miss lock같은 key의 동시 miss는 대표 요청만 원본을 읽는다.

Cache-aside core

HITRedis 또는 memory에서 즉시 반환
MISSlock 획득 후 원본 조회
SET + TTL결과를 저장하고 stale window를 제한
WRITE DELETE쓰기 성공 뒤 관련 key 제거
fallback캐시 장애 시 API 장애로 번지지 않게 원본 보호와 degrade 정책을 둔다.

Origin side

DB / 외부 APImiss와 refresh 때만 접근한다.
write model수정 성공 이벤트가 key 삭제의 기준이 된다.
cost limit원본 부하가 커지면 캐시가 병목을 숨기는지 본다.
key충돌 없이 재현 가능한가
ttl데이터 변경 주기와 맞는가
stampede동시 miss를 제한하는가
metrichit, miss, stale을 보는가