There are a lot of benefits to moving the applications to Azure PaaS. Due to the lack of knowledge and a lack of proper planning, many organizations are not able to move their applications to Azure. I will try to create a framework/approach which will help your organization to migrate their applications to Azure PaaS.
Step 1 - Baseline Analysis
Before starting any migration activity or planning, first, create a list of all the components and dependencies of the existing application. This list will help you to identify the items requiring changes before moving to Azure.
You can use the below list as a starting point.
- The technology used for Web Portal - ASP.NET, Java etc.
- Current Session Management technique- in memory of web server or state server or database server
- Any Web API project associated with the web application
- Database used on the web portal - SQL Server, MySQL or any other
- User authentication technique (On-premises Active Directory)
- Integration with any other on-premises application
- Windows Service, Background job, or Scheduler
- MSMQ or any message queue
- If the application is having document/files/image upload functionality
- Any third party executable used in your application to achieve a specific task
- Any custom installation required on the web server
- SMTP Server configured for sending an email
Step 2 - Migration Plan
Component | Azure Service | Remarks |
Web Portal | Azure Web App | Supports Auto-Scaling |
Session Management | Redis cache or SQL Server | In memory session storage is not supported if you have multiple web server instances running. |
Web API | Azure API App |
Database | Azure SQL | You can choose higher or lower capacity or performance on the fly |
User Authentication | Azure Active Directory or on premises ADFS |
Integration | On Premises Data Gateway | If other applications are available on the internet, you can directly connect via Azure Function, Logic App, or even from the Web App. If it is on-premises application, you can have on-premises gateway or site-to-site connectivity. If other applications are directly connecting with your database, then you can allow those servers' IP Addresses in Azure SQL database firewall. |
Windows Service or Background Job | Web Job, Azure Function or Batch Job | Based on your specific need, you can select any one of the lists. I personally found Azure Functions very promising and easy to develop. Azure Functions has in-built capability to integrate with Event Hub, Service Bus, Cosmos DB etc. which is helpful in integration scenarios. |
Message Queue | Event Hub, Service Bus or Storage Queue | Choose based on your application's need. |
Document or file upload | Azure Blob Storage |
SMTP for Sending Email | Azure SendGrid | If you have an existing Office 365 account for sending emails, you can use the same in Azure. |
Third party EXE or Custom installation or configuration required on web server | Azure VM | Customization of environment or installation of third-party EXE files is not supported by Azure PaaS; you need to choose an Azure VM for those type of components. |
Step 3 - Execution of Migration
If you have completed the above two steps carefully, it will cover 30% of your job. For the rest, you need to select migrating the application based on the plan and testing it.
If you have multiple applications to be migrated on Azure PaaS, I would recommend to migrate those one by one. It will help you to reuse the existing application migration knowledge and components to be used in another applications.
Let me know if you have any query or need any help to migrate your applications on Azure PaaS. All the best for your Azure journey.