
이동하는 시간 윈도우와 중복 쿼리 문제를 해결하는 '인터벌 인식 캐싱'과 지수적 TTL 전략 기술 리포트
본 아티클은 넷플릭스가 Apache Druid 기반의 실시간 모니터링 시스템에서 겪은 확장성 문제를 해결하기 위해 구축한 실험적인 캐싱 레이어를 소개합니다. 고정된 결과 캐싱 대신 쿼리를 시간 버킷 단위로 분할하여 부분적인 캐시 재사용을 극대화하고, 데이터의 신뢰도에 따라 캐시 유지 시간을 조절하는 혁신적인 접근법을 제시합니다.
실시간 시계열 대시보드로 인해 데이터베이스 부하가 급증하는 환경의 엔지니어에게 추천하며, 특히 이동 시간 윈도우(Rolling Window) 처리가 잦은 시스템에 즉시 응용 가능한 전략입니다.
넷플릭스의 대규모 실시간 대시보드는 10초마다 수백 개의 쿼리를 생성하며, 시간 윈도우가 조금씩 이동할 때마다 기존 Apache Druid의 캐시가 무효화되어 DB에 과도한 중복 부하가 발생했습니다.
쿼리를 시간 단위(버킷)로 쪼개어 관리하는 인터벌 인식(Interval-Aware) 캐싱 계층을 도입하고, 데이터의 신선도에 따라 TTL을 지수적으로 늘리는 'Exponential TTL' 전략을 적용했습니다.
실제 사용자 쿼리의 82%가 캐시 히트를 기록했으며, Druid로 전달되는 쿼리량 33% 감소 및 P90 쿼리 응답 속도가 66% 개선되는 성과를 거두었습니다.
Trade-off
실시간 데이터에 대해 최대 5초의 지연(staleness)을 허용해야 하며, 외부 프록시 서비스 운영에 따른 인프라 복잡도와 네트워크 홉(hop)이 추가되었습니다.
쿼리의 전체 시간 범위를 작은 단위의 시간 버킷으로 분할하여, 이미 계산된 과거의 결과는 캐시에서 가져오고 최신 데이터만 DB에 요청하는 지능형 캐싱 방식입니다.
최신 데이터는 자주 갱신되도록 짧은 TTL을 부여하고, 변경 가능성이 낮은 과거 데이터일수록 캐시 유지 시간을 지수적으로 늘리는 전략입니다.
데이터가 존재하지 않는 빈 구간(Sparse metrics)에 대해 '빈 값' 자체를 캐싱하여, DB에 불필요한 반복 조회를 방지하는 기술입니다.




