contents

캐싱(Caching) 은 자주 접근하는 데이터의 복사본을 임시 고속 저장소(캐시)에 저장하여, 향후 동일한 데이터 요청을 더 빠르게 처리하는 기술입니다. 캐싱의 주된 목표는 원본 데이터가 저장된 느린 저장소까지 데이터를 가지러 가는 데 필요한 시간과 리소스를 줄여 성능을 향상시키는 것입니다.

필요할 때마다 매번 식료품 가게에 가는 대신, 가장 자주 사용하는 재료들을 부엌 조리대에 보관하는 것과 같습니다.


캐싱이 해결하는 핵심 문제: 속도 차이 ⚡️

컴퓨터는 속도, 크기, 비용이 각기 다른 저장 장치들의 계층 구조로 만들어져 있습니다.

the memory hierarchy pyramid 이미지

CPU와 디스크나 네트워크 같은 느린 저장 장치 사이에는 엄청난 속도 차이가 존재합니다. RAM에서 데이터를 접근하는 것은 SSD보다 100배, SSD에서 데이터를 접근하는 것은 네트워크를 통해 원격 서버에서 가져오는 것보다 1,000배 더 빠를 수 있습니다.

캐싱은 데이터를 필요로 하는 구성 요소 바로 옆에 작고 빠른 "식료품 저장실"을 만들어, 느리고 비용이 많이 드는 "슈퍼마켓"(주 데이터 저장소)까지 가는 횟수를 줄임으로써 이 문제를 해결합니다.


캐싱의 기본 작동 원리

이론적으로 과정은 간단합니다.

  1. 어떤 구성 요소("클라이언트")가 데이터 조각을 요청합니다.

  2. 시스템은 먼저 캐시를 확인하여 해당 데이터의 복사본이 있는지 확인합니다.

    • 캐시 히트(Cache Hit): 데이터가 캐시에서 발견되면 즉시 반환됩니다. 이는 빠르고 성공적인 작업입니다.

    • 캐시 미스(Cache Miss): 데이터가 캐시에서 발견되지 않으면, 시스템은 원본의 느린 데이터 소스(예: 데이터베이스나 외부 API)에서 데이터를 가져와야 합니다. 그런 다음 클라이언트에게 데이터를 반환하고, 다음 사용을 위해 캐시에 복사본을 저장합니다.

캐시의 효율성은 히트율(Hit Ratio) 로 측정됩니다.

히트율=총 요청 수 (히트 + 미스)캐시 히트 수​

높은 히트율(예: 95%)은 캐시가 매우 효과적으로 작동하고 있음을 의미합니다.


캐싱이 사용되는 곳: 캐시의 종류

캐싱은 단일 개념이 아니라, 컴퓨터 시스템의 거의 모든 계층에서 적용되는 기술입니다.


캐시 제거 정책: 공간 만들기 🗑️

캐시는 크기가 제한되어 있습니다. 캐시가 가득 차서 새 항목을 추가해야 할 때, 기존 항목 하나를 제거해야 하는데 이를 제거(evict) 한다고 합니다. 어떤 항목을 내보낼지 결정하는 데 사용되는 알고리즘을 제거 정책이라고 합니다.


캐싱 전략 (디자인 패턴)

애플리케이션이 캐시 및 주 데이터베이스와 상호작용하는 방식은 캐싱 전략에 의해 정의됩니다.


도전 과제 및 고려 사항 🤔

캐싱은 강력하지만 공짜는 아닙니다. 복잡성과 잠재적인 문제를 야기합니다.

references