Database
[Database] Redis를 활용한 효율적인 캐싱 전략 이해하기
haisley77
2025. 3. 5. 21:59
1. 캐싱(Caching)이란?
캐싱은 데이터를 빠르게 제공하기 위해 자주 사용하는 데이터를 메모리에 저장하는 기술이다. 하지만 캐시를 잘못 사용하면 성능 개선이 아니라 오히려 성능 저하를 초래할 수도 있다. 데이터베이스에 접근하기 전, 캐시를 확인하는 것 또한 결국 응답 시간 지연으로 이어지기 때문에, 적절한 캐싱 전략을 세우는 것이 중요하다.
2. Caching 용어 정리
Cache Hit | 캐시에 접근했을 때 원하는 데이터가 있는 경우 |
Cache Miss | 캐시에 원하는 데이터가 없는 경우 |
Eviction Policy | 캐시 공간이 부족할 때 어떤 데이터를 제거할지 결정하는 정책 |
Caching Strategy | 데이터를 언제 캐시에 저장하고, 언제 캐시를 확인할지에 대한 전략 |
캐싱은 Cache Hit 비율을 높이고, Cache Miss 비율은 낮추며, 캐시 공간을 효율적으로 관리하는 것을 목표로 한다. 캐싱 전략을 잘 세우면, Cache Hit을 높여 성능을 향상시킬 수 있다.
3. 주요 Caching 전략 비교
Cache - Aside (Lazy Loading)
개념
필요할 때만 캐시에 적재하는 전략
동작 방식
- 먼저 캐시에 데이터가 있는지 확인한다.
- 없으면 원본 데이터베이스에서 가져온다.
- 가져온 데이터를 캐시에 저장한다.
장점
- 첫 번째 요청 이후부터는 빠른 응답이 가능하다.
- 불필요한 데이터가 캐시에 저장되지 않는다.
단점
- 최초 요청 시에는 데이터베이스를 조회해야 하므로 속도가 느릴 수 있다.
- 최신 데이터가 캐시에 반영되지 않을 수 있다.
Write - Through
개념
쓰기 요청이 들어오면 항상 캐시와 DB에 동시에 반영하는 전략
동작 방식
- 데이터를 추가할 때 캐시에 먼저 저장한다.
- 이후 데이터베이스에도 저장한다.
- 읽을 때는 캐시에서만 읽으면 된다.
장점
- 항상 최신 데이터를 유지할 수 있다.
- 읽기 성능이 빠르다.
단점
- 사용 빈도가 낮은 데이터도 캐시에 저장될 가능성이 있다.
- 모든 쓰기 연산이 캐시를 거치므로 성능이 다소 저하될 수 있다.
Write - Behind
개념
쓰기 요청이 들어오면 항상 캐시와 DB에 동시에 반영하는 전략
동작 방식
- 데이터가 들어오면 캐시에 먼저 저장한다.
- 일정 개수 이상의 변경이 발생하면 한 번에 DB에 반영한다.
장점
- 데이터베이스 부하를 줄일 수 있다.
- 요청이 많을 때 성능이 향상될 수 있다.
단점
- 캐시가 사라지면 아직 DB에 반영되지 않은 데이터가 유실될 가능성이 있다.
- 데이터 일관성을 유지하기 어렵다.
4. Caching 전략 선택 가이드
읽기 요청이 많고, 최신 데이터가 중요하지 않은 경우 | Cache-Aside |
최신 데이터가 항상 유지되어야 하는 경우 | Write-Through |
쓰기 요청이 많고, DB 부하를 줄이고 싶은 경우 | Write-Behind |
캐싱 전략을 선택하는 데 정답은 없다. 사용하는 서비스의 특성에 맞는 전략을 선택하는 것이 중요하다. 캐싱을 잘 활용하면 읽기/쓰기와 같은 데이터 작업 성능을 개선할 수 있지만, 전략을 잘못 선택하면 오히려 시스템에 부담을 줄 수도 있다. 우리가 캐싱을 고려하는 이유는 '성능 향상'이다. 이를 위해서는 Cache Hit을 높이고 Cache Miss를 줄이는 것이 핵심이며, 서비스에 맞는 최적의 캐싱 전략을 선택함으로써 데이터 일관성과 최신성 또한 고려해야 한다.