Skip to content

4. 캐싱(Caching) 전략


1. 캐싱 전략이란?

  • 캐싱 전략은 최근 웹 서비스 환경에서 시스템 성능 향상을 위해 가장 중요한 기술이다.
  • 캐시는 메모리를 사용함으로 디스크 기반 데이터베이스보다 훨씬 빠르게 데이터를 반환할 수 있다.
  • 서비스 목적에 따른 여러가지 캐싱 전략이 있다.


2. 캐싱 전략 종류

1) Cache Aside (Lazy Loading)

001


  • Cache Aside는 캐시를 옆에 두고 필요할 때만 데이터를 캐시에 로드하는 전략이다.
  • Cache Aside 전략은 다음과 같이 2가지 상황이 있을 때 동작하는 과정이 달라진다.


1] 사용자가 요청했을 때, 캐시 저장소에는 아무 데이터도 없는 상황

  • 애플리케이션은 먼저 캐시 저장소에 데이터가 있는지 조회하지만 데이터가 없다.
  • 애플리케이션은 데이터베이스에서 데이터를 조회하고 사용자에게 제공한다.
  • 애플리케이션은 데이터베이스에서 가져왔던 데이터를 캐시 저장소에 저장한다.

2] 사용자가 요청했을 때, 이미 캐시 저장소에 데이터가 있는 상황

  • 애플리케이션은 먼저 캐시 저장소에 데이터가 있는 조회하고, 캐시 저장소에 저장되어 있는 데이터를 제공한다.


  • Cache Aside 전략의 장점은 다음과 같다.


1] 읽기가 많은 워크로드에 적합하다

2] Redis가 가장 많이 쓰이며 캐시 분리를 사용했기 때문에 캐시 오류에 대해 탄력적이므로, 캐시 클러스터가 다운되어도 시스템 전체의 오류로 가지 않는다


  • Cache Aside 전략의 단점은 다음과 같다.


1] 캐시에 없는 데이터인 경우, 더 오랜 시간이 걸리게 된다.


2) Read-Through

002


  • Read-Through는 캐시와 데이터베이스를 일렬로 배치하는 전략이다.
  • 캐시 미스가 발생하면 데이터베이스에서 누락된 데이터를 로드하고 캐시를 채우고 나서 애플리케이션에 반환한다.
  • Cache Aside 전략과의 차이점은 애플리케이션이 캐시를 채우는 역할을 하지 않는다는 것이다.


  • Read-Through 전략의 장점은 다음과 같다.


(1) 읽기가 많은 워크로드에 적합하다.


  • Read-Through 전략의 단점은 다음과 같다.


1] 데이터를 처음 요청하면 항상 캐시 누락이 발생하여, 그에 따른 패널티가 발생한다.


3) Write-Through

003


  • Write-Through는 Read-Through와 반대로 구성되어 있는 전략이다.
  • 데이터를 데이터베이스에 작성할 때마다 캐시에 데이터를 추가하거나 업데이트한다.
  • 이로 인해 캐시의 데이터는 항상 최신 상태로 유지할 수 있다.


  • Write-Through 전략의 장점은 다음과 같다.


1] 데이터가 항상 동기화되어 있다.


  • Write-Through 전략의 단점은 다음과 같다.


1] 쓰지 않는 데이터도 캐시에 저장되기 때문에 리소스가 낭비된다.

2] 쓰기 지연 시간이 증가한다.


  • 여러 장점과 단점이 있지만, Write-Through 전략과 Read-Through 전략을 함께 사용하면 Read-Through 전략의 모든 이점을 얻을 수 있으며, 데이터 일관성 보장도 얻을 수 있다.
  • 이에 대한 예로 AWS의 DynamoDB Accelerator(DAX)가 있다.


004


  • DAX는 읽기/쓰기 캐시의 좋은 예이다.
  • DAX는 DynamDB 및 애플리케이션과 인라인으로 배치된다.
  • DynamoDB에 대한 읽기 및 쓰기는 DAX를 통해 수행할 수 있다.


4) Write-Around

  • 데이터는 데이터베이스에 직접 기록되며, 읽은 데이터만 캐시에 저장된다.
  • Write-Around 전략은 Read-Through 전략과 결합될 수 있으며, Cache-Aside 전략과도 결합될 수 있다.
  • 데이터가 한 번 쓰여지고, 자주 읽히지 않은 상황에서 좋은 성능을 제공한다.
  • 예를 들어, 실시간 로그 또는 채팅방 메시지가 있다.


5) Write-Back (Write-Behind)

005


  • 애플리케이션은 캐시에 먼저 데이터를 쓰고, 약간의 지연 후에 데이터를 한 번에 데이터베이스에 쓴다.


  • Write-Back 전략의 장점은 다음과 같다.


1] 쓰기가 많은 워크로드에 적합하다.

2] Read-Through 전략과 결합하여 가장 최근에 업데이트되고 액세스된 데이터를 항 상 캐시에서 사용할 수 있는 혼합 워크로드에 적합하다.

3] 데이터베이스에 대한 전체 쓰기를 줄일 수 있어, 해당 비용을 감소시킬 수 있다.


  • Write-Back 전략의 단점은 다음과 같다.


1] 위와 반대의 경우 적합하지 않다.

2] 일부 개발자는 Cache-Aside 전략과 Write-Back 전략 모두 Redis를 사용하는데, 가장 큰 단점은 캐시에서 오류가 발생하면 데이터베이스에 쓰기 전에 데이터를 영구 소실할 수 있다는 것이다.


References