[CS] 캐싱 전략

2024. 11. 21. 23:33·CS
728x90
728x90

캐싱 (Caching)

  - 자주 사용하는 데이터를 미리 저장해 두고, 필요할 때 빠르게 가져와서 사용하는 기술

  [장점]

     i. (적절하게 사용할 경우) 성능 향상

     ii. 리소스 절약

        : 네트워크 트래픽 감소 & 데이터베이스 부하 감소

     iii. 지연 시간 응답 → 사용자 경험 개선

  [고려사항]

     i. 캐시된 데이터와 원본 데이터 간 불일치가 발생할 수 있음

     ii. 유효성 관리 방법

        · TTL로 데이터 갱신 or 수동으로 캐시 무효화

     iii. 불필요한 캐싱은 메모리 낭비로 이어질 수 있음

     iv. 캐싱 처리를 하는 게 적합한 상황인지 판단해야 함

        · 읽기 작업이 많은 경우 캐싱이 유용함

        · 쓰기 작업이 많은 경우 일관성 문제가 생길 가능성이 높음

 

 


캐싱 전략

# Write-Through 캐싱

  - 데이터를 캐시에 쓰는 동시에, 원본 저장소(DB)에도 즉시 기록함

  - 추천 대상 : 실시간 데이터 일관성이 중요한 경우

  [장점]

     · 캐시에 항상 최신 데이터가 유지됨 → 데이터 일관성 보장

  [단점]

     · 쓰기 작업 시 속도가 느릴 수 있음

 

# Write-Back 캐싱

  - 데이터를 캐시에 쓰고, 원본 저장소에는 특정 조건일 때에만 기록함

     ex) 캐시 만료, 시스템 종료 등

  - 추천 대상 : 데이터 변경 빈도가 높고, 일관성이 덜 중요한 경우

  [장점]

     · 쓰기 작업이 빠름

     · 원본 저장소 접근 횟수 감소 → 부하 감소

  [단점]

     · 캐시 손상 시 데이터가 유실될 수 있음


# Read-Through 캐싱

  - 데이터 요청 시 캐시를 먼저 확인하고, 캐시에 없으면 원본 저장소에서 데이터를 먼저 가져와 캐시에 저장함

  - 추천 대상 : 읽기 작업이 빈번한 경우

  [장점]

     · 자주 조회되는 데이터인 경우 빠른 응답 가능

     · 캐시에 없는 데이터만 원본에서 가져오기 때문에 효율적임

  [단점]

     · 캐시에 없을 경우 초기 요청이 느릴 수 있음

 

# Lazy-Loading 캐싱

  - 데이터를 요청할 때에만 캐시에 저장함

  - 추천 대상 : 요청이 간헐적으로 발생하는 경우

  [장점]

     · 초기 캐시 로드 시간이 필요 없음

     · 필요한 데이터만 캐싱 처리 → 메모리 효율 UP

  [단점]

     · 해당 데이터를 처음으로 요청하는 경우 응답이 느릴 수 있음

     · 자주 사용되지 않는 데이터는 캐싱되지 않음

 

# Time-to-Live (TTL)

  - 캐시된 데이터의 유효 기간을 설정하여, 일정 시간이 지나면 무효화시킴

  - 실시간 데이터가 필요 없는 경우

  [장점]

     · 오래된 데이터를 자동으로 갱신할 수 있음

     · 메모리 관리 용이

  [단점]

     · 유효 기간을 적절하게 설정하지 않는 경우 문제가 생길 수 있음

        - TTL이 너무 짧을 때 : 갱신 빈도 증가 → 원본 저장소 부담

        - TTL이 너무 길 때 : 캐시된 데이터와 원본 데이터 간 불일치 가능성

 

# LRU (Least Recently Used)

  - 가장 오래 사용되지 않은 캐시 데이터를 삭제함

 

# LFU (Least Frequently Used)

  - 가장 적게 사용된 캐시 데이터를 삭제함

 

 

320x100
반응형
저작자표시 비영리 변경금지 (새창열림)

'CS' 카테고리의 다른 글

[CS] 캐싱 유형  (0) 2024.11.24
[CS] 백엔드 개발자 로드맵 따라가기 (진행중)  (0) 2024.11.23
[CS] 인증 (Authentication)  (0) 2024.11.20
[CS] API (Application Programming Interface)  (5) 2024.11.19
[CS] 브라우저 (Browser)  (1) 2024.11.18
'CS' 카테고리의 다른 글
  • [CS] 캐싱 유형
  • [CS] 백엔드 개발자 로드맵 따라가기 (진행중)
  • [CS] 인증 (Authentication)
  • [CS] API (Application Programming Interface)
스응
스응
    반응형
    250x250
  • 스응
    이서영의 개발 블로그
    스응
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (385)
      • Java (134)
        • Base (54)
        • Spring Boot (37)
        • JSP (16)
        • Swing (GUI) (20)
        • Design Pattern (7)
      • C# (13)
      • PHP (18)
      • SQL (27)
      • Vue.js (9)
      • Tailwind CSS (4)
      • TypeScript (7)
      • HTML & CSS (27)
      • JavaScript (26)
      • jQuery (10)
      • Android (3)
      • - - - - - - - - - - - - - - (0)
      • Hotkeys (5)
      • CS (30)
      • IT Notes (13)
      • Error Notes (17)
      • Team Project (24)
        • Airlines Web Project (12)
        • University Web Project (6)
        • Strikers 1945 GUI Project (6)
      • My Project (18)
        • Library Web Project (8)
        • Pet Shopping Mall GUI Project (10)
      • etc. (0)
  • 블로그 메뉴

    • Home
    • Write
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    SEO
    SWAGGER
    Codeigniter
    js
    SQL
    java
    티스토리챌린지
    Wordpress
    jQuery
    http
    zapier
    errorNote
    jsp
    CSS
    git
    typeScript
    면접
    SpringBoot
    tailwindcss
    cs
    HTML
    php
    Hotkeys
    Android
    Swing
    개발일지
    C#
    vuejs
    오블완
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
스응
[CS] 캐싱 전략
상단으로

티스토리툴바