(Caching)캐싱 전략

SEUNGJUN·2023년 12월 18일

Caching이란?

캐싱은 데이터나 계산 결과를 임시로 저장해두고, 이를 나중에 다시 사용함으로써 성능을 향상시키는 기술이다. 이는 주로 반복적으로 사용되는 데이터나 연산의 재활용을 통해 시스템의 응답 시간을 줄이고 자원을 효율적으로 활용하는 데 사용된다.

Caching의 동작원리?

1. 요청 및 응답

  • 클라이언트나 애플리케이션이 특정 데이터 또는 연산의 결과를 요청한다.
    시스템은 먼저 해당 데이터 또는 연산의 결과가 캐시에 있는지 확인한다.

2. 캐시 미스(Cache Miss) 또는 캐시 히트(Cache Hit)

  • 캐시 미스(Cache Miss): 요청한 데이터나 연산의 결과가 캐시에 없는 경우 시스템은 본래 소스(예: 메인 메모리, 데이터베이스)에서 데이터를 가져와 캐시에 저장하고, 동시에 클라이언트에게 결과를 반환한다.

  • 캐시 히트(Cache Hit): 요청한 데이터나 연산의 결과가 캐시에 있는 경우 시스템은 캐시에서 빠르게 데이터를 읽어와 클라이언트에게 결과를 반환한다.

3. 캐시 갱신 및 교체

  • 캐시 갱신(Cache Update): 캐시의 내용은 주기적으로 갱신되거나 데이터의 변경이 감지될 때 갱신될 수 있다.

  • 캐시 교체(Cache Replacement): 캐시가 가득 찼을 때 새로운 데이터가 들어오면, 어떤 데이터를 캐시에서 삭제할지를 결정하는 과정이다. 이때 사용되는 교체 알고리즘에 따라 캐시의 효율성이 달라진다.

4. 유효성 검사 및 만료

  • 유효성 검사(Validation): 캐시된 데이터의 유효성을 검사하여 데이터가 여전히 최신인지 확인한다.

  • 만료(Expiration): 일정 시간이 지나거나 데이터의 유효 기간이 만료된 경우, 캐시된 데이터는 더 이상 사용되지 않고 새로운 데이터로 갱신된다.

5.적절한 캐싱 전략 적용

  • 시스템은 특정 데이터나 연산에 대해 어떤 캐싱 전략을 사용할지 결정한다. 이는 애플리케이션의 특성, 데이터의 특성, 및 성능 요구에 따라 다르게 설정된다.

6. 캐시 키와 태그

  • 캐시 키(Cache Key): 캐시에서 데이터를 식별하는 데 사용되는 값. 일반적으로 요청된 데이터나 연산을 고유하게 식별할 수 있는 값이다.

  • 태그(Tag): 캐시된 데이터에 부여되는 메타데이터로, 유효성 검사 등에 사용될 수 있다.

Caching 전략

캐싱 전략은 어떻게 데이터를 캐시에 저장하고 관리할지에 대한 계획과 규칙을 말한다. 효과적인 캐싱 전략은 성능 향상과 자원 효율성을 극대화하기 위해 고려되어야 한다. 다양한 애플리케이션 및 시스템에서는 다양한 캐싱 전략이 사용될 수 있다.

1. 최소 최근 사용 (LRU, Least Recently Used)

  • 개념: 가장 오랫동안 사용되지 않은 캐시 항목을 제거하는 전략
  • 구현: 최근에 사용된 항목에 대한 타임스탬프를 유지하고, 캐시가 꽉 찬 경우 가장 오래 전에 사용된 항목을 제거한다.

2. 가장 자주 사용되는 항목 (LFU, Least Frequently Used)

  • 개념: 가장 적게 사용된 캐시 항목을 제거하는 전략
  • 구현: 각 항목의 사용 횟수를 추적하고, 캐시가 꽉 찬 경우 가장 적게 사용된 항목을 제거한다.

3. 선입선출 (FIFO, First-In-First-Out):

  • 개념: 가장 먼저 캐시에 들어온 항목을 제거하는 전략입니다.
  • 구현: 큐 자료구조를 사용하여 캐시에 들어온 순서대로 관리하고, 캐시가 꽉 찬 경우 가장 먼저 들어온 항목을 제거합니다.

4. 캐시 애드 알고리즘 (CAR, Cache-Adaptive Replacement)

  • 개념: 동적으로 캐시 크기를 조절하며 효율적으로 캐시를 관리하는 전략
  • 구현: 애플리케이션의 요구 사항에 따라 캐시 크기를 동적으로 조절하거나, 데이터의 특성에 따라 최적의 교체 알고리즘을 선택한다.

5. 자주 발생하는 항목 (Frequent Items)

  • 개념: 빈도가 높은 항목을 캐시에 보관하여 자주 발생하는 요청에 대한 응답 속도를 향상시키는 전략
  • 구현: 항목의 빈도를 주기적으로 업데이트하고, 빈도가 높은 항목을 캐시에 유한다.

6. 시간 지역성과 공간 지역성 활용

  • 개념: 시간 지역성(Temporal Locality)과 공간 지역성(Spatial Locality)을 고려하여 데이터의 일부를 캐시에 유지
  • 구현: 최근에 사용된 데이터나 주변에 있는 데이터를 캐시에 보관하여 지역성을 활용한다.

7. 웹 개발에서의 HTTP 캐싱

  • 개념: 웹 브라우저와 서버 간에 전송되는 리소스(이미지, 스타일시트, 스크립트 등)를 저장하고 재사용하여 네트워크 대역폭을 절약하고 로딩 시간을 단축하는 전략
  • 구현: HTTP 헤더에 있는 캐시 제어 지시문을 사용하여 브라우저가 리소스를 캐싱하고 재사용하도록 지시한다.
profile
RECORD DEVELOPER

0개의 댓글