캐싱 전략: 다중 레이어 성능 최적화

이 글에서는 빠른 페이지 로드를 전 세계적으로 제공하기 위해 각 레이어에서 캐싱을 어떻게 사용하는지 설명합니다.

문제점: 캐시되지 않은 요청은 느립니다

캐싱 없이는 모든 페이지 로드에 다음이 필요합니다:

  • 데이터베이스 쿼리: 제품 데이터, 재고 수준, 가격 조회

  • API 호출: 배송 요금, 결제를 위한 외부 서비스

  • 계산: 가격 계산, 가용성 확인

  • 이미지 로딩: 제품 이미지, 썸네일

캐싱은 결과를 재사용할 수 있도록 저장하여 반복 작업을 제거합니다.

해결책: 다중 레이어 캐싱

다섯 개의 레이어에서 캐싱합니다:

  1. 브라우저 캐시: 사용자의 기기에 정적 에셋 저장
  2. CDN 캐시: CloudFront 엣지 로케이션이 콘텐츠를 전 세계적으로 캐시
  3. 애플리케이션 캐시: Valkey가 자주 접근하는 데이터 저장
  4. 데이터베이스 캐시: Valkey가 데이터베이스 앞에 위치
  5. AI 캐시: DeepSeek이 시스템 프롬프트 캐시

캐싱 레이어

브라우저 캐싱 (CloudFront)

CloudFront는 적절한 TTL로 브라우저 캐싱을 제공합니다:

  • 이미지: 긴 TTL (24-72시간)

  • CSS/JS: 캐시 무효화와 함께 버전 관리됨

  • API 응답: 짧은 TTL 또는 캐시 없음

CDN 캐싱 (CloudFront)

CloudFront는 엣지 로케이션에서 콘텐츠를 캐시합니다:

애플리케이션 캐싱 (Valkey)

Valkey는 메모리 내 캐싱을 제공합니다:

  • 세션: 슬라이딩 만료가 있는 사용자 세션

  • 인기 쿼리: 가장 많이 검색된 용어

  • 자동 완성: 검색 제안

  • 제품 수량: 재고 가용성

  • 문구 매핑: 필터 추출 데이터

데이터베이스 캐싱

Valkey가 데이터베이스 앞에 위치합니다:

  • 제품 데이터: 성능을 위해 캐시됨

  • 부품 비용: 가격 계산을 위해 캐시됨

  • SKU 목록: 제품 목록을 위해 캐시됨

  • 이미지 매니페스트: 이미지 로딩을 위해 캐시됨

AI 캐싱 (DeepSeek)

DeepSeek은 프롬프트 캐싱을 제공합니다:

  • 시스템 프롬프트: 효율성을 위해 캐시됨

  • 캐시 히트: 토큰 사용량 감소

  • 캐시 미스: 새로운 콘텐츠 생성

번역 캐싱

번역 캐싱은 여러 레이어를 사용합니다:

  • Valkey: 메모리에 캐시된 문구 테이블

  • 파일: JSON 파일에 지속적으로 저장된 문구 테이블

  • 폴백: 이전 버전과의 호환성을 위한 레거시 해시 기반 캐시

캐시 무효화

다음과 같은 경우 캐시를 무효화합니다:

  • 제품 업데이트: 제품 캐시 무효화

  • 재고 변경: 재고 수량 캐시 무효화

  • 콘텐츠 업데이트: 페이지 캐시 무효화

  • 번역 업데이트: 번역 캐시 무효화

캐시 구성

Valkey 캐시는 기능별로 구성됩니다:

  • 세션: 사용자 인증 상태

  • 자동 완성: 검색 제안 데이터

  • 인기 쿼리: 자주 검색된 용어

  • 문구 매핑: 필터 추출 데이터

  • 부품 비용: 가격 계산 데이터

요약

저희의 캐싱 전략은 다음을 제공합니다:

  • 다중 레이어: 브라우저, CDN, 애플리케이션, 데이터베이스

  • 효율적: 빠른 메모리 접근을 위한 Valkey

  • 스마트: 비용 절감을 위한 AI 프롬프트 캐싱

  • 신뢰할 수 있음: 다중 폴백 메커니즘