etc.

Caching(캐싱)이란?

snorlax1106 2025. 2. 28. 14:32

Caching이란?

캐싱(Caching)은 자주 사용하는 데이터를 미리 저장해 두고 필요할 때 빠르게 제공하는 기술이다. 이를 통해 성능을 향상시키고 시스템 부하를 줄일 수 있다.

 

캐싱의 목적

  • 성능 향상: 데이터베이스나 API 호출 없이 빠르게 데이터를 가져올 수 있다.
  • 부하 감소: 동일한 요청을 여러 번 처리하는 대신, 캐시에 저장된 데이터를 활용하여 서버 및 데이터베이스 부담을 줄인다.
  • 응답 속도 개선: 네트워크 지연을 줄일 수 있다.

 

캐싱의 종류

  1. 위치에 따른 분류
    • 클라이언트 캐시: 웹 브라우저(예: HTTP 캐시), 모바일 앱 등에서 데이터 저장한다.
    • 서버 캐시: 애플리케이션 서버, 웹 서버에서 데이터 캐싱
    • 데이터베이스 캐시: 쿼리 결과를 캐싱하여 DB 부하를 줄인다.
    • CDN(Cache Delivery Network): 전 세계 여러 서버에 콘텐츠를 분산하여 빠르게 제공한다.
  2. 저장 방식에 따른 분류
    • 메모리 캐시: Redis, Memcached 같은 인메모리 DB를 사용하여 저장한다. 속도가 빠르다는 장점이 있다.
    • 디스크 캐시: 파일 시스템이나 DB의 특정 테이블을 캐시로 활용하는 방법이다. 상대적으로 느리다.

 

캐싱 전략

  1. TTL(Time-To-Live, 만료 시간 설정)
    • 일정 시간이 지나면 캐시된 데이터를 삭제하여 최신 상태 유지
  2. LRU(Least Recently Used, 가장 오래된 데이터 삭제)
    • 가장 오랫동안 사용되지 않은 데이터를 삭제하는 방식
  3. LFU(Least Frequently Used, 가장 사용 빈도가 낮은 데이터 삭제)
    • 사용 빈도가 낮은 데이터를 삭제하여 공간 확보
  4. Write-Through
    • 데이터를 캐시에 저장하면서 DB에도 즉시 반영
  5. Write-Back (Write-Behind)
  • 데이터를 캐시에 먼저 저장한 후, 일정 시간이 지나거나 특정 조건을 만족하면 DB에 반영
  1. Cache-Aside (Lazy Loading)
  • 필요한 데이터만 캐시에 저장하고, 만료되면 다시 DB에서 조회하여 저장

 

대표적인 캐싱 도구 및 기술

  • Redis: 인메모리 데이터 저장소, 빠른 읽기/쓰기 가능하다.
  • Memcached: 분산 메모리 캐싱 시스템, 단순한 키-값 저장소이다.
  • Ehcache: Java 기반의 캐시 라이브러리(Spring에서도 사용 가능).
  • Spring Cache: @Cacheable 어노테이션을 활용한 캐싱 기능 지원한다.

 

캐싱을 적용할 때 고려할 점

  • 데이터 최신성 유지 문제: 캐시에 오래된 데이터가 남아있을 가능성이 있다.
  • 메모리 사용 증가: 캐시는 빠른 속도를 위해 메모리를 사용하므로, 용량 제한을 고려해야 한다.
  • 적절한 만료 정책 필요: 너무 자주 삭제하면 캐시 효율이 떨어지고, 너무 오래 유지하면 최신 데이터 반영이 어려울 수 있다.