Skip to main content
효과적인 캐싱을 위해서는 데이터 특성에 맞는 전략을 선택해야 합니다. 이 가이드에서는 다양한 캐시 전략과 활용 방법을 알아봅니다.

TTL (Time To Live) 전략

TTL이란?

TTL은 캐시가 유효한 시간을 의미합니다. TTL이 지나면 캐시가 만료되어 새로운 데이터를 가져옵니다.

데이터 특성별 TTL 설정

변경이 거의 없는 데이터
TTL: "forever", "1d", "1w"

TTL 단위

Grace Period (Stale-While-Revalidate)

Grace란?

Grace는 TTL 만료 후에도 오래된 캐시(Stale)를 반환하면서 백그라운드에서 갱신하는 전략입니다.

작동 방식

Grace 사용 시기

Grace 사용 ✅

무거운 계산/쿼리
  • 집계 통계
  • 복잡한 Join 쿼리
  • 외부 API 호출
  • 대용량 데이터 처리

Grace 불필요 ❌

빠른 조회
  • 단순 SELECT
  • 인덱스 조회
  • 캐시된 데이터

Grace 실전 예제

Grace vs 긴 TTL

Grace 전략:
  • 대부분 신선한 데이터 (5분 이내)
  • 만료 시 Stale 즉시 반환 (빠름)
  • 백그라운드 갱신
긴 TTL:
  • 최대 1시간 오래된 데이터
  • 만료 시 새로 계산 (느림)
권장: 무거운 작업은 Grace 사용

Namespace 전략

Namespace란?

Namespace는 캐시를 논리적으로 분리하는 기능입니다.

사용자별 격리

장점:
  • 사용자 A의 변경이 사용자 B에 영향 없음
  • 선택적 무효화 가능

멀티 테넌트

기능별 격리

캐시 패턴

1. Cache-Aside (Lazy Loading)

가장 기본적인 패턴: 필요할 때 조회하고 캐싱
@cache 데코레이터가 이 패턴을 자동 구현

2. Write-Through

쓰기 시 캐시도 갱신: 데이터 변경과 동시에 캐시 업데이트
장점: 캐시 항상 최신 상태 단점: 쓰기 성능 저하

3. Write-Behind (Write-Back)

쓰기를 캐시에 먼저: 캐시 업데이트 후 비동기로 DB 저장
장점: 빠른 응답 단점: 구현 복잡, 데이터 유실 가능

4. Refresh-Ahead

만료 전 미리 갱신: TTL이 거의 끝날 때 미리 새 데이터 준비
Grace period가 이 역할을 수행

조합 전략

레이어별 TTL

중요도별 전략

항상 정확해야 하는 데이터

시간대별 전략

성능 최적화

캐시 워밍

서버 시작 시 미리 캐시를 채웁니다.

배치 캐싱

여러 항목을 한 번에 캐싱합니다.

선택적 캐싱

조건에 따라 캐싱 여부를 결정합니다.

주의사항

캐시 전략 선택 시 주의사항:
  1. TTL이 너무 길면: 오래된 데이터 제공
  2. TTL이 너무 짧으면: 캐시 효과 감소
  3. Grace 오남용: 빠른 쿼리에 Grace 불필요
  4. Namespace 남용: 너무 많은 namespace는 관리 어려움

전략 요약표

다음 단계

캐시 설정

Stores와 Drivers 설정하기

@cache 데코레이터

메서드에 캐시 적용하기

캐시 무효화

Tag 기반 캐시 무효화