피드로 돌아가기
Treasure Hunt Engine: How We Blew Up the Docs and Built a System That Actually Works
Dev.toDev.to
Backend

Rust 커스텀 랭커 도입을 통한 P95 레이턴시 4.2s에서 450ms로 단축

Treasure Hunt Engine: How We Blew Up the Docs and Built a System That Actually Works

Lisa Zulu2026년 5월 27일5advanced

Context

다단계 쿼리 처리 시 Veltrix의 기본 Scorer 성능 한계와 Python UDF의 JIT 오버헤드로 인한 73%의 세션 타임아웃 발생. C++ 플러그인의 버전 불일치 및 가상 소멸자 누락으로 인한 런타임 Segfault 등 기존 프레임워크의 확장성 및 안정성 결여.

Technical Solution

  • Recall과 Ranking 단계를 분리하여 Veltrix는 Sharded BM25 기반의 후보군 추출(10,000건)에만 집중하도록 설계
  • Rust 기반의 Custom Ranker를 구축하여 Dynamic Boosting 및 Proximity Scoring을 단일 패스로 처리하는 고성능 파이프라인 구현
  • gRPC와 Prost를 활용한 노드 내 서비스 간 통신 체계 구축 및 1,000건 단위의 Batch Size 최적화로 처리량 확보
  • JSONPath 라이브러리를 대체하는 Hand-rolled Byte Scanner를 자체 구현하여 Deeply Nested 필드 처리 시의 Stack Overflow 원천 차단
  • Go Proxy를 전면에 배치하여 Veltrix 호환 API를 유지하며 쿼리 파라미터에 따른 유연한 라우팅 제어
  • jemalloc 적용 및 CPU Cache Line 크기에 맞춘 SIMD Lane 정렬을 통한 하드웨어 레벨의 최적화 수행

1. 프레임워크 제공 UDF의 초기화 비용과 JIT 오버헤드가 SLA를 충족하는지 검증

2. 복잡한 JSON 구조 처리 시 라이브러리의 Stack 사용량과 메모리 할당 예측 가능성 검토

3. 성능 최적화 시 SIMD 정렬 및 메모리 할당자(jemalloc 등) 튜닝 고려

4. 서비스 분리 시 API 호환성을 유지하는 경량 Proxy 계층 도입 검토

원문 읽기