cache design

캐시는 key, TTL, 무효화, 장애 대응을 같이 설계한다

저장소를 고르기 전에 같은 요청을 어떻게 이름 붙이고, 얼마나 오래 믿고, 언제 지우며, 미스가 몰릴 때 어떻게 버틸지 정합니다.

Key

요청 조건, 사용자 범위, 버전을 같은 이름 규칙에 넣습니다.

TTL

데이터 변경 주기보다 짧게 시작하고 hit ratio로 보정합니다.

Invalidation

쓰기 성공 뒤 어떤 key를 지울지 로그로 추적 가능해야 합니다.

Fallback

miss 폭주, 원본 장애, stale 응답 허용선을 먼저 정합니다.

항목 결정 질문 나빠지는 신호 운영 기준
KEY 같은 요청이 항상 같은 이름인가 권한·버전이 섞여 잘못된 값 반환 scope와 version을 key에 포함
TTL 변경 주기보다 짧은가 stale window가 업무 허용치를 넘음 짧은 TTL에서 시작해 보정
DEL 쓰기 후 관련 key를 찾을 수 있는가 수정 직후 예전 값이 계속 보임 무효화 이벤트와 재시도 로그
SAFE miss 폭주와 원본 장애를 막는가 miss latency와 DB pool wait 증가 single flight, rate limit, stale 허용선
핵심: 자주 읽고 덜 바뀌면 TTL 후보, 자주 바뀌거나 중요하면 무효화 이벤트와 짧은 TTL을 함께 둔다.