캐싱 전략: 다중 레이어 성능 최적화
이 글에서는 빠른 페이지 로드를 전 세계적으로 제공하기 위해 각 레이어에서 캐싱을 어떻게 사용하는지 설명합니다.
문제점: 캐시되지 않은 요청은 느립니다
캐싱 없이는 모든 페이지 로드에 다음이 필요합니다:
-
데이터베이스 쿼리: 제품 데이터, 재고 수준, 가격 조회
-
API 호출: 배송 요금, 결제를 위한 외부 서비스
-
계산: 가격 계산, 가용성 확인
-
이미지 로딩: 제품 이미지, 썸네일
캐싱은 결과를 재사용할 수 있도록 저장하여 반복 작업을 제거합니다.
해결책: 다중 레이어 캐싱
다섯 개의 레이어에서 캐싱합니다:
- 브라우저 캐시: 사용자의 기기에 정적 에셋 저장
- CDN 캐시: CloudFront 엣지 로케이션이 콘텐츠를 전 세계적으로 캐시
- 애플리케이션 캐시: Valkey가 자주 접근하는 데이터 저장
- 데이터베이스 캐시: Valkey가 데이터베이스 앞에 위치
- 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 프롬프트 캐싱
-
신뢰할 수 있음: 다중 폴백 메커니즘