캐시(Cache) 설계 전략

2025. 7. 31. 11:28·OS

1. 캐시란 무엇인가?

캐시는 자주 조회되지만 자주 변경되지 않는 데이터를 메모리(Redis, Memcached 등)에 저장해 응답 속도 향상과 DB 부하 분산을 도와주는 기술입니다.

 

캐시를 이용하게 되면 반드시 데이터 정합성 문제가 발생합니다. 

데이터 정합성이란 어느 한 데이터가 캐시와 데이터베이스 이 두 곳에서 같은 데이터임에도 불구하고 데이터 정보값이 다른 현상을 말합니다. 따라서 적절한 캐시 읽기/쓰기 전략을 통해 이러한 문제를 해결해야 합니다.

 

2. 캐시 읽기 전략 (Read Strategy)

  -  Look Aside 

  • 절차: 캐시 먼저 조회 → Cache Miss 시 DB에서 조회 (Cache Hit이 발생하면, 그 데이터 전달) → 조회 결과를 캐시에 저장
  • 특징
    • 가장 많이 사용되는 읽기 전략
    • 읽기가 많은 경우 적합
    • Cache Aszie, Lazy Loading 전략이라고도 불림
    • 캐시 장애에도 서비스 지속 가능
    • 개발자가 명시적으로 캐시 저장 로직 작성해야 함

위 전략은 서비스 초기에는 데이터 조회 시 캐시에 데이터가 저장되어 있지 않으므로 지속적으로 Cache miss가 발생하기 때문에 DB 성능 저하가 올 수 있다는 단점이 있습니다. 따라서 DB에 미리 캐시로 데이터를 넣어두는 Cache Warming 과정이 필요합니다.

 

  - Read Through

  • 절차: 캐시에서 직접 DB를 조회하고 캐시 데이터를 업데이트, 읽어온 데이터를 반환
  • 특징
    • 코드 간결
    • Look Aside와 가장 큰 차이는 캐시에 데이터를 저장하는 주체 (Look Aside는 서버가 저장, Read Through는 캐시가 직접 저장)
    • 데이터 조회를 전적으로 캐시에 의지하므로, 캐시 서버에 장애 발생 시 전체 장애로 확산 가능

 

3. 캐시 쓰기 전략 (Write Strategy)

 - Write Through

  • 절차: 캐시에 먼저 쓰고 DB에도 즉시 저장
  • 장점: 캐시와 DB 간 정합성 ↑, 데이터 유실 위험 적음
  • 단점: 쓰기 지연, 불필요한 데이터 캐싱 발생 가능 (따라서 TTL 설정을 잘 해야함)

 

 - Write Behind (Write Back)

  • 절차: 캐시에만 먼저 쓰고, 일정 주기로 DB에 비동기 반영
  • 장점: 응답 속도 빠름, 쓰기 트래픽 분산
  • 단점: 캐시 장애 시 데이터 영구 손실 위험

 

 -  Write Around

  • 절차: 캐시는 건너뛰고 DB에 직접 쓰기
  • 장점: 모든 데이터는 DB에 저장, 쓰기 전략 중 가장 빠름
  • 단점: 캐시 Miss가 자주 발생할 수 있음

 

 

 

 

 

 

 

참고 : https://mclub4.tistory.com/45

 

'OS' 카테고리의 다른 글

[Linux] 리눅스 사용자 권한과 chmod 명령어  (0) 2025.03.09
[운영체제] 가상 메모리  (1) 2024.12.15
[운영체제] 스레드 동기화  (0) 2024.12.07
[운영체제] 컴퓨터 시스템 계층 구조  (3) 2024.09.30
'OS' 카테고리의 다른 글
  • [Linux] 리눅스 사용자 권한과 chmod 명령어
  • [운영체제] 가상 메모리
  • [운영체제] 스레드 동기화
  • [운영체제] 컴퓨터 시스템 계층 구조
seulll
seulll
개인 공부 블로그입니다.
  • seulll
    seulll
    seulll
  • 전체
    오늘
    어제
    • 분류 전체보기 (379) N
      • Coding Test (255) N
        • Programmers (163) N
        • Baekjoon (90)
      • Data Structures & Algorithm.. (15)
      • Development & Projects (53)
        • Python (5)
        • Java (10)
        • Android (5)
        • AI (6)
        • Unity (3)
        • API (5)
      • OS (5)
      • DB (4)
      • Network (7)
      • Data Analysis (14)
      • + (17)
  • 블로그 메뉴

    • 홈
    • 태그
    • 글쓰기
    • 설정
  • 링크

    • GitHub
  • 인기 글

  • 태그

    train_test_split
    바다코끼리
    박스플롯
    kakao map api
    Greedy
    오블완
    모델 성능 평가
    프로그래머스
    백엔드
    백엔드 개발자
    백엔드 개발자 역량
    API
    asterisk
    티스토리챌린지
    그리디 알고리즘
    프렌즈4블록
    confusion matrix
    웹크롤링
    오차행렬
    카카오맵 api
    야근 지수
    2 x n 타일링
    데이터분석
    파이썬
    solving environment
    Boxplot
    카카오맵
    Python
    대입 표현식
    코딩테스트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
seulll
캐시(Cache) 설계 전략
상단으로

티스토리툴바