Let’s face it, moving a line-of-business application that’s been designed to run on-prem, or even on a virtual machine, to the cloud can be intimidating. The good news is that you don’t need to go full-on cloud native all at once. Azure App Service offers a comprehensive platform for hosting .NET applications in the cloud with minimal code changes needed to the existing web app.
In this article I want to talk about how Azure App Service makes an excellent first step for a .NET application’s cloud journey. By the end of this article, I want you to have enough information to have a foundation for taking your taking your app to the cloud – and honestly to decide whether it’s the right decision at all.
While we think about the first step of the cloud journey, we need to be thoughtful about maintaining existing investments in the code and application architecture while setting the application up for success in its future life in the cloud. Let’s get going and dive into Azure App Service and see how it can help with the first step in a .NET application’s cloud journey.
What is Azure App Service?
Azure App Service is what’s commonly referred to as a Platform-as-a Service or PaaS solution. In the cloud world, PaaS solutions abstract away certain complexities, like infrastructure, so you can focus on what matters most – your application’s business logic and its code. Azure App Service provides all of the common PaaS features, like a fully managed environment for deploying, hosting, and scaling web applications. It also supports built-in autoscaling, custom domains and SSL certificates and has a host of diagnostic and monitoring tools - but it shines with .NET applications. Azure App Service works with the latest versions of .NET and is backward compatible to the .NET Framework. It has tight Visual Studio integration, you can deploy, debug, and monitor all from within Visual Studio.
Azure App Service and .NET Developers
When migrating legacy applications to the cloud a primary concern is the amount of code changes (and cost) involved with the migration. Azure App Service addresses this by requiring minimal code changes when moving from on-prem. In many cases only application configuration settings need to be updated. Check out this demonstration from Microsoft VP Scott Hunter from .NET Conf 2022 where he moves a legacy .NET Framework application to Azure App Service.
Of course, once your application is in Azure App Service – or depending on your timeline, as part of your migration process - you can start to take full advantage of other Azure services. We’ve developed the Reliable Web App pattern to give you prescriptive guidance on how to create cost-optimized, resilient, and scalable applications with minimal investments. Check out the pattern to learn more.
I also mentioned above about the tight integration App Service has with Visual Studio. This integration keeps the time from idea to deployment as low as possible. Right from Visual Studio, developers can create instances of and deploy their code to Azure App Service. App Service also supports a variety of CI/CD options, such as Azure DevOps and GitHub Actions – both of which can be setup from within Visual Studio.
And as unbelievable as it may seem, sometimes developers need to debug or otherwise monitor their applications in production. App Service has a suite of tools specifically designed to help do that. (See this session from Azure Developers - .NET Day where Mark Downie shows you how.) Using these tools, developers will be able to uncover performance issues, exceptions, and other anomalies.
If your development team has adopted (or will adopt) container-based architecture, Azure App Service supports both Windows and Linux containers. Containers can help provide a seamless migration from on-prem to the cloud.
I’d be remiss if I didn’t mention cost as a consideration when moving an on-prem application to App Service. The first realized savings will be the reduced cost of infrastructure. You won’t have physical hardware to maintain. You won’t have licenses to renew. You won’t have to be on-call to patch bug fixes (or plug the power cord for the server back in when somebody trips over it). Microsoft takes care of all that for you. The headaches are gone.
You’ll also see cost optimizations improve when scaling is involved. Azure App Service supports auto-scaling rules via Azure Monitor, you can also scale manually. This means you can add more computing power when you need it and remove it when you do not.
Azure App Service is also available in a variety of SKUs – from a Basic for small workloads to Premium and Isolates for highly demanding workloads. You can pick what you need for your budget and business needs.
The first step in your application’s cloud journey is an important one. You have to consider the costs of code and architecture changes, the benefits the platform you’re moving to provides, and the actual cost of the platform. You also need to take into account if the cloud platform will set your application up for success in the future.
Azure App Service deserves consideration, especially for .NET applications. More than likely your .NET application can deploy to it today with very minimal, if any, code changes necessary. It supports .NET applications of all types – even back to the .NET Framework days. It provides tight integration with Visual Studio, and the auto-scaling and variety of SKU levels provide a high level of control of cost optimization.