Migrating a .NET app to Azure
I want to move my web application to Azure, where do I start ?
So you currently have a web application running on an on premise server and are looking to migrate it to the cloud, as the current infrastructure no longer meets the application needs. Users have reported occurrences of the site being unavailable and slow at peak times.
This post is the start of a 4 part case study of migrating a .NET web application to azure and is aimed at helping to provide some insight into deciding which is the most suitable Azure compute service available.
Once you start to drill into whats involved in migrating an application, it is very easy to get swamped with all the possible options and routes and trying to understand it all before you can make a decision on how best to move forward at all.
There is no one solution fits all, it depends on many factors some of which are:
- The current architecture of the application
- Potentially what development resources are available
- Cost and time constraints
So I am going to walk-through a sample web application and investigate several options that are potentially suitable for the migration. To start the migration process, we need to analyse the current application and also establish what the requirements are from the migration.
Current Application
- ASP .NET web app
- IIS 7 on standalone windows server
- Stores files uploaded by users locally
- Manages data via a publicly available API
Migration Requirements
- High availability
- Automatically scale
- Minimal maintenance overhead
- Low Cost
So now we know what we want from the migration, we can analyse some of the various options available
- Azure App Service (Migrating .NET web application to Azure App Service)
- Azure Scale Set (Migrating .NET web application to Azure Scale Sets)
- Azure VMs (Migrating web application to Azure VM)
- Azure Functions (Re-Architecting the Application)
The aim of these posts are not to go into depth on each element and all possible options, but to more give an introductory overview as to how you might begin to start thinking about how your application might fit in for migration and to kick start the thought process
Summary
All of the above options have their own benefits and reasons behind choosing them. The decision will depend on your particular needs and resources available for the migration process. Its possible to just pick a single approach or alternatively to pick and choose components. As an example one hybrid approach would be to leave certain components on prem (e.g database) and move other components to the cloud.
Existing
.NET Application (on- premise)
ASP.NET Apps
Web API
Lift & Shift
(IaaS) Cloud Infrastructure- Ready
Virtual Machines
Scale Sets
Cloud-Optimized
Full PaaS
Azure App Service
Azure Functions
- Difficulty scaling resources
- High costs
- Harder to achieve the level of flexibility and scalability quickly
- Quick way of migrating to the cloud
- No code changes
- Makes the process easier to modernize the applications at a later stage
- Very little is managed (manual OS patching etc..)
- Cost savings
- Requires code changes and re-architecting specifically for the cloud
- Full Managed
- Provides availability and scalability
- Cost savings
Microsoft have a good e-book available that, in my opinion, is worth a read in relation to this topic (Modernize existing .NET applications with Azure Cloud )
Recent Comments