본문 바로가기
Kotlin Spring/Kotlin Spring 강의 내용

8) Spring 캐시 (2)분산 캐시란?

by Bill Lab 2025. 9. 2.
728x90

1. 로컬 캐시의 한계

    1) 데이터 불일치(Inconsistency)
         - 서버 A, B, C가 각각 로컬 캐시를 들고 있을 경우, A에서 데이터가 갱신되더라도 B, C 캐시는 여전히 옛 데이터를 유지
         - 분산 환경에서는 캐시 갱신 전파 불가능

 

    2) 메모리 한계
         - 캐시 데이터가 많아질수록 JVM Heap / 애플리케이션 메모리 부족(OutOfMemoryError 위험)
         - GC 부하 증가(애플리케이션 성능 저하로 까지 이어질 수 있음)

    3) 확장성(Scalability) 부족
         - 서버가 늘어날수록 각 서버가 동일한 데이터를 중복 캐싱(메모리 낭비)
         - 서버 수평 확장(Scale-out) 환경에서 데이터 일관성 관리 어려움

    4) 장애 복구 문제
         - 서버 재시작 시 캐시 데이터 초기화 필요(DB 부하 증가, Cold Start 문제)
         - 분산 캐시(Redis, Memcached)와 달리 데이터 지속성 없음

    5) 캐시 전략 제약
         - 캐시 무효화(Invalidation) 전략 한계(글로벌 invalidation 불가, TTL(Time To Live) 기반으로만 갱신 가능)
         - 분산환경에서 전체 서버의 특정 키만 정확히 갱신하기 어려움(갱신하지 못한 서버는 Stale Data 발생)

2. 분산 캐시란?

    1) 정의
         - 여러 서버(애플리케이션 인스턴스)가 공유하는 외부 캐시 저장소
         - 캐시 데이터를 중앙 집중식으로 관리하여 서버 간 일관성(Inconsistency) 문제 해결
         - 대표적 툴: Redis, Memcached

    2) 동작 방식
         - 애플리케이션은 캐시 서버(분산 캐시)에 네트워크 요청을 통해 데이터를 읽고/쓰고 처리

         - 모든 애플리케이션 서버가 같은 캐시 서버를 바라봄

           (특정 키 갱신 시 → 전체 서버에서 동일한 최신 데이터 조회 가능)

"데이터 일관성 보장 + 서버 간 공유"


3. 분산 캐시의 장점

    1) 데이터 일관성 확보: 서버 수가 늘어나도 동일한 데이터 사용
    2) 확장성(Scalability): 캐시 서버 클러스터링으로 용량/처리량 확장
    3) 장애 복구 용이: 서버 재시작 시에도 캐시 서버에 데이터 남아 있음 (Warm cache 가능)
    4) 고급 기능: Pub/Sub, Keyspace Notifications, TTL 관리 등

4. 분산 캐시의 한계

    1) 네트워크 지연: 로컬 캐시보다는 느림
    2) 운영 복잡도: Redis/Memcached 서버 클러스터 운영 필요
    3) 추가 비용 발생: 별도 인프라(메모리 서버) 필요

 

"분산캐시 서버로서 Redis 를 세팅하고 연동해보자!"




        

728x90