← Back to Projects

Real-Time Maritime Analytics Pipeline (AWS)

Complete

Fully 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

Amazon KinesisAWS LambdaAmazon SQSAmazon Kinesis FirehoseAmazon S3Amazon OpenSearchPythonAISStream.io

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.