[241129 TIL]

프로젝트 관리 심화

인메모리 저장소 및 캐싱

  • 캐싱

캐싱

  • 자주 사용되는 데이터를 더 빠른 캐시(Cache)에 저장하는 기법을 부르는 용어

캐시(Cache)

  • Cache는 본래 CPU 내부의 작은 영역으로, 정말 빈번히 접근하게 되는 데이터를 저장해두는 임시 기억 장치
  • 기본적으로 영속성을 위해 파일시스템(디스크)에 저장하고, 빠른 활용을 위해 메모리(RAM)에 저장한다면, 정말 많이 사용되는 휘발성 데이터가 캐시에 저장

캐싱의 필요성

  • 캐시의 목적과 방식을 웹 개발에 적용해, 빈번하게 접근하게 되는 데이터베이스의 데이터를 Redis 등의 인메모리 데이터베이스에 저장을 함으로서 데이터를 조회하는데 걸리는 시간과 자원을 감소시키는 기술
  • 웹 브라우저에서는 자주 바뀌지 않는 이미지 등을 브라우저 캐시에 저장해 페이지 로드를 줄이는 것도 캐싱의 일종이며, 이는 RESTful 설계 원칙 중에서 응답이 캐싱이 가능한지 명시해야 한다는 제약사항으로도 나타남

캐싱 전략

  • 고려 사항
    • 캐시 적중(Cache Hit): 캐시에 접근했을 때 찾고 있는 데이터가 있는 경우를 나타냄
    • 캐시 누락(Cache Miss): 캐시에 접근했을 때 찾고 있는 데이터가 없는 경우를 나타냄
    • 삭제 정책(Eviction Policy): 캐시에 공간이 부족할때 어떻게 공간을 확보하는지에 대한 정책
  • Cache-Aside
    • Lazy Loading이라고도 하며, 데이터를 조회할 때 항상 캐시를 먼저 확인하는 전략
    • 캐시에 데이터가 있으면 캐시에서 데이터를, 없으면 원본에서 데이터를 가져온 뒤 캐시에 저장
    • 필요한 데이터만 캐시에 보관
    • 최초로 조회할 때 캐시를 확인하기 때문에 최초의 요청은 상대적으로 오래 걸림
    • 반드시 원본을 확인하지 않기 때문에, 데이터가 최신이라는 보장이 없음
  • Write-Through
    • 데이터를 작성할때 항상 캐시에 작성하고, 원본에도 작성하는 전략
    • 캐시의 데이터 상태는 항상 최신 데이터임이 보장
    • 자주 사용하지 않는 데이터도 캐시에 중복해서 작성하기 때문에, 시간이 오래 걸림
  • Write-Behind
    • 캐시에만 데이터를 작성하고, 일정 주기로 원본을 갱신하는 방식
    • 쓰기가 잦은 상황에 데이터베이스의 부하를 줄일 수 있음
    • 캐시의 데이터가 원본에 적용되기 전 문제가 발생하면 데이터 소실의 위험성이 존재

캐싱 전략(Cache-Aside, Write-Through, Write-Behind)


'[내일배움캠프] AI 를 활용한 백엔드 아카데미 심화 과정 > TIL' 카테고리의 다른 글

MSA 개인 프로젝트 (2)  (0) 2024.12.06
MSA 개인 프로젝트 (1)  (1) 2024.12.06
Redis 명령어  (2) 2024.11.28
Docker  (0) 2024.11.27
QueryDSL  (0) 2024.11.26

+ Recent posts