BlueXP Blog

Application Migration to Azure: 4 Approaches, 1 Migration Tool

Written by Yifat Perry, Technical Content Manager | Feb 2, 2022 5:03:21 PM

What is Application Migration?

Application migration involves transferring a software application from one IT environment to another. Here are common application migration scenarios:

  • Migrate from an on-premises server to the cloud—moving an application currently running on an organization’s self-managed equipment to a data center operated by a cloud service provider.
  • Migrate from one public cloud to another—this scenario typically involves shifting applications to another cloud provider, to leverage better pricing or improved functionality.

Organizations often migrate their applications to the cloud because cloud vendors offer flexible pricing and scalability, which help quickly update applications to meet changes in demand.

This article explains four application migration options in the context of Azure migration, and covers an automated tool that can help you migrate applications to Azure: the Azure App Service Migration Assistant.

In this article:

4 Approaches for Migrating Applications to Azure

Compatibility is the main challenge in migrating applications to the cloud. Whether you opt to migrate from one cloud to another or from an on-premises data center to the cloud, your application is likely not compatible with the target cloud.

The four different migration strategies require different levels of application modification before migration. This process requires carefully assessing your application's compatibility with the target cloud and choosing the most suitable migration strategy - rehosting, refactoring, rearchitecting, or rebuilding.

Learn more about these four approaches in our guide to Azure migration strategy

Rehost

This option is also known as a lift-and-shift migration. It does not require code changes. A rehosting strategy can help you migrate applications to Azure without modifying the code.

Here is when to use a rehosting strategy:

  • Quickly lift your application as is and move it to the cloud.
  • Migrate your application without making code changes.
  • Rehost applications that do not require modification to use Azure infrastructure as a service (IaaS) capabilities.

Refactor

This option is also known as repackaging. Refactoring requires minor modifications that enable the application to leverage cloud capabilities. The strategy can help you migrate applications to Azure services or migrate databases to Azure Database for MySQL or Azure Cosmos DB.

Related content: Read our guide to migrating databases to azure

A refactor strategy requires assessing the portability of the existing code base and the development skills you have at your disposal.

Here is when to use a refactor approach:

  • Quickly repackage your application to work in Azure.
  • Leverage Azure DevOps capabilities.
  • Use a container strategy for your workloads.

Rearchitect

This strategy involves changing and extending application functionality and the codebase to prepare the application architecture for cloud scalability. Here are common scenarios:

  • Break down a monolithic application into microservices.
  • Completely rearchitect a database to leverage Azure managed database services.

Here is when to use a rearchitecting approach:

  • Your application requires major modifications to work effectively in the cloud.
  • Shift from a monolithic architecture to a microservices.
  • Replace traditional infrastructure like virtual machines (VMs) with modern infrastructure like containers and serverless functions.

Rebuild

This strategy involves rebuilding the application with Azure cloud technologies.

Here is when to use a rebuilding strategy:

  • When you need rapid development and current applications do not meet business requirements or have a limited lifespan.
  • When you want to accelerate business innovation and accelerate adoption of cloud native infrastructure and technologies like AI, IoT, blockchain.

Azure App Service Migration Assistant

There are many ways to migrate an application to Azure. A common way is to migrate your application into Azure App Service, a managed service that can run web applications in the cloud. In some cases, this will require refactoring or rearchitecting your application.

Azure App Service is an HTTP-based service for hosting web applications, REST APIs, and mobile backends. You can use it to easily run and scale applications in Windows-based and Linux-based environments. It supports multiple languages including .NET, .NET Core, Java, Ruby, Node.js, PHP, and Python.

App Service gives your application cloud native features such as load balancing, autoscaling, and auto-management, as well as Azure’s enterprise-grade security. You can also leverage features provided by Azure DevOps, such as continuous deployment, package management, staging environments, custom domains, TLS/SSL certificates, GitHub or Docker Hub integration.

The App Service Migration Assistant aims to simplify and automate the process of migrating your application from an on-premises server to the cloud. It also provides a containerization tool that lets you repackage your application into a container with minimal changes.

The process involves:

  1. Evaluating your application for migration by performing a scan of its public URLs.
  2. Download Migration Assistant to your existing application server.
  3. Perform a general assessment of your application's configuration settings and its readiness for cloud migration.
  4. Use the Migration Assistant to automatically migrate your web application or website to Azure App Service.

While the Azure App Service supports a range of programming languages, the App Service Migration Assistant currently supports automated migration for .NET and Java applications only. Below we briefly describe how the assistant migrates each of these application flavors.

Related content: Read our guide to Azure migration tools

.NET Application Migration to Azure App Service

The App Service Migration Assistant for .NET lets you quickly discover local .NET web applications, assess their migration readiness, and migrate content and supported configurations to Azure App Service.

Here are a few common use cases for .NET application migration:

  • Migrate from multiple servers—perform agentless inspection and evaluation of ASP.NET web applications running on Internet Information Services (IIS) servers in local VMware environments, and evaluate their migration to Azure Application Services. The Migration Assistant identifies migration blockers, provides remediation guidelines, recommended Azure VM types, and even estimates hosting costs.
  • Migrate from an IIS server—use PowerShell scripts to migrate ASP.NET web applications from a single IIS server.
  • NET web app migration—migrate standalone local ASP.NET web applications to Azure App Service.
  • Containerize an ASP.NET web app—some .NET Framework web applications depend on libraries and other features not available in Azure App Service. Previously, these applications could only run on virtual machines in Azure. Now you can run them in a lightweight Windows container within Azure App Service.

Java Application Migration to Azure App Service

The App Service Migration Assistant can help you evaluate on-premises Java applications and automatically migrate these applications to Azure. Common use cases include:

  • Linux Tomcat migration—download the assistant to your local server and migrate a Java application running on a Tomcat web server. Another option is to migrate a Docker container running a Tomcat web service from Azure Container Registry directly to App Service.
  • Windows Tomcat web application—you can move a Tomcat web application from an on-premises Windows machine to a Windows VM within App Service. Another option is to move a Tomcat-based application to App Service, together with its dependencies, by packaging it in a Windows Container.

Application Migration to Azure with Cloud Volumes ONTAP

NetApp Cloud Volumes ONTAP, the leading enterprise-grade storage management solution, delivers secure, proven storage management services on AWS, Azure and Google Cloud. Cloud Volumes ONTAP capacity can scale into the petabytes, and it supports various use cases such as file services, databases, DevOps or any other enterprise workload, with a strong set of features including high availability, data protection, storage efficiencies, Kubernetes integration, and more.

In particular, Cloud Volumes ONTAP assists with lift and shift cloud migration.

Download our free eBook The NetApp Guide to Migrating Enterprise Workloads to Azure to learn more.