배차 정확도를 높이는 실거리 시스템 구축하기: OSRM, Kafka, 그리고 Redis
백엔드
배차 정확도를 높이는 실거리 시스템 구축하기: OSRM, Kafka, 그리고 Redis
두줄요약
실거리 기반 배차 정확도를 높이기 위해 OSRM, Kafka, Redis를 활용한 저장·처리 구조를 설계했습니다. 지역 단위 이벤트 순서 보장과 캐시 재사용으로 대량 경로 계산 부하를 줄였습니다.
문제 상황
- 배차 최적화를 위해 직선거리 대신 실제 경로 기반 실거리를 써야 하는 요구
- 분당 수십만 건, 초당 10만 건 수준의 경로 계산으로 실시간 계산만으로는 부하가 과도한 상황
- 배달 생성, 위치 변경, 완료, 취소에 따라 거리 데이터의 갱신과 삭제를 정확히 맞춰야 하는 제약
원인 분석
- 배차 경로 수가 많아 거리 계산의 정확도와 일관성이 성능에 직접 영향
- 동일하거나 유사한 배차 조합이 반복되어 중복 거리 계산이 빈번한 구조
- 배달 ID 기준 이벤트 처리로는 지역 단위 순서를 보장하기 어려워 데이터 누락 가능성 존재
해결 방법
- OSRM을 실거리 계산 엔진으로 사용하고, 지도 미디에이터를 통해 API 방식으로 연동
- Kafka 이벤트를 지역 ID 기준으로 리파티션해 지역별 순서를 보장하며 처리
- Redis를 인메모리 저장소로 사용해 지역별 실거리 그래프를 저장하고 재활용
