실무
경찰청 자율주행 순찰차 V2X 데이터 연동
경찰청 자율주행 순찰차 프로토타입을 위한 V2X 데이터 통신 미들웨어를 구축하여 차량-인프라 간 실시간 데이터 교환 기반 마련
Overview
경찰청 의뢰로 개발된 자율주행 순찰차 프로토타입의 데이터 통신 레이어를 구축했습니다. 통신/보안모듈 담당 기업(M사)과 협업하여, M사가 소켓을 통해 전달하는 ASN.1 표준 규격의 원본 V2X 데이터를 파싱·검증하고, 이를 내부 파이프라인에 태워 차량 탑재 센서와 도로변 인프라 유닛 간 실시간 데이터 교환 기반을 마련했습니다.
System Architecture
구성도 업데이트 예정입니다.
Constraints
- 정부 프로젝트 보안 및 규정 준수 요건
- V2X 메시지 실시간 지연시간 100ms 이내
- 기존 차량 ECU 인터페이스와 연동 필수
- 외부 보안모듈 벤더(M사)와의 협업 필요
- 프로토타입 시연을 위한 6개월 납기
Tech Stack
- Java 17 / Spring Boot
- TCP Socket Server (M사 클라이언트 연동)
- ASN.1 (SAE J2735 기반 V2X 표준 규격)
- Apache Kafka
- Protocol Buffers
- Redis
- Docker
- Linux (Ubuntu)
Learnings
- 정부 프로젝트는 초기에 규정 준수 요건을 명확히 해야 함 — 프로젝트 중반에 발견하면 비용이 큰 재작업이 발생
- 하드웨어 인터페이스 제약(ECU 프로토콜)은 반드시 초기에 프로토타입으로 검증해야 함
- 외부 벤더와 소켓으로 직접 연동할 때는 어느 쪽이 서버/클라이언트 역할을 맡을지를 상대 시스템의 보안 정책까지 고려해 결정해야 함 — 원본 데이터를 보유한 쪽이 클라이언트로 능동적으로 push하는 구조가 보안 제약이 있는 상대 시스템과의 연동에서는 더 자연스러웠음
- 이종 시스템 간 바이트 스트림을 주고받을 때는 바이트 오더(Endianness) 불일치를 초기에 반드시 검증해야 함 — 정수 필드 값이 이상하게 나오는 문제는 파싱 로직 자체보다 바이트 오더 문제일 가능성을 먼저 의심해야 함
- Kafka 재생 기능은 현장 테스트 중 간헐적 V2X 전송 문제를 디버깅하는 데 매우 유용했음
- 교차 벤더 협업에는 명시적인 인터페이스 계약이 필요 — ASN.1 규격 자체가 외부 벤더와의 계약이었고, 내부적으로는 Protocol Buffers 스키마가 팀 간 살아있는 계약 역할을 했음