[Real-Time Intersection Predictor] 실시간 교차로 예측 모듈 및 오프라인 라우팅 데몬 배포 자동화
• 2 min read
차량의 실시간 GPS 좌표 스트림을 수신해 전방 교차로 지점을 예측하고 이를 다시 발행하는 파이프라인을 구축했다. 단일 노드 환경에서 외부망 연결 없이 동작하도록 라우팅 엔진을 통합하고, 컨테이너 기반 백그라운드 서비스 배포 아키텍처를 구현했다.
[Rust / Pipeline] 실시간 비동기 센서 데이터 스트리밍 파이프라인
- Tokio 비동기 런타임 및 MQTT 클라이언트를 추가해 차량 GPS 스트림을 지속적으로 구독하고 처리하는 메인 이벤트 루프를 구성했다.
- 수신한 JSON 페이로드 스키마를 역직렬화해 내부 데이터 모델로 변환하는 파싱 모듈을 적용했다.
- SQLite 비동기 커넥션 풀(SQLx)을 통해 예측 교차로 상태 데이터를 저장하고, 프로세스 재시작 시 차량 진행 상태와 추적 이력을 복구할 수 있는 구조를 적용했다.
[Valhalla / Routing] 라우팅 엔진 맵 매칭 인터페이스 및 측위 최적화
- HTTP 통신을 이용해 외부 오프라인 라우팅 엔진(Valhalla)과 연동하는 클라이언트 인터페이스를 구현했다. 기존 OSRM 환경에서 98%에 달하던 CPU 점유율을 Valhalla로 변경해 30~40% 수준으로 개선했다.
- 하버사인 알고리즘을 적용한 거리 및 방위각 계산 수학 모듈을 별도 구현해, 노이즈가 포함된 측위 데이터를 수정하고 라우팅 요청 정확도를 개선했다.
- 회전 교차로 등 특수 도로 구조를 처리하도록 교차로 탐색 및 맵 매칭 로직을 적용했다.
[Podman / Systemd] Quadlet 기반 서비스 데몬화 및 부트스트랩 자동화
- 라우팅 엔진과 MQTT 브로커 컨테이너 관리를 위해 Podman Quadlet을 적용했다. 전체 서비스 실행 권한을 유저 모드로 제한해 시스템 보안성을 개선했다.
- 교차로 예측 코어 애플리케이션과 인프라 컨테이너 간 실행 순서 의존성(After, WantedBy)을 Systemd 유닛 파일에 명시해, 부팅 직후 발생하는 네트워크 연결 실패 문제를 막았다.
- 오픈스트리트맵(OSM) 데이터를 가져오고 라우팅 타일로 변환하는 과정을 자동화하는 셸 스크립트를 컨테이너 진입점에 결합했으며, 외부 볼륨 마운트를 연결해 데이터 처리 비용을 제거했다.