How to migrate .NET applications to Azure ?


One of key strategies in cloud implementation is to migrate existing applications to the cloud. 
This can be tricky if the applications have been running on-premise for several years. In this topic we will explore how we can migrate .Net applications safely and successfully to the cloud.


Indentify on-premise dependencies:

This step is one the most important steps in cloud migration and should be done early to identify any possible blockers in cloud migration. Create a list of on-premise databases and any network locations that the application is using. Connectivity to these databases and network locations has to be configured from the cloud applications. Consider migrating databases to the cloud to reduce the complexity of implementation.


Start in small phases:

This step is important to identify the challenges and any unknown issues while migrating to the cloud. Start with migrating an application which is low risk and try to cover all possible scenarios which will be relevant to other applications. This step will help to identify which Azure resources will work best for your applications and a cost effective way of running your applications on the cloud.


Assess the equivalent cloud resources to be used:
Generally a .Net MVC application can be migrated to the Azure App service. Any standalone web services can be migrated to Azure functions. If you are using a microservices architecture, Docker and Kubernetes are fully supported on Azure to migrate applications. Depending on the complexity of the application, some rearchitecting may be required to migrate to the cloud.


Establish monitoring and alerts:
In this step Azure monitor and Application Insights have to be configured to ensure any failures are identified early and the application health is monitored continously. Setup the required alerts for any failures and identify the steps required to mitigate failures.


Setup pipelines for CI/CD:
All Azure components can be deployed using an Azure devops pipeline. Configure pipelines for deploying to multiple environments to reduce the effort to deploy manually and overcome any chances of human error which could happen during manual deployments. It is good to have a Devops practice in the organization to manage CI/CD.


Training and support: 
Identify any areas where development and support staff need to be trained on Azure so they can carry on implementing and supporting applications migrated to Azure.