**캐싱(caching)**은 자주 접근하는 데이터를 빠른 계층(흔히 메모리)에 저장하여, 더 느린 소스에서 다시 계산하거나 다시 가져오지 않고도 빠르게 검색할 수 있게 합니다. 성능과 확장성을 개선하는 가장 중요한 기법 중 하나입니다.
캐싱이 하는 일
캐싱은 빠른 위치에 데이터 사본을 저장하여 반복 접근을 빠르게 함:
→ 느린 소스(데이터베이스, API, 계산)에서 다시 계산하거나 다시 가져오는 대신,
빠른 캐시에서 제공
→ 극적으로 빠름 (cache hit) + 느린 백엔드의 부하 감소
→ 약간의 staleness/복잡성을 큰 성능·확장성 이득과 맞바꿈.
캐싱이 사용되는 곳 (계층)
브라우저 / 클라이언트 캐시 → 사용자 기기에 캐시
CDN → 사용자 근처 edge 위치에 정적 콘텐츠 캐시
애플리케이션 캐시 (예: Redis/Memcached) → DB 쿼리 결과, 계산된 데이터, 세션 캐시
데이터베이스 캐시 → 쿼리/결과 캐싱
→ 캐싱은 여러 계층에서 일어날 수 있음 (성능을 위한 심층 방어)
캐싱의 이점과 과제
✓ 성능 → 훨씬 빠른 응답 (메모리 vs 디스크/네트워크/계산)
✓ 확장성 → 데이터베이스/백엔드 부하 감소 → 더 많이 처리
✓ 비용과 latency 감소
⚠️ 캐시 무효화(invalidation) → 캐시된 데이터를 최신으로 유지(소스가 변경될 때)하는 것이 어려운 부분:
→ TTL(시간 후 만료) + 무효화(변경 시 갱신/제거)
→ stale 데이터가 주요 위험 → 신선도 vs 성능의 균형
⚠️ 복잡성 추가; cache miss; 무엇을/언제 캐시할지
