피드로 돌아가기
Dev.toDatabase
원문 읽기
Query-Aware Invalidation을 통한 Mongoose 성능 2.2배 향상 및 RPS 700+ 달성
Smart Query-Aware Cache Invalidation: Solving Mongoose Performance at Scale
AI 요약
Context
Node.js 환경의 Mongoose 기반 애플리케이션에서 트래픽 증가에 따른 MongoDB CPU 부하 및 P99 Latency 증가 발생. 단순 Redis 캐싱 도입 시 Cache Stampede와 데이터 정합성 유지를 위한 Invalidation 복잡도 증가라는 설계적 한계에 직면함.
Technical Solution
- Promise 공유 메커니즘을 통한 Cache Stampede 방지로 동일 쿼리에 대해 단일 DB 요청만 수행하는 구조 설계
- Query Filter 패턴 매칭 기반의 Smart Invalidation 로직을 구현하여 업데이트 필드가 쿼리 조건에 포함된 경우에만 선택적 캐시 삭제 수행
- 50ms 단위의 Batch Write 및 중복 제거(Deduplication) 처리를 통한 Redis 네트워크 I/O 오버헤드 최소화
- Schema 레벨의 AOP 방식으로 기존 비즈니스 로직 수정 없이 캐싱 계층을 통합하는 추상화 설계
- 정밀 좌표 쿼리의 한계를 인지하고 Geohash 기반의 근사치 캐싱 및 TTL 계층화 전략을 통해 확장성 확보
실천 포인트
- 캐시 만료 시점에 요청이 몰리는 Thundering Herd 현상을 방지하기 위한 Request Collapsing 도입 검토 - 전체 캐시 삭제(Flush All) 대신 업데이트 필드와 쿼리 필터를 매핑하는 정밀 Invalidation 로직 설계 - 잦은 쓰기 작업 시 즉시 반영보다 짧은 Window의 Batch Update를 통한 I/O 최적화 적용