본문으로 이동
캐시 문제 해결 가이드 - DB 과부하 방지 실전 팁
문서

캐시 문제 해결 가이드 - DB 과부하 방지 실전 팁

김신 · 토스 · 토스 기술 블로그

원본 보기

소개

대용량 트래픽 환경에서 캐시를 사용할 때 주의해야할 위험 상황과 예방법을 소개합니다.

AI 핵심 요약

캐시를 사용해도 만료 시점의 동시 미스, 존재하지 않는 데이터의 반복 조회, 캐시 장애, 핫키 만료가 데이터베이스 과부하와 서비스 장애를 일으킬 수 있습니다. 글은 일괄 만료에 지터를 더하고, ‘값이 없음’을 널 오브젝트 패턴으로 캐싱하며, 캐시 장애 때 핵심 기능만 유지하도록 대체 작동을 설계하는 방법을 제안합니다. 핫키 만료로 인한 중복 조회에는 분산 락을 활용해 한 번의 갱신만 허용할 수 있습니다. 각 대책은 최신성, 캐시 공간, 기능 중요도와 데이터베이스 용량을 함께 고려해 서비스 환경에 맞게 적용해야 합니다.

  • 동시에 만료되는 캐시에는 무작위 지터를 더해 데이터베이스 요청을 시간에 걸쳐 분산하세요.
  • 데이터가 없다는 결과도 널 오브젝트나 약속된 센티널 값으로 캐싱하면 반복 조회를 줄일 수 있습니다.
  • 캐시 장애 시 모든 요청을 데이터베이스로 넘기지 말고, 핵심 기능과 중단 가능한 부가 기능을 구분하세요.
  • 핫키 캐시 미스에는 분산 락을 적용해 여러 서버가 같은 데이터를 중복 조회·갱신하지 않도록 하세요.