Skip to main content

Taking an inherited platform back in-house

An inherited platform brought back under internal control, cutting external support from 40 hours a month to 4 and staffing a six-person on-call rotation from a standing start.

Industry
Maritime data services
Location
Halifax, Canada
Engagement
10 weeks
Team
1 NordsCode engineer, 6 client engineers
4 hrsExternal support per month, down from 40
Retained agency hours in the three months after the engagement, against a twelve month average of 40 hours per month beforehand. The retainer was reduced accordingly.
6 of 6Engineers holding the on-call rotation
A genuine six-person rotation staffed entirely internally, replacing an arrangement where out-of-hours incidents were escalated to an external supplier.
9 daysTo the first platform change shipped without help
From the start of the engagement to a Tidewater engineer independently designing, reviewing and deploying a change to the ingestion infrastructure.

What we found when we arrived.

Tidewater Marine Data aggregates vessel tracking and port data for insurers and commodity traders. Their platform had been built by an external agency over three years and was, technically, well constructed. The problem was that nobody inside the company could change it. Any infrastructure work went to the agency at CAD 190 an hour, averaging 40 hours a month, and out-of-hours incidents were escalated to a supplier under a contract with a four hour response target.

The six engineers were capable application developers with no deep exposure to the deployment or infrastructure layer. There was documentation, but it described what had been built rather than how to operate it, and it had drifted out of date. The commercial motivation was the retainer cost. The operational motivation was a March incident where a four hour response window meant ingestion was stalled for most of a trading day.

What we did, in the order we did it.

Sequence matters more than tooling on engagements like this one. Each step below existed because the previous one produced something the next one needed.

  1. 01

    Establish the real starting point

    A practical exercise per engineer rather than a self-assessment, which showed strong Kubernetes familiarity but almost no exposure to Terraform or the alerting configuration. The programme was rewritten around that finding before the first workshop.

  2. 02

    Teach on the live system, not a sandbox

    Every session used Tidewater's own repositories, pipelines and cloud accounts, with real backlog tickets as the exercises. Generic cloud training was explicitly avoided because it does not transfer to a specific inherited environment.

  3. 03

    Pair with the keyboard on their side

    Five weeks of pairing on genuine platform work, with our engineer reviewing rather than driving. The first independently shipped infrastructure change landed on day nine of the engagement.

  4. 04

    Build the rotation before it is needed

    Runbooks written by the engineers themselves for the eight procedures they actually perform, then two rehearsed incidents against staging before the internal rotation replaced the supplier escalation path.

What changed, and how we know.

External support fell from an average of 40 hours a month to 4 across the three months following the engagement, and the agency retainer was renegotiated to match. At CAD 190 an hour that alone returned the cost of the engagement inside five months.

All six engineers now hold a place in the on-call rotation, and the four hour supplier response window has been removed from the operational picture entirely. Two incidents in the first quarter after handover were resolved internally in 18 and 41 minutes. The runbooks are maintained by the team that wrote them, which is the difference between documentation that stays current and documentation that describes last year's system.

What it was built on

  • Azure
  • Terraform
  • Azure Kubernetes Service
  • Azure DevOps
  • Prometheus
  • Grafana

Recognise any of this?

Most engagements start with a call describing a situation that sounds a lot like one of these. Tell us yours and we will say plainly whether we can help.