캐싱 전략은 웹 서비스 환경에서 시스템 성능 향상을 기대할 수 있는 중요한 기술이다.
일반적으로 캐시(cache)는 메모리(RAM)를 사용하기 때문에 데이터베이스 보다 훨씬 빠르게 데이터를 응답할 수 있어 이용자에게 빠르게 서비스를 제공할 수 있다.
따라서 어느 종류의 데이터를 캐시에 저장할지, 얼만큼 데이터를 캐시에 저장할지, 얼마동안 오래된 데이터를 캐시에서 제거하는지에 대한 '지침 전략' 을 숙지할 필요가 있다.
크게 캐시 읽기 전략(Read Cache Strategy) / 캐시 쓰기 전략(Write Cache Strategy) 가 있다
캐시 읽기 전략 (Read Cache Strategy)
1. Look Aside 패턴
- 데이터를 찾을때 우선 캐시에 저장된 데이터가 있는지 우선적으로 확인하는 전략. 만일 캐시에 데이터가 없으면 DB에서 조회함
- 반복적인 읽기가 많은 호출에 적합.
- 캐시와 DB가 분리되어 가용되기 때문에 원하는 데이터만 별도로 구성하여 캐시에 저장
- 반복적으로 동일 쿼리를 수행하는 서비스에 적합한 아키텍처이다.
1. Read Through 패턴
- 캐시에서만 데이터를 읽어오는 전략
- 전체적으로 속도가 느림
- 데이터 조회를 전적으로 캐시에만 의지
- 읽기가 많은 워크로드에 적합
캐시 쓰기 전략 (Write Cache Strategy)
1. Write Back 패턴
- 캐시와 DB 동기화를 비동기하기 때문에 동기화 과정이 생략
- 캐시에 모아놨다가 DB에 쓰기 때문에 쓰기 쿼리 회수 비용과 부하를 줄일 수 있음
- Write가 빈번하면서 Read를 하는데 많은 양의 Resource가 소모되는 서비스에 적합
- 자주 사용되지 않는 불필요한 리소스 저장
2. Write Through 패턴
- 데이터베이스와 Cache에 동시에 데이터를 저장하는 전략
- 캐시의 데이터는 항상 최신 상태로 유지
- 데이터 유실이 발생하면 안 되는 상황에 적합
- 자주 사용되지 않는 불필요한 리소스 저장
- 매 요청마다 두번의 Write가 발생하게 됨으로써 빈번한 생성, 수정이 발생하는 서비스에서는 성능 이슈 발생
3. Write Around 패턴
- 모든 데이터는 DB에 저장 (캐시를 갱신하지 않음)
- Cache miss가 발생하는 경우에만 DB와 캐시에도 데이터를 저장
- 따라서 캐시와 DB 내의 데이터가 다를 수 있음 (데이터 불일치)
반응형
'기타' 카테고리의 다른 글
구글 계정 로그인 구현 (OAuth) (0) | 2023.06.22 |
---|---|
웹팩(WebPack)이란? (0) | 2023.05.22 |
Module 이란? (0) | 2023.02.28 |
Bundle 이란? About Bundle and WebPack (0) | 2023.02.28 |
네이버 DEVIEW 2023 - SSR 환경에서의 Micro-Frontend (0) | 2023.02.28 |