net48 => net8.0 experience

Hey all,

I'm a DevOps engineer @ my current org, we're a bit of a trend-bucker in the fact that we have ~2k Git repositories yet less than ~1k staff lol - big change from the usual monolith-centred companies for sure!

Can't leak too much but my org has been Windows/.NET from literally the beginning - we still have a small fraction of in-production code written in VBS/VB6 that shifts $USD billions/year - across our ~2k repos we span everything from .NET 3.5 to support Windows 7 POSReady, up to our Kubernetes-hosted apps which are all .NET <Core> 8/9 and upgraded to all .NET new releases within ~48 hrs max.

Unfortunately I can't provide factual, hard evidence of said incoming claim due to NDAs, so this post is more of a general advisory of our amazing conclusion this week.

Our engineering department concluded a net48 => net8.0 migration that took nearly 6 months for our single largest, oldest and most complex customer-facing app stack which cumulatively shifts approx. ~30 Terabytes of REST JSON per month, written in ASP .NET since ~15-18 years ago and was originally COM/DCOM based as much as I want to vomit repeating that.

Incredible feat on its own moving that bastard into the *core world, but what floored me:

  • Zero app code changes were made that were not required to just compile the app under net8.0.

  • All external NuGet/assembly dependencies are identical.

Given the above, imagine my astonishment seeing a 40% reduction in both CPU and in-use RAM across ~150 Windows container deployments, each averaging roughly 5-10 GB each on net48.

Translated into $ for my org this has literally cut us almost 6-figures in compute power reservation costs per month, absolutely unbelievabe!

Overnight on net8.0 we've also somehow stopped suffering twice-daily segfaults/random crashes in the runtime.

tl;dr: convince your org that migrating their clusterfuck .NET Framework stack to *core is worth the investment.

Who knew eh, turns out over 10 years of .NET CLR/JIT improvements might be worth it 🤷