I'm working in an organization that's essentially a mix of several companies, and we have about 10 different PaaS products running on Azure and AWS. A significant portion of our applications rely on .NET Framework, including some that use the now-outdated ASP.NET—definitely not the best situation since that framework hasn't been supported since 2016.
Currently, many of these applications are housed on heavy monolithic VMs, and some interconnect and share data, which adds extra strain on our infrastructure. Shockingly, over 60% of our infrastructure budget is tied to just 40% of the applications.
The developers and architects who maintain these systems resist change and often defer to Microsoft for solutions to issues stemming from their outdated architecture. We do have a DevOps team that handles manual deployment and server provisioning, but my small team has to deal with the rest.
Recently, leadership has been pressuring us to cut costs, and we were even reprimanded for a $400 infrastructure cost for a proof of concept. I'm curious, how do you all manage the transition from legacy systems that are dragging down efficiency? We consistently highlight the issues these legacy applications cause, and leadership seems to get it, but when it comes time to set priorities, refactoring these outdated C# codes never seems to make the list.
5 Answers
You know, DevOps hinges a lot on the culture of engineering teams. Old .NET Framework isn't terrible, but it does tie you to Windows machines, which can be pricey. Prioritize automating your builds and deploys even for monoliths. Start with low-risk wins to build confidence, and focus on identifying dependencies so that you can work on builds in parallel. Every little step counts, especially when proving what’s possible to your team.
You should aim to upgrade to at least .NET 4.8. Once you're at that level, transitioning to the newer, cross-platform .NET versions becomes much more feasible. I get that newer .NET is faster, but you might still be stuck with those large VMs for a while. However, you could potentially downsize them since the latest framework is more efficient.
From what you described, it might be more effective to implement small automations that save time. Getting those small wins can really help you gain some momentum and attention, eventually leading to larger changes. Instead of looking for a major overhaul, maybe focus on small, incremental improvements that can gradually shift the culture and capabilities of your team.
It sounds like you're in a tough spot! While it can be tempting to just shift everything to some cloud-based microservices, it's crucial to find a balance. You really need enterprise architects who understand the value of both legacy and modern systems. .NET has been evolving for over a decade, and there are proven ways to slowly modernize these older .NET Framework applications without it being a massive upheaval. The challenge often lies in getting people on board with the change.
You might want to rethink your perspective on ASP.NET. It's not as dead as you think—there was a release as recently as 2022! Dismissing the frameworks like that makes it hard to work collaboratively with developers. If your VMs are a bottleneck, have you considered using a distributed session store to manage loads better? It’s not as complicated as it seems, and could improve your overall performance.

We've been running a microservice-based .NET app on AKS, and it runs great without needing chunky VMs. It's definitely possible to run modern apps without those old setups!