캐싱

캐싱(Caching)

  • 데이터의 복제본 혹은 연산 결과를 임시로 저장하여 요청의 응답을 효율적으로 하는 기술

    • 자주 사용되는 복잡한 연산의 결과 혹은 자주 찾는 데이터를 효율적으로 전달하는 것이 목적

  • 장점

    • 요청에 따라 빠르게 데이터를 전달할 수 있음

    • 복잡한 연산 리소스/ 부하를 줄일 수 있음

  • 단점

    • 일관성의 유지가 어려움

    • 아키텍처의 복잡도 증가

    • 비용 증가

조회 서버와 Database 모두에 접근을 줄일 수 있다.

캐싱 주요 개념

  • 원본 : 캐싱할 데이터 혹은 연산 결과를 제공하는 주체

  • Cache Hit : 요청에 따라 캐시에 저장된 데이터로 응답할 수 있는 상황

    • 캐싱에서 지향할 상황이며 원본에 요청 없이 응답 가능

  • Cache Miss : 요청에 따른 데이터를 캐시에서 찾을 수 없는 상황

    • 별도로 원본에 요청 혹은 다른 방식으로 응답 필요

  • 캐시 만료(InValidation/Eviction) : 캐시를 삭제하는 행위

    • TTL(Time To Live) : 캐시가 얼마만큼 살아있는지를 나타내는 시간 단위

캐싱 방식

  • 캐시에 원본 데이터를 채우는 다양한 정책

    • Lazy Loading : 요청이 있을 때만 캐시에 원본데이터를 채우는 정책

      • 불필요한 요청이 없으나 최초 데이터 로딩이 필요함

  • Eager Loading : 미리 캐시에 데이터를 채워두고 요청을 기다리는 정책

    • 데이터가 항상 준비되어 있으나 모든 데이터를 채우기에 불필요한 캐시 용량이 낭비될 수 있고 최초 로딩이 매우 큰 리소스가 필요

  • Write Through : 데이터가 변경되거나 저장되는 시점에 원본과 캐시에 동시에 저장

    • 데이터의 일관성이 항상 보장되지만 쓰기 과정이 복잡해지고 느려질 수 있음

  • Write Back : 데이터를 캐시에 먼저 쓰고 후에 원본에 업데이트

    • 쓰기가 빠르고 간단하지만 원본에 도달 전 유실될 가능성이 있다.

캐시 만료 방식

  • TTL (Time To Live) : 일정 시간이 지나면 만료

    • 항상 일정 시간 후 데이터가 만료되고 갱신할 수 있으나 모든 데이터를 항상 갱신 필요

  • Least Recently Used : 가장 사용시점이 먼 캐싱 데이터부터 만료

  • Least Frequently Used : 가장 덜 사용된 데이터부터 만료

    • 시간을 고려하지 않기에 현재 자주 사용되지 않는 데이터도 같이 남겨둘 수 있다.

사용 사례

  • Content Delivery Network(CDN)

  • ElastiCache( Redis/Memcached)

  • 웹 브라우저

  • RAM

Last updated