로컬 캐시(Local Cache)
로컬 캐시는 애플리케이션 서버의 메모리(JVM Heap 등) 에
직접 데이터를 저장하는 방식
- 대표 예시:
Caffeine, Guava Cache, Standalone Ehcache 등
장점
- 매우 빠름: 서버 메모리에 바로 접근하므로 속도가 가장 빠름
- 구현/운영이 간단: 별도 인프라 없이 코드만 추가하면 사용 가능
- 비용 부담 없음: 추가적인 비용이 발생하지 않음
단점
- 서버별 데이터 불일치: 여러 서버를 쓰는 환경에서는 서버마다 캐시가 다름
- 확장/일관성 문제: 서버가 늘어나면 관리가 복잡해지고, 데이터 동기화가 어려움
- 서버 재시작 시 캐시 소실: 서버를 재시작하면 캐시가 모두 사라짐
실무에서의 사용 예시
- 단일 서버 기반의 소규모 프로젝트
- 반드시 일관성이 필요하지 않은 데이터(예: 자주 변하지 않는 코드 값 등)
- 개발 환경, 임시 데이터 캐싱 등
분산 캐시(Distributed Cache)
분산 캐시는 외부 캐시 서버(네트워크 상) 에 데이터를 저장해
여러 애플리케이션 서버가 공유하는 방식
- 대표 예시:
Redis, Memcached, Hazelcast 등
장점
- 데이터 일관성 보장: 여러 서버에서 캐시 데이터를 공유함
- 확장성: 서버가 늘어나도 동일 캐시 공간 사용, 대규모 트래픽 대응 가능
- 장애 대응: 일부 서버 장애에도 캐시가 살아있음
단점
- 네트워크 비용/지연: 로컬 캐시보단 느림(그래도 DB보단 빠름)
- 운영 복잡성: Redis 등 별도의 인프라를 관리해야 함
- 비용 발생: 인프라, 네트워크 비용 추가
실무에서의 사용 예시
- 여러 서버에서 데이터 일관성이 중요한 경우(예: 로그인 세션, 인증 토큰, 실시간 데이터)
- 대규모 트래픽, 수평 확장 환경(클라우드/마이크로서비스)
- 캐시 유실 시 서비스에 영향이 큰 경우
정리: 실무에서의 선택 기준
| 상황 | 로컬 캐시 | 분산 캐시 |
|---|
| 속도, 비용이 최우선 | ⭐ | |
| 데이터 일관성이 반드시 필요 | | ⭐ |
| 서버가 1대뿐 | ⭐ | |
| 서버가 여러 대, 확장 구조 | | ⭐ |
| 운영, 인프라 관리 부담 최소화 | ⭐ | |
실제로는 로컬 캐시와 분산 캐시를 함께 사용하는 경우도 많음
(예: 자주 조회되는 데이터는 로컬 캐시에,
공유가 필요한 데이터는 분산 캐시에 저장)
요약
- 작은 프로젝트/단일 서버 → 로컬 캐시
- 여러 서버, 대규모 서비스/일관성 필요 → 분산 캐시
- 상황에 따라 두 가지 캐시를 적절히 조합하면 성능과 안정성을 모두 챙길 수 있습니다.