본문 바로가기

이론

캐시 (Cache Consistency Management VS TTL(Time To Live))

목차

     

    백엔드에서 캐시 전략의 목표

    • 성능 향상
    • 리소스 최적화
    • 응답 시간 단축
    • 부하 분산
    • 확장성 개선 ( 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