
핵심요약
FMS팀은 차량 관제를 위한 주행 이벤트 탐지 파이프라인을 구축하며, 데이터 순서 보장과 대량의 IoT 트래픽 처리 문제를 해결하기 위해 두 차례에 걸쳐 파이프라인을 개선했습니다. 스케줄링 기반의 RDB 시스템에서 Kafka와 NoSQL을 활용한 실시간 이벤트 기반 비동기 아키텍처로 전환하여 효율성과 안정성을 크게 향상시켰습니다.
FMS 주행 이벤트 탐지 파이프라인 개선 과정
1. 초기 파이프라인 문제 분석 및 1차 개선
- 주행 이벤트는 차량의 시작부터 종료까지의 트립 내 발생하는 순서가 중요한 이벤트들로 구성됩니다.
- 기존 파이프라인은 IoT 데이터를 캐싱 후 DB에 저장하는 구조였으나, 서로 다른 프로토콜 및 데이터 묶음 개수 차이로 인한 데이터 순서 불일치 문제가 발생했습니다.
- 1차 개선에서는 데이터 순서 보장을 위해 RDB를 도입, IoT 데이터를 먼저 적재한 후 스케줄링 기반으로 이벤트 탐지를 진행하여 정합성 기반을 마련했습니다.
2. 2차 파이프라인 개선: 이벤트 기반 아키텍처 도입
- 문제 상황: 스케줄링 기반의 비효율적인 리소스 처리 (특정 시점 부하 집중, Lock 문제), RDB의 대량 IoT 데이터 처리 및 비동기 스케일 아웃의 한계, MSA 환경에서의 데이터 유실 관리 문제가 대두되었습니다.
- 개선 목표: 효율적인 리소스 분배, 대량의 실시간 데이터 처리량 증대, 멱등성 있는 시스템 구성을 통한 안정적인 플랫폼을 구축하는 것이었습니다.
- 솔루션: RDB를 NoSQL로 전환하고, 스케줄링 기반에서 Kafka를 활용한 이벤트 기반 파이프라인으로 전환했습니다.
- 기술적 상세: Kafka는 대량 데이터 처리량과 MSA 환경에서의 느슨한 결합을 제공하며, NoSQL은 비동기 처리와 효과적인 스케일 아웃을 지원합니다. Check-In & Check-Out 개념과 Check-In Expire 정책을 도입하여 분산된 파이프라인에서 차량별 데이터 순서를 보장하고, TTL 인덱스를 활용해 시계열 데이터 볼륨을 관리했습니다.
3. 정합성 확보 및 최종 결과
- 정합성 검증: 실차 테스트와 논리적 개연성 기반의 이벤트별 정합성 판단 방식을 통해 기존 파이프라인을 상회하는 정합성을 확보했습니다.
- 최종 결과: 실시간 이벤트 기반 파이프라인 전환으로 특정 시간대 리소스 부하를 최소화하고 서버 간 역할 분리를 명확히 했습니다.
- 확장성 및 대응력: 이벤트 활용으로 알림 서버 등 다른 서비스로의 확장이 용이해졌으며, NoSQL의 장점을 활용하여 데이터 스토리지의 스케일 아웃을 통해 대량 데이터에 대한 플랫폼 대응력을 높였습니다.
4. 결론 및 향후 전망
- FMS 주행 이벤트 파이프라인은 두 차례의 개선을 통해 이벤트 순서 보장과 대량 데이터 처리라는 핵심 목표를 달성했습니다.
- 배치성 동기 시스템을 실시간 이벤트 기반의 비동기 시스템으로 전환하며 필요한 기술을 정의하고 그 적합성을 증명했습니다.
- 이 경험을 통해 대량의 데이터를 다루는 역량을 쌓았으며, 앞으로 더 복잡한 기술적 문제를 해결할 기반을 마련했습니다.