Ten million industrial assets, on one cloud
A two-and-a-half-year run on Kongsberg's industrial digital twin platform — architecture, time-series rearchitecture, and the squad rituals that lifted velocity twenty-five percent.
- 10M+Industrial assets served
- −20%Cloud cost reduction
- +35%Query performance lift
- +25%Team velocity lift
Kongsberg Digital builds the cloud-native software that mirrors heavy industry — rigs, refineries, ships, energy assets — into a digital twin. The platform I joined in January 2023 was already running. The work was to make it scale, hold under load, and stay cheap to operate as customers brought their next million assets onto it.
By the time I left in July 2025, the platform was serving more than ten million industrial assets in real time. Three things made that hold.
Architecture that survived the next zero
Digital twin telemetry has a particular shape: skinny writes at high frequency, wide reads at request time, hard latency floors. The substrate I inherited was solid for the first million assets. The next zero was a different problem.
I architected the cloud-native services on Microsoft Azure, building out a Kubernetes-orchestrated microservice topology with Redis caching at the request layer for the hot paths. Express.js and TypeScript on the API tier; Angular for the operator-facing surfaces; Python and C++ on the ingestion path. Terraform held everything together as code. The discipline was to keep the seams honest — every service had a contract, every contract was tested, and every breaking change had to land behind a flag.
We owned the deployment posture end-to-end on three enterprise programs across the industrial-IoT and energy verticals. Every milestone met, every program crossed from discovery into production.
Rearchitecting the time-series substrate
The single most consequential change I made was the time-series rearchitecture. The previous storage layer worked, but it was the hot path for both cost and latency, and the bill was scaling worse than the asset count.
I moved us to a hybrid TimescaleDB + InfluxDB substrate — TimescaleDB for the relational, queryable history that customers care about; InfluxDB for the high-cardinality real-time stream. The split let us tune each side for what it did best, retire a layer of infrastructure that had been doing both jobs poorly, and consolidate compaction.
Cloud spend trimmed twenty percent. Query performance lifted thirty-five. Both numbers held under load.
The squad rituals that paid for themselves
The architecture work mattered. The rituals around it mattered more.
I hardened CI/CD across the squad — every change went through the same pipeline, every pipeline ran the same tests, and the tests had to be fast enough that engineers actually waited for them. We tightened code review until every PR had a clear owner, a clear reviewer, and a clear definition of done. DevOps work that had been firefighting got upstreamed into runbooks and dashboards.
Squad velocity lifted twenty-five percent — measured by story points landed per sprint over the eight months after the changes. Deployment incidents went the other way. The hours we used to lose to rollbacks went into shipping.
The two-and-a-half years at Kongsberg were the deepest engineering work I’ve done. They’re also where I learned that the best engineers I’d ever worked with were also the most disciplined operators — not because operations is glamorous, but because shipping reliably at scale is an engineering problem, not a project-management one.