목차
백엔드에서 캐시 전략의 목표
- 성능 향상
- 리소스 최적화
- 응답 시간 단축
- 부하 분산
- 확장성 개선 ( ex) 분산 캐시 시스템)
캐시 일관성 관리 전략 (Cache Consistency Management)
@Cacheable
- 주로 읽기 작업에서 사용되며, 메서드 결과를 캐시
- 같은 입력값 호출 시, 이미 캐시된 결과를 반환하여 성능을 최적화
@CacheEvict
- 쓰기 작업(데이터가 변경되거나 업데이트)에서 사용
- 해당 데이터를 삭제하거나 무효화 → 변경된 데이터가 캐시에 남지 않음
적합한 상황
① 데이터의 변경 빈도가 높을 때
② 데이터 일관성이 중요한 경우
③ 데이터 변경시 캐시 무효화가 필요한 경우
고려해야할 사항
① 데이터 일관성 유지, 데이터 변경 시 캐시를 어떻게 갱신할지 결정 (즉시 갱신 vs 배경 갱신)
② 동시성 문제, 여러 요청이 동시에 캐시를 갱신하려 할 때 발생하는 경쟁 상태 방지 방법 필요
③ 캐시 미스 관리: 적절한 갱신 및 캐시 스프레딩 전략 필요
④ 성능 최적화: 캐시 갱신 방식에 따라 성능에 미치는 영향 고려 (성능 vs 일관성)
즉시 갱신(Wrkite-through)
- 개념: 데이터 변경 시, 변경 사항을 즉시 캐시와 데이터베이스 모두에 동시에 반영
- 장점:데이터 일관성 보장, 동기화 상태 유지
- 단점: 성능 저하
배경 갱신(Write-behind)
- 개념: 데이터 변경 시, 변경 사항을 우선 캐시에 적용하고 나중에 비동기적으로 데이터베이스에 갱신
- 장점: 데이터베이스 부하↓, 캐시 갱신이 빠르게 이루어져 성능이 중요할 때 유리
- 단점: 캐시와 데이터베이스의 불일치 발생 가능성
TTL (Time-to-Live) 전략
- 캐시 항목의 유효 기간을 설정, 일정 시간이 지나면 캐시 데이터 자동 만료
- 일반적으로 캐시 라이브러리(ex) Redis)에서 제공
적합한 상황
① 데이터 변경 빈도가 낮을 때
② 일정 시간이 지나면 자연스럽게 최신 데이터로 교체될 때
③ 캐시의 만료를 통해 주기적인 데이터 갱신이 필요할 때
고려해야할 사항
- TTL 값 설정
- 캐시 미스로 인한 시스템 부하 관리
- 갱신 방식 (즉시 갱신, 지연 갱신)
'이론' 카테고리의 다른 글
이벤트 기반 아키텍처(EDA)와 메시지 브로커 (0) | 2024.11.20 |
---|---|
분산 시스템과 CAP 이론 (0) | 2024.11.19 |
API Gateway (0) | 2024.11.17 |
HTTP vs WebSocket (0) | 2024.11.16 |
Java의 GC 방식, GC 튜닝 (1) | 2024.11.15 |