로컬 캐시 vs 분산 캐시

Jun_k·2026년 4월 19일

CS

목록 보기
6/18

데이터의 위치

로컬 캐시 (Local Cache)

  • 애플리케이션 서버 내부 메모리(Heap)에 데이터를 저장한다.
    해당 애플리케이션 서버 인스턴스 내에서만 접근이 가능하다.

  • Java 예시: Caffeine Cache, Ehcache, HashMap

  • 특징: 네트워크를 지연이 없으니 속도가 매우 빠르고,
    서버 메모리 용량에 한정되어 있기에 확정성은 제한적이고,
    데이터의 일관성이 낮은 편이다.

분산 캐시 (Distributed Cache)

  • 애플리케이션 서버와 분리된 별도의 캐시 전용 서버에 데이터를 저장한다.
    여러 대의 서버 인스턴스가 네트워크를 통해 동일한 데이터를 공유한다.

  • 예시: Redis, Memcached

  • 특징: 네트워크 I/O 발생하니 속도는 상대적으로 느리지만
    모든 서버가 동일 데이터를 참조하니 일관성이 높고,
    확장성이 우수하다.

왜 로컬 캐시가 더 빠른가?

  • 로컬 캐시는 데이터를 In-Process로 관리한다.
    즉, 데이터 저장소와 로직 수행 주체가 동일한 메모리 공간을 사용하므로 데이터 직렬화/역직렬화(Serialization) 과정과 네트워크 전송 단계가 생략되기 때문입니다.

  • 직렬화/역직렬화가 생략되는 이유는 Redis 같은 분산 캐시는 Java와
    다른 동네에 사는 별도의 프로그램이다.
    자바 입장에서는 나는 자바 객체라는 고유한 언어를 쓴다고 하고
    네트워크/외부 저장소에서는 "나는 그런 복잡한 건 모르겠고,
    내가 이해하기 쉽게 0과 1로 된 단순한 byte 형태의 데이터로 줘"
    라고 말하고, 자바 객체를 0과 1의 덩어리로 바꾸는 직렬화 과정이 필요하다.

    하지만 로컬 캐시는 자바 앱 내에서 쓰이는 것이기에 그냥 그 형태로
    온전히 가져가서 이용할 수 있는 것이고, 직렬화 해야하는 이유가 전혀 없다.

왜 분산 캐시는 데이터 일관성이 유리한가?

  • 여러 서버(Instance A, B, C)가
    하나의 중앙 집중형 저장소(Redis 등)를 바라보기 때문이다.
    데이터 수정 시 한 곳만 업데이트하면 모든 서버가 즉시 반영된 값을 읽을 수 있다.

비유를 통한 설명

로컬 캐시: "스마트폰 사진첩"

  • 상황: 내가 찍은 사진을 내 폰 '갤러리' 앱에서 열어보는 것과 같다.

  • 장점: 비행기 모드여도 상관없다.
    누르자마자 즉시 뜨며, 데이터(네트워크)를 전혀 쓰지 않는다.

  • 단점: 내가 내 폰에서 사진을 보정(데이터 수정)해도,
    친구 폰에 있는 똑같은 사진은 바뀌지 않는다.
    친구는 내가 사진을 고쳤는지조차 알 수 없다.

분산 캐시: "클라우드"

  • 상황: 사진을 클라우드에 올려두고 확인하는 것과 같다.

  • 장점: 내가 사진 설명을 수정하면, 친구가 자기 폰으로
    접속해서 봐도 수정된 설명이 보인다.
    클라우드에 접속한 모두가 항상 같은 사진을 보게 된다.

  • 단점: 사진을 보려면 인터넷(네트워크) 연결이 필요하다.
    사진첩에서 보는 것보다 로딩 속도가 미세하게나마 느릴 수밖에 없다.


실무 선택 기준

로컬 캐시를 선택해야 하는 경우

  • 단일 서버 환경: 서버가 한 대뿐이라면 분산 캐시의 필요성이 낮습니다.

  • 극도의 성능이 필요: 네트워크 지연시간(Latency)조차 허용되지 않는 초고속 응답이 필요한 경우.

  • 데이터 일관성이 중요하지 않은 경우: 날씨 정보, 공지사항 등 자주 바뀌지 않거나 서버 간 데이터가 잠시 달라도 서비스에 지장이 없는 경우.

분산 캐시를 선택해야 하는 경우

  • 다중 서버(MSA) 환경: 여러 인스턴스가 동일한 세션 정보나
    공유 데이터를 참조해야 할 때.

  • 데이터 무결성이 중요한 경우: 재고 수량, 포인트 결제 등
    모든 서버가 반드시 최신 상태를 공유해야 할 때.

  • 대용량 데이터 저장: 서버 메모리(Heap)에 담기에는
    데이터 양이 너무 많아 별도의 저장 공간이 필요할 때.

보충 설명

  • 실무에서는 성능과 일관성을 모두 잡기 위해
    2차 캐시 전략(L1: 로컬, L2: 분산)을 사용하기도 한다.

    자주 사용하는 데이터는 로컬에 두어 속도를 높이고,
    로컬에 없으면 분산 캐시에서 찾아오는 방식이다.
    다만, 이 경우 로컬 캐시 간의 동기화를 어떻게 처리할지가 설계의 핵심이 된다.

profile
개발을 즐겨보자.

0개의 댓글