Real-Time Maritime Analytics Pipeline (AWS)
CompleteFully serverless real-time pipeline ingesting live AIS vessel position data via WebSocket, processing it through an event-driven Lambda architecture, archiving raw events in S3, and visualising vessel activity in real time through OpenSearch Dashboards.
Technologies
Problem
Maritime vessel positions need to be monitored in real time, with anomaly detection and a permanent audit trail for historical analysis — at minimal operational overhead.
Approach
AIS WebSocket → Kinesis Data Streams → Lambda 1 (S3 archive + SQS) → Lambda 2 (geo enrichment) → Kinesis Firehose → OpenSearch → Dashboards. Original Apache Flink approach was abandoned due to JAR incompatibility with AWS OpenSearch Service.
Result
Real-time vessel tracking dashboard with geographic visualisation and a queryable historical S3 archive. Supports multiple geographic bounding boxes (Persian Gulf, Baltic Sea, Mediterranean).
Learnings
Apache Flink's OpenSearch sink is incompatible with AWS OpenSearch Service due to Elasticsearch 7 JAR conflicts — the serverless Lambda approach is simpler and more maintainable; OpenSearch geo_point requires a combined {"lat": x, "lon": y} object; SQS cannot connect directly to Firehose.
Relevance
Demonstrates real-time streaming architecture, event-driven AWS patterns, architectural decision-making under constraints (Flink pivot), and production-ready serverless design.