피드로 돌아가기
Why There's a Tanker in Central Madrid
Dev.toDev.to
Backend

시간당 1M AIS 메시지 중 40%의 노이즈를 제거하는 4단계 필터링 파이프라인 설계

Why There's a Tanker in Central Madrid

VesselAPI2026년 5월 19일13intermediate

Context

전 세계 40만 척의 선박이 매일 3억 건 이상의 AIS 메시지를 생성하는 대규모 실시간 Geospatial 데이터 스트림 처리 환경. 규격 외 Sentinel Value, 비정상 좌표, GPS Spoofing으로 인한 'Phantom Ships' 발생으로 데이터 신뢰성 확보가 시급한 상황.

Technical Solution

  • Message Type Filtering: AIS 27개 메시지 타입 중 Class A/B Position Report 타입만 허용하여 비정상적인 좌표 유입 원천 차단
  • Sentinel Value Filtering: GPS 신호 상실 시 전송되는 규격상의 특수 값(위도 91°, 경도 181° 등) 및 Null Island(0,0) 좌표의 즉각적 제거
  • MMSI Validation: 9자리 식별 번호의 범위를 분석하여 선박 외 장치(해안국, 구조 항공기 등)의 데이터를 필터링하는 도메인 검증 로직 적용
  • Glitch Flagging Strategy: 데이터를 단순 삭제하는 대신 suspected_glitch 플래그를 부여하여 저장함으로써, 보안 분석 및 이상 징후 탐지 요구사항 대응
  • Lean Pipeline Implementation: Go 언어를 활용한 250라인 규모의 경량 파이프라인을 구축하여 t3.medium 인스턴스 1대로 처리 최적화

1. 외부 API/스트림 수집 시 'Sentinel Value' 및 'Default Factory Value' 정의 확인

2. 데이터 삭제 전 분석용 'Anomaly Flag' 처리 도입 검토

3. 도메인별 식별자(ID)의 유효 범위 및 패턴 기반 검증 로직 추가

4. 데이터 파이프라인의 복잡도보다 필터링 룰의 정밀도에 우선순위 부여

원문 읽기