-
도입이유: 성능, 비용(??? 캐싱에도 비용이 든다.)
1. Cloud Front - CDN
2. DAX (DynamoDB AX)
3. Elastic cache
무엇을 캐시해야 하나?
- 잘 안바뀌는 데이터
- 정적인 데이터
캐싱의 이점
- app 속도 향상
- DB 쿼리 부담 완화
- 응답 지연 시간 감소
캐싱 유형
클라이언트 측
서버측
AWS 캐싱
CloudFront
CDN( 콘텐츠 전송 네트워크)
엣지 로케이션 라우팅
-캐시 가능한 콘텐츠 유형
정적 콘텐츠(보통) :이미지, 동영상
동적(특이케이스) : n/w 성능을 위해 사용, 관리 용이성
콘텐츠 만료 방법
1. Time To Live(TTL)
- 기간 고정(만료기간)
- 사용자가 설정
- CloudFront에서 오리진으로 GET 요청에 If-Modified-Since 헤더 사용
2. 객체 이름 변경
- av1.jpg -> av2.jpg 로 변경
- 새 이름이 생기면 새로 고침이 수행됨
3. 객체 무효화
- 마지막 수단: 매우 비효율적이고 비용이 많이 듦
웹티어 캐싱
상태 정보를 위해 DynamoDB를 사용하는 경우
사용사례: 온라인 게임 사이트
문제: 더 빠른 세션 검색
데이터 베이스 캐싱
- 리드가 많아서 부하 줄이기 위해
- 비용 줄이기 위해
DyanmoDB Accelerator (DAX)
- ms 초 단위 지원
- 탁월한 성능
- 높은 확장성
- 완전 관리형
- DynamoDB와 API 호환
- 보안
ElastiCache
- 인 메모리 데이터 스토어
- Redis(고급 데이터) , Memcached(simple 데이터) 지원
레이지 로딩
- 캐시 미스시 DB에서 읽어온다.
- 최종 일관성 유지
라이트 스루
- 캐시에 쓰면서 DB에 쓴다.
- 최신 데이터 유지
- 단점: 두번써야된다, 자주 덮어쓴다.
TTL 추가
- TTL 만료되면 가져간다