[Pilot Test Analysis System] VWorld 지도 프록시 구축 및 배치 프로세스 병렬화

2 min read

외부 지도 API의 호출 제한과 보안 문제를 해결하기 위해 내부 프록시 레이어를 구축하고, 고해상도 정적 지도의 렌더링 방식을 개편했다. 이와 함께 대량의 주행 세션을 처리하는 배치 작업의 병목 현상을 해결하기 위해 동시성 처리를 최적화했다.

[Java / Architecture] VWorld 지도 타일 프록시 레이어 구축

  • 프론트엔드에서 직접 외부 지도 API를 호출할 경우 API 키가 노출되고 도메인 제한이나 403 에러가 발생하는 문제가 있었다.
  • 백엔드에 지도 타일 요청을 중계하는 전용 프록시 컨트롤러를 구축하고, 서버 내부에서 HTTP Referer 헤더와 API 키를 주입하도록 구성했다.
  • 클라이언트의 외부 의존성을 제거하여 보안을 강화하고 안정적인 타일 서빙이 가능해졌다.

[Java / Graphics] 정적 지도 오버레이 네이티브 렌더링 및 동적 줌

  • 외부 정적 지도 서비스 사용 시 URL 길이 제한으로 인해 복잡한 주행 경로를 온전히 그리지 못하는 한계가 있었다.
  • 백엔드에서 텔레메트리 GPS 좌표를 직접 조회하여 Web Mercator 투영법으로 픽셀을 계산한 뒤, Java 네이티브 그래픽을 통해 지도 타일 위에 경로를 직접 그리도록 구조를 변경했다.
  • 데이터 기반의 수학적 동적 줌 레벨 계산 로직을 추가하여 데이터 범위에 맞는 지도를 생성할 수 있게 되었으며, 기존 외부 렌더링 의존성을 제거했다.

[Java / Concurrency] 세션 전처리 및 분석 배치 프로세스 병렬화

  • 주행 세션을 전처리하고 분석 워커로 넘기는 과정이 단일 스레드 반복문과 더미 세마포어 락으로 묶여 있어 처리 속도가 지연되었다.
  • 스레드 풀을 할당하고 비동기 콜백 패턴을 적용하여 다중 세션에 대한 검증 및 분석 파이프라인을 병렬로 실행하도록 개편했다.
  • 순차 처리로 인한 병목 현상이 해결되었으며, 진행률 업데이트를 원자적 변수로 처리하여 동시성 환경에서도 안전하게 상태 이벤트를 발송하도록 개선했다.