피드로 돌아가기
The Moment the JSON Config Parser Became the Enemy
Dev.toDev.to
Backend

런타임 Config 파싱 제거를 통한 p99 레이턴시 48ms에서 6ms로 단축

The Moment the JSON Config Parser Became the Enemy

pretty ncube2026년 5월 27일3advanced

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 업데이트 도입 검토

원문 읽기