피드로 돌아가기![[System Design] GPS Location Ingestion at Scale: gRPC Streaming, MQTT & Kalman Filter in Ride-Hailing](/_next/image?url=https%3A%2F%2Ftsewlmecqtvqphyhezcm.supabase.co%2Fstorage%2Fv1%2Fobject%2Fpublic%2Fthumbnails%2F01d6db08-2c95-4608-b891-43caf7be5c30.webp%3F&w=3840&q=75)
Dev.toBackend
원문 읽기
gRPC Stream과 Batching으로 125만 TPS GPS 데이터 처리 및 네트워크 호출 67% 절감
[System Design] GPS Location Ingestion at Scale: gRPC Streaming, MQTT & Kalman Filter in Ride-Hailing
AI 요약
Context
500만 명 이상의 드라이버가 4초마다 송신하는 대규모 GPS 데이터 처리 과정에서 기존 HTTP REST 방식의 TCP/TLS Handshake 오버헤드로 인한 성능 저하 발생. 페이로드 대비 과도한 헤더 크기로 인한 네트워크 낭비와 모바일 기기의 배터리 소모 가속화라는 제약 사항 직면.
Technical Solution
- persistent connection 기반의 MQTT 및 gRPC Bidirectional Streaming 도입을 통한 연결 설정 비용 제거
- Protobuf 직렬화 적용으로 JSON 대비 페이로드 크기를 3~10배 축소하여 대역폭 효율성 극대화
- 클라이언트 단의 3~5개 좌표 Batching 처리를 통한 네트워크 호출 횟수 67% 감소 설계
- Kalman Filter를 모바일 기기에 내장하여 노이즈를 제거한 뒤 정제된 데이터만 송신하는 Edge Computing 적용
- gRPC의 Flow Control 기능을 활용한 서버 부하 시 Backpressure 제어로 시스템 안정성 확보
- Map Matching 기법을 통한 필터링된 좌표의 도로 네트워크 스냅핑 처리로 데이터 정확도 향상
Impact
- End-to-End Latency: 200ms 미만 유지
- Network Calls: Batching 적용으로 67% 절감
- Throughput: 초당 약 125만 건의 GPS 쓰기 작업 처리 가능
실천 포인트
1. 소형 페이로드가 빈번하게 발생하는 시스템에서 HTTP REST 대신 gRPC Stream이나 MQTT 검토
2. 모바일 클라이언트의 배터리 및 네트워크 최적화를 위한 데이터 Batching 및 Edge Filtering 적용
3. Binary Serialization(Protobuf 등) 도입을 통한 네트워크 대역폭 최적화 및 파싱 성능 개선
4. 실시간 위치 데이터 처리 시 Kalman Filter와 Map Matching을 통한 데이터 정제 단계 필수 포함