(Caching)캐싱 전략

SEUNGJUN·2023년 12월 18일
0

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개의 댓글