← All work
Case 02Fleet telemetry at sea

Tideline

Telemetry ingest for 12,000 vessels, designed around the assumption that the satellite link will fail and the data will arrive late, twice, and out of order.

ClientMaritime logistics operator
Year2024
RoleSystems architect
Engagement7 months

01 — The problem

The existing pipeline assumed connectivity. At sea, connectivity is a rumour: reports arrive hours late, duplicated by retry logic, occasionally with clocks that disagree with the rest of the fleet. Dashboards showed vessels in two places at once, and the ops team had stopped using them.


02 — What I did

Redesigned ingest as idempotent, out-of-order-tolerant event capture keyed on vessel time, with reconciliation on arrival rather than rejection.

Moved hot-path storage to ClickHouse and cut dashboard queries from thirty seconds to sub-second at ten times the data volume.

Pushed buffering and batching to an on-vessel agent, so a twelve-hour blackout costs bandwidth, not data.

Instrumented the whole path so the ops team can see which vessels are silent and why, which turned out to be the feature they actually wanted.

Fig. 1 — the system as designed
Fig. 2 — the system in production

He spent the first two weeks reading our incident log before drawing anything. That was the whole trick.
VP engineering, Maritime logistics operator

03 — Outcome

12k

Vessels reporting continuously

<1 s

Fleet dashboard queries, from thirty seconds

99.99%

Reports eventually landed, blackouts included


04 — What I left behind

An on-vessel agent the ops team can deploy without a satellite window.

Dashboards owned by ops, not by engineering tickets.

A load-test rig that replays the worst week of the year on demand.

Stack
GoNATSClickHouseKubernetesGrafanaProtobuf

LedgerworksAll work
Next case — 03 / 2024

Northgate

Tenancy and authorization for a B2B platform that had been guessing until then.

Read the case →

Got a system that needsdesigning properly this time?

Contracts from six weeks. I read every enquiry myself and reply within two working days, usually with an awkward question about your data model.

Start an enquiryjoey@startupapps.shopGitHubMedium