피드로 돌아가기
Dev.toBackend
원문 읽기
Rust 커스텀 랭커 도입을 통한 P95 레이턴시 4.2s에서 450ms로 단축
Treasure Hunt Engine: How We Blew Up the Docs and Built a System That Actually Works
AI 요약
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 계층 도입 검토