Local Cache vs Global Cache

아투·2026년 4월 21일

Operation System

목록 보기
8/22
post-thumbnail

로컬 캐시 (Local Cache)

  • 정의

    • 애플리케이션 서버 내부 메모리(Heap 영역)에 데이터를 저장하는 방식이다.
    • 특정 서버 인스턴스에만 종속된 캐시이다.
    • 네트워크 통신이 필요 없다. CPU가 메모리에서 바로 꺼내 쓰기 때문에 속도가 극도로 빠르다.
  • 사용 사례

    • 설정 값(Config): 한 번 로드하면 잘 바뀌지 않는 정보.
    • 코드성 데이터: 국가 코드, 카테고리 목록 등 변경 빈도가 매우 낮은 데이터.
    • 단일 인스턴스 서비스: 서버가 한 대뿐인 초기 프로젝트.
  • 대표 기술

    • Caffeine Cache
    • Ehcache

Global Cache

  • 정의

    • 여러 대의 서버가 공통으로 접속하는 별도의 캐시 서버를 두는 방식이다.
    • 애플리케이션 외부(Redis, Memcached 등)에 데이터를 두고 여러 서버가 공유한다.
    • 데이터를 가져오려면 네트워크를 타야 하므로 Local Cache보다는 아주 미세하게 느리다. 하지만 데이터 공유가 가능하다는 막강한 장점이 있다.
  • 사용 사례

    • 세션 정보

      • 로그인한 사용자가 A 서버에 접속했다가 B 서버로 가도 로그인이 유지되어야 할 때.
    • 분산 락(Distributed Lock)

      • 여러 서버에서 동시에 같은 데이터를 수정하지 못하도록 제어할 때.
    • 공유 랭킹/카운트

      • 실시간 인기 검색어나 조회수 합산.
  • 대표 기술

    • Redis
    • Memcached.

주의사항

  • 현업에서 이 두 가지를 선택할 때 가장 주의해야 할 점은 데이터의 오염이다.

  • Local Cache의 함정

    • 서버가 3대(A, B, C)일 때, A 서버에서 공지사항 제목을 수정해서 로컬 캐시를 바꿨다고 쳐보자.
    • 그런데 B, C 서버는 아직 옛날 데이터를 들고 있다면? 사용자는 새로고침할 때마다 제목이 바뀌는 문제가 발생한다.
    • 그래서 로컬 캐시는 변경이 거의 없는 데이터에만 써야 한다.
  • Global Cache의 병목

    • 모든 서버가 하나의 Redis 서버만 바라보기 때문에, Redis가 죽으면 시스템 전체가 마비된다.
    • 이를 방지하기 위해 Sentinel이나 Cluster 같은 고가용성(HA) 구성이 필수적이다.
  • 메모리 관리

    • 로컬 캐시에 데이터를 무분별하게 담으면 OutOfMemoryError로 서버가 뻗어버릴 수 있다.
    • 반드시 TTL(만료 시간)과 최대 개수를 설정해야 합니다

2단계 캐싱 전략 (Multi-level Cache)

  • 실제 대규모 트래픽을 처리할 때는 이 둘을 섞어 쓰기도 한다.
  • 자주 쓰이는 데이터는 Local Cache에 두어 속도를 극한으로 끌어올리고, - Local에 없는 데이터는 Global Cache(Redis)에서 가져오며, 거기에도 없으면 마지막에 DB를 조회하는 방식이다.

0개의 댓글