[Pilot Test Analysis System] 심층 분석 사전 검증 로직 및 워커 아키텍처 재편

2 min read

데이터베이스 병목을 해소하고 분석 파이프라인 처리 속도를 개선하기 위해 백엔드 구조를 변경했다. 고부하 계산 로직을 전용 워커로 이관하고 상태 기반 이벤트 필터링 아키텍처를 새로 적용했다.

[Java / Architecture] 심층 분석 사전 검증 및 대량 처리 파이프라인 분리

  • 통계 계산과 데이터 무결성 검증을 묶어서 처리해 구조적 결합도가 지나치게 높았던 기존 분석 서비스 체계를 분리했다.
  • 사전 검증 로직 전담 컨트롤러와 서비스를 명확히 분리하고, 비디오 스캔 완료 시점 즉시 검증이 트리거되도록 파이프라인을 재설계했다.
  • 분석 타겟 매핑 로직 내 PostGIS 연동 기능을 추가해 공간 데이터 무결성과 정합성을 확보했다.
  • 속도가 느린 기존 단건 쿼리 방식을 제거하고 JdbcTemplate 기반 일괄 분석 아키텍처를 적용하여 데이터 처리 성능을 개선했다.

[Rust / Analytics Worker] 이벤트 상태 머신 및 인메모리 집계 이관

  • 심층 분석 도중 서버와 데이터베이스 간 잦은 쿼리 왕복으로 발생하는 레이턴시 이슈를 해결했다.
  • 위험 구간 시작점과 종료점을 정확히 식별하기 위해 내부 상태 머신(Idle -> Active -> Muted) 체계를 도입해 파편화된 이벤트 필터링을 안정적으로 소화하도록 개선했다.
  • 종전 Java 서비스 레이어가 처리하기 어려웠던 차량 주행 및 감지 요약 등 고부하 통계 계산 로직을 고성능 Rust 워커 인메모리 수학 모듈로 모두 이관했다.
  • 로직 이관을 통해 불필요한 I/O 비용을 제거하고, 최종 압축 결과만을 gRPC 통신으로 회신하여 파이프라인 처리를 개선했다.

[Java / API] 고정밀 레이더 좌표 연산 및 텔레메트리 쿼리 개선

  • 객체 상대 위치 추적 시 프론트엔드에 편중되던 계산 부하와 클라이언트 간 좌표 불일치 문제를 해결했다.
  • 단순 중심점 투영 공식을 제거하고 박스 레이 캐스팅 기법을 도입해, 객체의 정밀 발 좌표를 백엔드 워커 선행 연산 후 InfluxDB 시계열 데이터베이스로 직접 저장하도록 구조를 개선했다.
  • InfluxDB에 적재된 2차원 평면 좌표를 부가 연산 없이 클라이언트에 전달하는 API 엔드포인트를 추가하여 프론트엔드 좌표 변환 오버헤드를 제거했다.
  • 복수 타겟 일괄 분석 수행 시 이미 처리가 끝난 타겟 결과 데이터를 인메모리 캐싱해 중복 계산을 방지하고 병합 알고리즘 효율을 개선했다.