로컬 캐시(Local Cache)
- 애플리케이션 서버 혹은 인스턴스 각각의 내부(메모리, 디스크)에 데이터를 저장하는 방식.
- 각 서버가 자신만의 캐시를 관리하며, 비용 없이 글로벌 캐시에 비해 빠른 접근이 가능하다.
- 네트워크 통신이 필요 없이 처리되므로 응답 속도가 매우 빠름.
- 추가 인프라 비용이 없고, 구현이 간단하다.
- 단, 서버가 여러 대일 경우 서버 간 캐시 데이터가 서로 다를 수 있다. (불일치 문제)
- 서버 재시작/장애 시 캐시 데이터가 손실된다. (휘발성)
분산 캐시(Distributed Cache)
- 여러 서버가 네트워크를 통해 하나의 공유 캐시(예: Redis, Memcached)에 접근해 데이터를 저장하고 조회하는 방식.
- 서버 수가 많아져도 모든 인스턴스가 동일한 데이터를 공유하기 때문에 데이터 일관성을 유지할 수 있으며, 시스템 확장성이 뛰어남.
- 서버를 재시작 해도 캐시 데이터 유지가 가능하다.
- 네트워크를 통한 접근이 필요해 일부 오버헤드가 발생할 수 있다. (네트워크 I/O 발생 -> 로컬 캐시보다 느림)
- 외부 의존성으로, 캐시 서버가 죽으면 전체 서비스에 영향을 줄 수 있다.
- 인프라 구축 비용 및 운영 복잡도 상승
실무에서의 선택 기준
데이터 일관성
- 중요하다면: 분산 캐시 (여러 서버에서 데이터를 공유해야 하는 서비스)
- 중요하지 않다/단일 서버 환경: 로컬 캐시 사용
속도
시스템 구조
- 대규모, 확장성 고려: 분산 캐시 필수
- 소규모, 단일 서비스: 로컬 캐시가 관리 비용 면에서 효율적
데이터 성격
- 변경이 적고, 자주 조회되는 단순 데이터: 로컬 캐시 적합
- 잦은 변경, 여러 인스턴스에서 동시에 접근: 분산 캐시 적합
비용과 복잡성
- 비용 및 관리 복잡성 최소화 필요: 로컬 캐시(추가 인프라 불필요)
- 비용/관리보다 확장성과 일관성이 우선: 분산 캐시
혼합 전략
- 실제로는 로컬+분산 캐시를 동시에 사용해 브이(N)캐시(Locally Cache, Miss 시 분산 캐시 조회)처럼 하이브리드로 운영하기도 함!
- 로컬 캐시는 쉬운 구축, 빠른 속도에 강점을 두고 있으나, 데이터 일관성이 필요한 환경에선 부적합
- 분산 캐시는 확장성 및 데이터 일관성 유지에 적합하지만, 네트워크 I/O로 로컬 캐시보다 느리고, 추가 인프라 및 관리 비용이 듦.

변경이 잘 안일어나는데 조회는 자주 일어나는 데이터 (카디널리티가 낮은 애들 ex. 상품 카테고리)
-> 변경이 잘 안일어나므로 로컬 캐시에 저장해두면 매우 빠르게 조회 가능 (네트워크 I/O가 없기 때문)
이런 경우, 변경이 발생한다면 MQ를 통해 분산 서버에서 로컬 캐시들을 업데이트해서 정합성을 맞춰줄 수 있음
변경이 잘 안일어나니까 로컬 캐시에 저장해두는게 조회할 때도 네트워크 I/O가 없어서 훨씬 이득이고,
변화가 잘 일어나지 않기 때문에 갱신 비용이 적어서 글로벌 캐시에 저장하는 것보다
MQ를 사용해서 로컬 캐시를 갱신해주는게 더 이득인 것.
로컬 캐시 이득 - MQ 사용 갱신 비용이 글로벌 캐시를 사용할 때 보다 더 이득인 것.