[241129 TIL]
프로젝트 관리 심화
인메모리 저장소 및 캐싱
- 캐싱
캐싱
- 자주 사용되는 데이터를 더 빠른 캐시(Cache)에 저장하는 기법을 부르는 용어
캐시(Cache)
- Cache는 본래 CPU 내부의 작은 영역으로, 정말 빈번히 접근하게 되는 데이터를 저장해두는 임시 기억 장치
- 기본적으로 영속성을 위해 파일시스템(디스크)에 저장하고, 빠른 활용을 위해 메모리(RAM)에 저장한다면, 정말 많이 사용되는 휘발성 데이터가 캐시에 저장
캐싱의 필요성
- 캐시의 목적과 방식을 웹 개발에 적용해, 빈번하게 접근하게 되는 데이터베이스의 데이터를 Redis 등의 인메모리 데이터베이스에 저장을 함으로서 데이터를 조회하는데 걸리는 시간과 자원을 감소시키는 기술
- 웹 브라우저에서는 자주 바뀌지 않는 이미지 등을 브라우저 캐시에 저장해 페이지 로드를 줄이는 것도 캐싱의 일종이며, 이는 RESTful 설계 원칙 중에서 응답이 캐싱이 가능한지 명시해야 한다는 제약사항으로도 나타남
캐싱 전략
- 고려 사항
- 캐시 적중(Cache Hit): 캐시에 접근했을 때 찾고 있는 데이터가 있는 경우를 나타냄
- 캐시 누락(Cache Miss): 캐시에 접근했을 때 찾고 있는 데이터가 없는 경우를 나타냄
- 삭제 정책(Eviction Policy): 캐시에 공간이 부족할때 어떻게 공간을 확보하는지에 대한 정책
- Cache-Aside
- Lazy Loading이라고도 하며, 데이터를 조회할 때 항상 캐시를 먼저 확인하는 전략
- 캐시에 데이터가 있으면 캐시에서 데이터를, 없으면 원본에서 데이터를 가져온 뒤 캐시에 저장
- 필요한 데이터만 캐시에 보관
- 최초로 조회할 때 캐시를 확인하기 때문에 최초의 요청은 상대적으로 오래 걸림
- 반드시 원본을 확인하지 않기 때문에, 데이터가 최신이라는 보장이 없음
- 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 |