← Back to Case Studies
Logistics20248 months

Real-time container tracking for 10,000 active shipments

Migrating off a 13-year-old Java monolith without dropping a single shipment in transit.

Tidal Freight
Platform EngineeringSystem Architecture
180ms
P95 Response Time
[01]
−58%
Infrastructure Cost
[02]
99.97%
Uptime (12 months)
[03]
51
Carrier Integrations
[04]
[01]The Challenge

Tidal Freight's tracking system was a Java monolith from 2011. Every peak shipping period caused partial outages — ops staff had learned to restart services at 2am. Response times averaged 11–14 seconds, and onboarding a new carrier required touching 23 tightly coupled modules. Two previous migration attempts had been abandoned mid-flight.

[02]Our Approach

Three weeks of instrumentation before writing a line of new code. The bottleneck wasn't the database — it was synchronous HTTP calls to carrier APIs on the critical read path. We introduced Kafka to decouple location updates from queries, applied CQRS, and ran old and new systems in parallel for six weeks. The cutover happened carrier-by-carrier.

[03]The Outcome

P95 response times dropped to 180ms. The first peak season post-launch passed without incident. Onboarding a new carrier now takes one engineer two to three days instead of months.

Tidal Freight — product interface on device
Tech Stack
KafkaPostgreSQLKubernetesGoReact
[04]Client Feedback
We'd tried this migration twice and given up. What was different this time was that they spent the first month just listening and measuring — they refused to propose a solution until they understood what was actually wrong.
Henrik Janssen
CTO, Tidal Freight, Tidal Freight
Logistics

Have a Similar
Challenge?

Let's discuss how we can help you achieve similar results.

Start a Conversation