로컬 캐시 vs 분산 캐시
비교
| 구분 | 로컬 (인프로세스) | 분산 (Redis 등) |
|---|---|---|
| 조회 지연 | 메모리 접근 수준 | 네트워크 왕복 포함 |
| 용량 | 프로세스 힙 한도 | 수평 확장 가능 |
| 정합성 | 인스턴스마다 값이 다를 수 있음 | 모든 인스턴스가 같은 값 |
| 재시작 | 매번 비워짐 | 유지됨 |
| 운영 비용 | 추가 인프라 없음 | 별도 서버와 운영 필요 |
2단계 캐시
요청 -> [L1 로컬] 미스 -> [L2 Redis] 미스 -> [DB]
짧은 TTL 긴 TTL
실무 포인트
- 로컬 캐시의 진짜 문제는 무효화다. 인스턴스가 10대면 지울 곳도 10군데다
- 그래서 로컬 TTL은 짧게 두고 불일치가 남는 시간을 스스로 제한한다
- 거의 변하지 않는 설정과 코드 테이블은 로컬 캐시가 압도적으로 유리하다
- 항목 수 상한을 반드시 설정한다. 무제한 로컬 캐시는 힙을 늘려 GC 지연을 만든다
- 무효화 전파가 필요하면 Pub/Sub 알림이나 서버 보조 클라이언트 캐싱(트래킹)을 쓴다