피드로 돌아가기
InfoQInfoQ
Database

Interval-Aware Caching 도입으로 Druid 쿼리 부하 33% 절감 및 캐시 히트율 84% 달성

Netflix Serves 84% of Query Results from Cache with Interval-Aware Caching in Apache Druid

Leela Kumili2026년 5월 11일2advanced

Context

Rolling Window 기반 대시보드에서 시간 범위의 미세한 변동으로 인해 동일한 데이터셋에 대한 중복 계산이 발생하는 구조적 한계 직면. 기존 캐싱 시스템이 쿼리 전체를 단일 키로 처리함에 따라 발생하는 낮은 Cache Reuse와 Apache Druid의 과도한 리소스 소모 문제 분석.

Technical Solution

  • 쿼리 결과를 고정된 시간 간격의 Segment로 분해하여 저장하는 Interval-Aware Caching 전략 채택
  • Query Structure와 Time Interval을 분리하여 재사용 가능한 Cache Key를 생성하는 외부 Proxy 레이어 설계
  • 고정된 시간 단위의 Bucket 기반 저장 구조를 통한 중첩된 시간 범위 쿼리의 부분적 결과 재사용
  • 데이터 신선도 유지를 위해 Historical Interval에는 긴 TTL을, 최신 데이터에는 짧은 TTL을 적용하는 Exponential TTL 정책 도입
  • 최신 구간만 Druid에서 재계산 후 기존 캐시 세그먼트와 병합하는 Hybrid Query Processing 구현

Impact

  • 캐시를 통한 쿼리 결과 반환 비율 약 84% 달성
  • Apache Druid로 유입되는 전체 쿼리 부하 약 33% 감소
  • P90 Query Time 66% 개선
  • 특정 워크로드에서 결과 바이트 수 최대 14배 감소 및 Segment Scan 횟수 대폭 절감

1. 시계열 데이터 쿼리 시 전체 결과가 아닌 시간 단위의 부분 집합(Partial Aggregates) 캐싱 검토

2. 쿼리 파라미터 중 변동성이 큰 값(시간 범위 등)을 구조적 정의와 분리하여 캐시 키 설계

3. 데이터의 성격(과거 vs 현재)에 따라 차등적인 TTL 정책을 적용하여 정확성과 성능의 균형 확보

원문 읽기