캐시 문제 해결 가이드 - DB 과부하 방지 실전 팁
김신 · 토스 · 토스 기술 블로그
소개
대용량 트래픽 환경에서 캐시를 사용할 때 주의해야할 위험 상황과 예방법을 소개합니다.
AI 핵심 요약
캐시를 사용해도 만료 시점의 동시 미스, 존재하지 않는 데이터의 반복 조회, 캐시 장애, 핫키 만료가 데이터베이스 과부하와 서비스 장애를 일으킬 수 있습니다. 글은 일괄 만료에 지터를 더하고, ‘값이 없음’을 널 오브젝트 패턴으로 캐싱하며, 캐시 장애 때 핵심 기능만 유지하도록 대체 작동을 설계하는 방법을 제안합니다. 핫키 만료로 인한 중복 조회에는 분산 락을 활용해 한 번의 갱신만 허용할 수 있습니다. 각 대책은 최신성, 캐시 공간, 기능 중요도와 데이터베이스 용량을 함께 고려해 서비스 환경에 맞게 적용해야 합니다.
- 동시에 만료되는 캐시에는 무작위 지터를 더해 데이터베이스 요청을 시간에 걸쳐 분산하세요.
- 데이터가 없다는 결과도 널 오브젝트나 약속된 센티널 값으로 캐싱하면 반복 조회를 줄일 수 있습니다.
- 캐시 장애 시 모든 요청을 데이터베이스로 넘기지 말고, 핵심 기능과 중단 가능한 부가 기능을 구분하세요.
- 핫키 캐시 미스에는 분산 락을 적용해 여러 서버가 같은 데이터를 중복 조회·갱신하지 않도록 하세요.
비슷한 학습 자료
고객은 절대 기다려주지 않는다: 빠른 데이터 서빙으로 고객 만족도를 수직 상승 시키는 법
이세찬 · 토스 기술 블로그
캐시를 적용하기 까지의 험난한 길 (TPS 1만 안정적으로 서비스하기)
김경윤 · 토스 기술 블로그
ksqlDB를 활용한 증권사의 실시간 데이터 처리하기
강병수 · 토스 기술 블로그
우리는 어떻게 해외주식 서비스 안정화를 이뤘는가
김광훈 · 토스 기술 블로그
서버 증설 없이 처리하는 대규모 트래픽
함종현 · 토스 기술 블로그
웹 서비스 캐시 똑똑하게 다루기
박서진 · 토스 기술 블로그