피드로 돌아가기
Dev.toBackend
원문 읽기
런타임 Config 파싱 제거를 통한 p99 레이턴시 48ms에서 6ms로 단축
The Moment the JSON Config Parser Became the Enemy
AI 요약
Context
50 MB/s의 대규모 이벤트 처리 서버에서 YAML 기반 Config reload 시 발생하는 Global Lock과 IndexMap 재할당으로 인한 CPU 낭비 발생. Kubernetes ConfigMap 업데이트 시 내용 변경 여부와 무관하게 모든 세션에서 런타임 파싱이 트리거되어 Tail Latency를 악화시킨 구조적 한계 노출.
Technical Solution
- Build-time 최적화를 위한 build.rs 기반의 TOML 컴파일 타임 상수 모듈 생성
- 런타임 설정 변경을 위한 Sidecar gRPC 서비스 도입 및 Unix Domain Socket 통신 설계
- Protobuf 스키마 기반의 Delta-encoding 적용으로 전송 데이터 최소화 및 Lock-free 경로 확보
- 동적 설정값과 정적 상수를 분리하여 메인 프로세스의 Runtime Parsing 및 File I/O 완전 제거
- Async runtime(tonic) 적용을 통해 설정 변경 경로의 Non-blocking 처리 구현
실천 포인트
- 설정 파일의 런타임 파싱 비용이 CPU 프로파일링에서 유의미하게 나타나는지 확인 - 정적 설정과 동적 설정을 엄격히 구분하여 정적 설정은 바이너리에 임베딩 고려 - ConfigMap watch 이벤트가 모든 세션의 성능에 영향을 주는 구조인지 검토 - 대규모 트래픽 환경에서 JSON/YAML 대신 Protobuf 기반의 Delta 업데이트 도입 검토