피드로 돌아가기
Dev.toBackend
원문 읽기
Unattributed Gap 제거를 통한 Voice Latency 1.4s 개선
The 1.4 Seconds That Weren't on Any Span
AI 요약
Context
기존 APM 기반 Tracing 시스템이 개별 Span의 실행 시간만 측정하여 Span 사이의 공백인 Unattributed Time을 누락한 설계 구조. VAD 종료 시점부터 ASR 시작 시점까지의 Handoff 구간이 측정 대상에서 제외되어, 개별 지표는 정상이나 사용자 경험 상의 Dead Air가 발생하는 병목 현상 지속.
Technical Solution
- Turn-end 시점부터 ASR Stream 오픈 시점까지의 Handoff 구간을 명시적 Span으로 래핑하여 가시성 확보
- Lazy Connection 방식을 폐기하고 ASR Streaming Connection의 Pre-warming 도입을 통한 초기 지연 제거
- 평균 트래픽 기준의 Connection Pool 설계를 Burst Concurrency 대응 규모로 확장하여 경합 해소
- Connection을 Turn 단위로 재생성하지 않고 Keep-alive 상태로 유지하는 재사용 전략 채택
- OpenTelemetry SDK를 활용해 Orchestration 계층의 비동기 Coroutine 대기 시간을 추적 가능하게 구현
실천 포인트
1. Distributed Tracing 도입 시 개별 API 호출뿐만 아니라 큐 대기, 컨텍스트 스위칭 등 Handoff 구간에 Span 설정 여부 검토
2. Connection Pool 설계 시 Average load가 아닌 Peak/Burst concurrency 기반의 사이징 적용
3. Latency Critical한 경로에서 Lazy Initialization 대신 Pre-warming 전략 적용