[Pilot Test Analysis System] 대용량 텔레메트리 파이프라인 및 중복 방지 최적화
• 3 min read
주행 세그먼트 데이터 무결성을 확보하고 대규모 텔레메트리 데이터를 고속 처리하고자 파이프라인 구조를 변경했다. 대용량 주행 데이터의 병렬 처리 안정성과 서버 사이드 렌더링 성능 최적화를 중점적으로 개선했다.
[Java / Data Pipeline] 비디오 세그먼트 스캐닝 및 데이터 무결성 보장
- 비디오 세그먼트 스캔 과정상 데이터베이스 고유 키 제약 조건 위반 및 중복 매핑이 발생하는 문제를 해결했다.
- 세그먼트 스캐닝 진입 전 기존에 적재된 메모리 맵 목록을 초기화해 데이터베이스 중복 삽입을 방지했다.
- 메모리 맵에 식별자가 없는 세그먼트의 경우 데이터베이스 조회를 폴백 처리해 데이터 무결성을 확보했다.
- 신규 세그먼트 생성 시 즉각적 영속화 플러시를 적용하여 데이터베이스 식별자를 미리 할당받아 병렬 스레드 환경 내 중복 삽입 트랜잭션 오류를 해결했다.
[Java / Video Processing] HLS 메타데이터 중복 방지 및 썸네일 고속 추출
- 영상 업로드 및 썸네일 추출 시 발생하는 서버 과부하 및 프레임 추출 문제를 해결했다.
- 비디오 메타데이터 파일명 명명 규칙을 변경하여 중복 접미사 병합 현상을 막고, 파일 업로드 전 검증 로직을 추가했다.
- HLS 세그먼트 파일을 동적 매핑하고 영상 입력 seek를 직접 호출하도록 구조를 바꿔 마이크로초 단위 초고속 프레임 추출 성능을 달성했다.
- 부동소수점 연산 오차로 인한 시크 지점 편차를 상쇄하고자 오프셋 마진을 부여해 썸네일 탐색 정밀도를 향상했다.
[Java / Report Engine] 평가 지표 세분화 및 리포트 엔진 재구축
- 단순 통계 나열에 머물던 레거시 리포트 체계를 벗어나, 교차로 및 사각지대 심층 위험 분석 요소를 통합 반영하도록 리포트 엔진을 개선했다.
- 교차로 진입 판단, 사각지대 위험 인지, 운전자 반응 시간 등 신규 심층 지표를 수용하도록 데이터베이스 스키마와 gRPC 인터페이스를 확장했다.
- 일간 분석 통계 테이블을 추가하여 단일 주행 세션을 넘어선 날짜 단위 종합 주행 및 반응 요약 데이터 집계를 지원했다.
- Lazy loading에서 기인하는 프록시 초기화 오류를 예방하고자 주요 분석 쿼리에 fetch join을 적용하여 연관 데이터를 즉시 로드하도록 수정했다.
[Rust / Analytics Worker] 원격 텔레메트리 차트 렌더링 파이프라인
- 주행 분석 보고서 배포 시 서버 사이드 고품질 차트 생성 요구사항을 수용할 파이프라인을 구축했다.
- Rust 기반 전용 워커를 도입해 주행 속도, 가속도 등을 망라한 5종의 고품질 시각화 차트를 비동기적으로 생성하도록 구현했다.
- 서버 사이드 헤드리스 브라우저 환경에서 렌더링이 정상적으로 수행되도록 도커 컨테이너 런타임 내 필수 GUI 라이브러리와 폰트 패키지를 추가했다.
- 차트 레이아웃 조립 시 직렬화된 JSON 객체를 직접 조작 반환하는 방식을 취해 비동기 컨텍스트 환경 스레드 안전성을 확보했다.
[Java / API Gateway] 이벤트 구간 고정밀 추출 인터페이스 연동
- 다운샘플링된 시계열 데이터로는 운전자의 단기적 미세 반응과 제어 이벤트를 파악하기 어려운 문제를 해결했다.
- 미세 거동 포착을 위해 다운샘플링을 면제받은 원시 텔레메트리 데이터 및 객체 감지 로그를 직접 조회하는 API 엔드포인트를 추가했다.
- 검출 윈도우 내 조향 변화율 및 페달 조작 변화를 정밀 평가하고 인접 위험 구간을 단일 병합하는 분석 로직을 적용했다.
- 단기 분석 목적에 불필요한 대량 객체 좌표 필드를 제거하여 페이로드 크기를 줄이고 API 응답 속도를 개선했다.