1. 배경 및 문제점
Vision AI 기반의 실시간 모션 분석 기능을 개발하면서, 프레임당 133개에 달하는 keypoint를 일반적인 JSON 포맷으로 전송할 경우 네트워크와 DB에 심각한 병목이 발생할 것으로 예상되었다.
이를 해결하기 위해 좌표 데이터를 Hex String로 변환하는 커스텀 인코딩 방식을 도입하여 데이터 크기를 약 36% 경량화했다.
- 고해상도 포즈 데이터 처리 환경
- 인물 1명당 133개의 Keypoint에 대해 30fps로 실시간 정밀 분석 수행.
- 매 프레임마다 Bounding Box 및 메타데이터를 포함한 대량의 좌표 데이터 발생.
- JSON Array 포맷의 구조적 오버헤드
- 기존 JSON 배열([0.1234, 0.5678, ...]) 방식 사용 시, 실수형(Float)의 긴 자릿수와 불필요한 구문 문자(공백, 콤마, 대괄호)로 인한 용량 비효율 발생.
→ 초당 30회(30fps) 빈도로 전송 시 네트워크 대역폭 포화 및 DB 스토리지 적재 부하 등 병목 현상 예상됨.
2. Custom Hex Encoding 도입
- 핵심 아이디어
- 양자화(Quantization): 소수점 float에서 정수(Int)로 변환.
- Hex 인코딩: 변환된 정수를 4자리 16진수 문자열(Hex String)로 변환하여 고정 길이 확보.
- 구분자 제거: 콤마나 대괄호 없이 연속된 문자열로 병합하여 오버헤드 최소화.
- 포맷 변경 예시
- 변경 전: [0.5678, ...] (가변 길이 실수 배열)
- 변경 후: "162e..." (고정 길이 Hex 문자열)
3. 정량적 성과 분석
- 데이터 페이로드 비교 (1 프레임 기준)
- Legacy (JSON List): 2,783 Bytes
- Optimized (Hex String): 1,783 Bytes
- 최적화 결과
- 용량 절감: 프레임당 약 1,000 Bytes 감소
- 압축률: 기존 대비 약 35.93% 데이터 절감 달성
- 기대 효과
- 동시 접속자 1,000명 기준, 분당 약 1.8GB의 대역폭 절약 효과.
- DB 스토리지 비용 절감 및 실시간 전송 레이턴시(Latency) 개선.
'DevLog' 카테고리의 다른 글
| LLM 활용 프로토타이핑(2) - DESIGN.md를 활용한 디자인 시스템 수립 (3) | 2026.05.04 |
|---|---|
| LLM 활용 프로토타이핑(1) - 서비스 기획을 위한 정적 목업 구축 (0) | 2026.03.28 |
| LLM 정량평가하기(3) - 시스템 로깅 및 AI agent 활용 (0) | 2026.01.12 |
| LLM 정량평가하기(2) - 시나리오 기반의 AI 챗봇 테스트 자동화 (0) | 2026.01.08 |
| 아키텍처 재사용성 및 확장성 검증 (cloc 분석) (0) | 2025.12.07 |