[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