캐싱 설계 전략

enjoy89·2024년 3월 10일
1
post-custom-banner

🗒️ Cache 읽기 전략

1. Look Aside 패턴

  • 데이터를 조회할 때, 우선 캐시에 저장된 데이터가 있는지 우선적으로 확인하는 전략
  • 만일 캐시에 데이터가 없으면 DB에서 조회
  • 반복적인 읽기가 많은 호출에 적합
  • 캐시와 DB가 분리되어 가용되기 때문에 캐시 장애 대비 구성이 되어 있음 → 만일 redis가 다운 되더라도, DB에서 데이터를 가져올 수 있어 서비스 자체에는 문제 X → 단, 캐시에 붙어 있던 connection이 많았다면, redis가 다운된 순간, 순간적으로 DB에 몰려서 부하 발생

2. Read Through 패턴

  • 캐시에서만 읽어오는 전략 (inline cache)
  • 데이터 조회를 전적으로 캐시에만 의지하므로, redis가 다운될 경우 서비스 이용에 차질이 생길 수 있음


📝 Cache쓰기 전략

1. Write Back 패턴 (Write Behind)

  • 데이터를 저장할 때 DB에 바로 쿼리하지 않고, 캐시에 모아서 일정 주기 배치 작업을 통해 DB 반영
  • 캐시에 모아두었다가 DB에 쓰기 때문에 쓰기 쿼리 회수 비용과 부하를 줄일 수 있음
  • 데이터 정합성 확보 가능
  • Write가 빈번하면서 Read를 하는데 많은 양의 Resource가 소모되는 서비스에 적합
  • 캐시에서 오류가 발생하면 데이터를 소실할 가능성 있음

2. Write Through 패턴

  • 데이터를 DB와 캐시에 동시에 저장하는 전략으로, DB와 캐시는 항상 동기화 되어 있어, 캐시의 데이터는 항상 최신 상태로 유지
  • 데이터의 일관성을 유지
  • 데이터 유실이 발생하면 안 되는 상황에 적합
  • 매 요청마다 두 번의 Write가 발생하게 됨으로써, 서비스에서 성능 이슈 발생할 가능성 높음

3. Write Around 패턴

  • 모든 데이터는 DB에 저장하고, 캐시는 갱신하지 않음
  • 캐시 miss가 발생하는 경우에만 DB와 캐시에도 데이터를 저장
  • 따라서 캐시와 DB 내의 데이터가 다를 수 있음 (데이터 불일치)

Reference

https://inpa.tistory.com/entry/REDIS-%F0%9F%93%9A-%EC%BA%90%EC%8B%9CCache-%EC%84%A4%EA%B3%84-%EC%A0%84%EB%9E%B5-%EC%A7%80%EC%B9%A8-%EC%B4%9D%EC%A0%95%EB%A6%AC

profile
Backend Developer 💻 😺
post-custom-banner

0개의 댓글