백엔드 커리큘럼 심화: Negative Caching과 Cache Penetration, 없는 데이터가 DB를 때리지 않게 하는 법
존재하지 않는 키, 삭제된 리소스, 무작위 ID 조회가 캐시를 우회해 DB를 반복 타격하는 Cache Penetration 문제를 Negative Caching, Bloom Filter, TTL, rate limit 기준으로 설계하는 실무 플레이북입니다.
존재하지 않는 키, 삭제된 리소스, 무작위 ID 조회가 캐시를 우회해 DB를 반복 타격하는 Cache Penetration 문제를 Negative Caching, Bloom Filter, TTL, rate limit 기준으로 설계하는 실무 플레이북입니다.
QA 2차 소견 5건 — boundWriter cross-pool 오염, extended cache 파라미터 무시, Pool.Close outstanding borrow, writer CB reload 누락, watcher startup race — 을 분석하고 수정한다.
QA 3차 소견 6건 — fallback 경로 cross-pool 오염, extended cache 포맷 충돌, 깨진 연결 Release, Pool.Acquire close race, boundWriter discard 누락, circuit breaker 일관성 — 을 분석하고 수정한다.
QA 3차 리포트 5건 — AST 분류가 라우팅에 미반영, 캐시 테이블 무효화 no-op, 중복 파싱 5회/요청, 헬스체크 순차 지연, splitStatements 달러쿼팅 미처리 — 의 원인과 수정 과정을 정리한다.
QA 4차 리포트 5건 — 캐시 키 네임스페이스 부재로 JSON/wire 응답 충돌, 읽기 캐시 무효화 실종, balancer 상태 초기화, HTTP 서버 lifecycle 미관리, AST 재파싱 — 의 원인과 수정 과정을 정리한다.
QA 과정에서 발견된 4건의 보안 취약점 — 캐시 충돌로 인한 개인정보 유출, 무한 재귀, 방화벽 우회, 힌트 주입 — 을 분석하고 수정한다.
LRU 캐시를 직접 구현하고, 쓰기 시 테이블 기반으로 캐시를 자동 무효화하는 전략을 만든다.
시스템 설계 인터뷰의 단골 문제, URL 단축 서비스를 직접 설계하고 구현하며 인덱스와 캐시를 이해합니다.
@Cacheable/@CachePut/@CacheEvict 사용법과 Redis/Caffeine 연동 패턴
Key 생성, 충돌 방지, 캐시/DB 설계, 확장성·가용성 고려사항 정리