1. Local Cache ? Global Cache?
(1) 로컬 캐시
- 장점
- 해당 인스턴스의 메모리를 참조해 빠른 데이터 접근 가능
- 해당 인스턴스의 메모리를 참조하므로 네트워크 트래픽 감소
- 단점
- 캐시 데이터 증가 시 메모리 사용량 증가로 인한 성능 저하 가능
- 캐싱 데이터가 변경되면 여러 서버 간 정합성 문제 발생 가능
(2) 글로벌 캐시
- 장점
- 다중 인스턴스에서 동일한 데이터 공유 가능
- Sharding 과 Replication 을 활용한 고가용성 보장
- 단점
- 추가 인프라 구성으로 인한 비용 발생
- 네트워크 지연으로 인해 로컬 캐시보다 응답 속도가 느릴 수 있음
2. 로컬 캐시 종류
(1) EhCache
EhCache는 Java 기반의 오픈 소스 캐시 라이브러리로, 주로 Spring 애플리케이션에서 사용된다.
- 특징
- Heap 메모리, OffHeap 저장소, 디스크 저장 가능
- heap memory 저장 공간 : JVM 힙 메모리에 저장
- offHeap 공간(3버전 부터 도입) : memory heap 외부에 추가적인 유형의 메모리 저장소를 사용할 수 있다. Java GC 가 적용되지 않은 저장소이며, Byte 단위의 큰 캐시를 생성할 수 있다.
- 디스크 공간 : File 캐시와 유사하게 데이터가 디스크에 저장됩니다.
- Terracotta Server와 연계하여 분산 캐시 지원
- Terracotta Server : 각 캐시 노드들의 허브 역할을 하는 분산 캐시 서버 역할.
- EhCache 와 Terracotta Server 와 결합해 캐시 노드들 간의 변경 내용을 공유하기 동기화 한다.
- Heap 메모리, OffHeap 저장소, 디스크 저장 가능
(2) Caffeine Cache
Caffeine Cache는 Guava Cache와 ConcurrentHashMap을 개선한 고성능 캐시 라이브러리이다.
- 특징
- 높은 성능과 낮은 지연시간 제공
- LRU(Least Recently Used), LFU(Least Frequently Used), FIFO(First In First Out) 제거 정책 지원
- 자동 적응적 캐시 크기 조절 기능 제공
(3) Guava Cache
Guava Cache는 구글에서 제공하는 Java 기반 캐시 라이브러리로, 간단한 캐싱 기능을 제공한다.
- 특징
- ConcurrentHashMap 기반으로 Thread-Safe 보장
- 다양한 캐시 제거 방식 제공 (사이즈 기반, 시간 기반, 참조 기반)
- 사이즈 기반 제거 : 객체 크기가 크다는 의미는 그만큼 무겁게 읽어올 수 있는 것으로 크기가 큰 객체를 캐싱할 때 유용하다.
- 시간 기반 제거 : 읽기 이후 설정한 시간이 지난 후 만료한다.
- 참조 기반 제거
- weakReference : 값이나 키가 weakReference 로 감싸져 참조가 없어지면 GC 처리된다.
- softReference : JVM 의 메모리가 부족한 경우 GC 처리되는 참조 방식
3. Local Cache 성능 비교
- 테스트 환경
- 8 thread 기반 동시성 읽기 작업에서 초당 작업량 / 6 thread 기반 동시성 읽기 작업 + 2 thread 쓰기 작업 처리량 비교
- Caffeine 이 read(100%) + read(75%)/write(25%) + write(100%) 에서 모두 우수함
- 결론
- Caffeine Cache가 읽기 및 쓰기 작업에서 가장 우수한 성능을 보이며, 자동 조정 기능을 통해 최적의 캐싱 환경을 제공한다.
- EhCache는 대용량 데이터 처리에 적합하며, Spring 환경과의 연계가 용이하다.
- Guava Cache는 단순한 캐싱이 필요한 경우 적합하다.
'java > summary' 카테고리의 다른 글
자바에서 동시성은 왜 발생할까? (4) | 2025.03.23 |
---|---|
SerialVersionUID를 선언해야 하는 이유 (0) | 2024.11.28 |
Virtual Thread 무엇일까? summary (0) | 2024.11.28 |
자바 비동기로 카페 콘솔 예제 만들기 (1) | 2024.11.26 |
어댑터 패턴(adapter pattern) (1) | 2024.07.09 |