In This Blog
- Introduction
- What Is Lift and Shift?
- Lift and Shift vs. Other Migration Strategies
- Lift and Shift Benefits and Drawbacks
- When to Use Lift and Shift
- Conclusion
- How Emergent Software Can Help
- Final Thoughts
- Frequently Asked Questions
TL;DR
- Lift and shift is a cloud migration strategy that moves applications to the cloud with minimal changes to the existing architecture.
- It is often the fastest and lowest-risk way to exit a data center or move legacy workloads into Azure.
- The tradeoff is that lifted-and-shifted applications may not fully use cloud-native scalability, resilience, or cost optimization features.
- Lift and shift can be a practical first step before deeper modernization through re-platforming, refactoring, or rebuilding.
- The best migration strategy depends on your timeline, budget, technical constraints, and long-term cloud goals.
Introduction
In cloud migration, “lift and shift” has become a popular approach for moving existing applications to the cloud. It is a strategy that involves transferring an application to a cloud environment with minimal changes to its architecture. Companies often choose lift and shift when they want to realize the benefits of the cloud quickly without investing significant time and resources into refactoring their applications.
For example, imagine a company running a legacy .NET application on-premises. The hardware is aging, and the business wants to exit its data center within six months. Rebuilding the application would take too long, so the company decides to “lift” the application as-is and “shift” it to run on virtual machines in Azure. This allows the team to meet the deadline while gaining access to the cloud’s flexibility and potential cost savings.
What Is Lift and Shift?
Lift and shift is a cloud migration model that focuses on moving applications to the cloud “as-is,” with little to no modification of the application code or architecture. It involves “lifting” the application from its current on-premises or hosted environment and “shifting” it to run on cloud infrastructure.
This approach is different from migration strategies that require re-architecting or rebuilding applications to be cloud-native. With lift and shift, the goal is to replicate the existing application environment in the cloud using virtual machines or other cloud services that closely match the current infrastructure.
You May Also Like: 7 Common Cloud Migration Pitfalls to Avoid
Consider a company running a Windows-based application on-premises. With a lift and shift approach to Azure, the team could use Azure Site Recovery or Azure Migrate to replicate the application servers to Azure VMs:
# Create a Recovery Services vault
$vaultName = "myVault"
$vault = New-AzRecoveryServicesVault -Name $vaultName -ResourceGroupName $resourceGroupName -Location $location
# Set the vault context
Set-AzRecoveryServicesAsrVaultContext -Vault $vault
# Create a Hyper-V site
$siteName = "mySite"
New-AzRecoveryServicesAsrFabric -Type HyperVSite -Name $siteName
In this scenario, the application’s architecture and functionality remain largely unchanged. The business gains cloud infrastructure benefits without immediately taking on the cost, time, and risk of a full application redesign.
Lift and Shift vs. Other Migration Strategies
Lift and shift is just one of several approaches to cloud migration. Other common strategies include re-platforming, refactoring, and rebuilding. Each option requires a different level of effort and creates a different level of long-term cloud optimization.
Re-platforming
Re-platforming involves making some cloud optimizations without changing the core application architecture. For example, a company might containerize its .NET application using Windows Containers and deploy it to Azure Kubernetes Service (AKS). This approach keeps the application largely intact but improves portability, deployment consistency, and scalability.
Here is a sample Dockerfile for a .NET application:
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["MyApp.csproj", "."]
RUN dotnet restore "./MyApp.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "MyApp.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "MyApp.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyApp.dll"]
Refactoring
Refactoring involves modifying the application to take fuller advantage of cloud-native features and services. This could include breaking a monolithic application into microservices or using Azure Platform as a Service offerings for compute, data, and messaging.
For example, a .NET application could be refactored to use Azure Functions for compute, Azure Cosmos DB for data, and Azure Service Bus for messaging:
[FunctionName("ProcessOrder")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
[CosmosDB(
databaseName: "Orders",
collectionName: "Orders",
ConnectionStringSetting = "CosmosDBConnection")] IAsyncCollector<Order> orderData,
[ServiceBus("orders", Connection = "ServiceBusConnection")] IAsyncCollector<Message> orderMessages,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
Order order = JsonConvert.DeserializeObject<Order>(requestBody);
await orderData.AddAsync(order);
log.LogInformation($"Order {order.OrderId} added to CosmosDB.");
var message = new Message(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(order)));
await orderMessages.AddAsync(message);
log.LogInformation($"Order message sent to Service Bus.");
return new OkResult();
}
Rebuilding
Rebuilding involves completely re-architecting or rewriting the application for the cloud. This requires the most effort, but it also creates the greatest opportunity to optimize the application for cloud scalability, resilience, performance, and cost efficiency.
Lift and shift is often the quickest and simplest path because it does not require extensive application changes. However, that speed comes with tradeoffs. It may not fully use all of the capabilities and benefits that Azure offers. For many organizations, lift and shift is best viewed as a practical first step, not necessarily the final destination.
Lift and Shift Benefits and Drawbacks
Lift and shift migrations offer several compelling benefits, especially for organizations that need to move quickly or reduce risk during an initial cloud migration.
Benefits of Lift and Shift
- Speed: Lift and shift is usually the fastest way to get applications running in the cloud because it does not require re-architecting or major code changes. This is especially valuable for organizations with tight deadlines to exit a data center or migrate away from unsupported systems.
- Ease: Without the need for extensive refactoring, lift and shift typically requires less upfront effort and expense compared to other migration strategies. This can help organizations achieve cloud benefits sooner while staying within a limited budget.
- Lower Risk: Maintaining the same basic architecture and functionality reduces the risk of migration issues or business disruption. Compared to a full rewrite, lift and shift can be a safer way to get started.
Drawbacks of Lift and Shift
- Limited Cloud Benefits: Lifted-and-shifted applications may not fully take advantage of Azure’s PaaS offerings, serverless options, or cloud-native scalability features. This can limit the scalability, resilience, and optimization benefits realized from the cloud.
- Limited Scalability: Applications moved as-is may not be architected to scale or adapt easily in Azure. They may still require manual intervention to scale, patch, or update, reducing some of the agility benefits of cloud adoption.
- Higher Long-Term Costs: While upfront costs may be lower, lifted-and-shifted applications can be more expensive to run in Azure over time compared to applications that have been optimized for the cloud. They may not fully use cost-saving features like Reserved Instances, auto-scaling, or other optimization options.
Here’s what that means in practice. Lift and shift can help you move quickly, but it should still be part of a broader cloud strategy. Once the workload is stable in Azure, you can evaluate which parts of the application should be modernized next.
When to Use Lift and Shift
Lift and shift is particularly well-suited for certain migration scenarios. One common use case is exiting a data center. For organizations looking to quickly leave an in-house data center or co-location facility, lift and shift to Azure offers a rapid path to the cloud. In these scenarios, speed of migration is often the top priority.
Another good fit is migrating legacy applications. Older applications that would be difficult or risky to refactor can be strong candidates for lift and shift. This may include legacy .NET applications, complex SharePoint deployments, or applications with architectures that are already compatible with Azure Infrastructure as a Service.
Lift and shift can also be a good first step for organizations that are new to Azure. It allows teams to gain operational experience, realize quick wins, and begin moving workloads out of aging infrastructure. After that initial migration, the organization can optimize and re-architect strategically based on what it learns.
Consider a retail company running an e-commerce site on-premises using Windows Server, IIS, and SQL Server. The servers are reaching end-of-life, and the business wants to exit its data center within nine months. However, the application is complex and has many dependencies. A lift and shift to Azure VMs and Azure SQL Database could allow the company to meet its deadline and begin benefiting from Azure without the risk of rushed refactoring.
Once the application is running in Azure, the company can plan a phased modernization to Azure App Service, Azure Functions, and Azure Cosmos DB. This approach allows the business to address the immediate infrastructure problem first, then improve the application over time.
The suitability of lift and shift depends on your goals, timelines, and resources. If rapid migration and risk reduction are top priorities, lift and shift to Azure is often an attractive option. If your primary goals are to maximize cloud-native benefits and future-proof the architecture, another migration strategy may be a better fit.
Conclusion
Lift and shift migration is a quick way to move applications to Azure by replicating the on-premises environment in the cloud. It allows organizations to gain some cloud benefits without making major changes to the application. This can be valuable when time, budget, or risk constraints make a full modernization effort unrealistic.
That said, lift and shift is not always the final answer. In many cases, a mix of lift and shift, re-platforming, refactoring, and rebuilding works best. Regardless of the approach, careful planning and execution are essential for a successful migration and for realizing the full benefits of Azure.
Are you ready to implement a lift and shift cloud migration for your organization? Read our lift and shift process blog for more information or reach out to our team for support.
How Emergent Software Can Help
We help organizations plan and execute cloud migrations that align with their business goals, technical constraints, and long-term modernization strategy. Whether you need to move quickly with lift and shift, re-platform workloads to Azure services, or refactor applications over time, our team brings experience across Azure cloud services, custom software development, data engineering, and DevOps. If this sounds familiar, we can help.
Final Thoughts
Lift and shift is useful because it solves a real problem: getting workloads to the cloud quickly with less disruption. For organizations facing data center deadlines, aging infrastructure, or unsupported systems, that speed can matter more than immediate optimization.
The important part is knowing what lift and shift can and cannot do. It can help you move fast, reduce short-term risk, and begin your cloud journey. But to capture the full value of Azure, you may eventually need to optimize, re-platform, or refactor parts of the application.
If you're ready to build a cloud migration strategy that balances speed, risk, and long-term value, Emergent Software is here to help. Reach out — we'd love to learn more about your goals.
Frequently Asked Questions
How does lift and shift work?
Lift and shift works by moving an application and its associated data to the cloud without redesigning the application. The goal is to recreate the existing environment using cloud infrastructure such as virtual machines, storage, and networking. This allows the application to run in the cloud with minimal code or architecture changes. It is often used when speed and risk reduction are the top priorities. After the move, organizations can decide whether to optimize or modernize the application further.
What is an example of lift and shift?
A common example of lift and shift is moving a legacy .NET application from on-premises servers to Azure Virtual Machines. The application may still run on Windows Server and use SQL Server, but the infrastructure is now hosted in Azure. This allows the organization to exit aging hardware or a data center without rewriting the application. It also creates a path for later modernization. Once the workload is stable in Azure, the team can evaluate whether to move parts of it to services like Azure App Service or Azure SQL Database.
What is lift and shift in Azure?
Lift and shift in Azure refers to migrating an existing application or workload to Microsoft Azure without making significant changes to its architecture or codebase. The application is often moved to Azure Virtual Machines or similar cloud infrastructure that mirrors the original environment. This approach helps organizations move quickly while maintaining familiar operating patterns. It is often used as a first step in cloud adoption. Over time, the organization can improve scalability, reliability, and cost efficiency by adopting additional Azure services.
What are lift and shift services?
Lift and shift services are cloud migration services that help move applications to the cloud without major refactoring. These services may include assessment, migration planning, server replication, testing, cutover support, and post-migration validation. In Azure, tools such as Azure Migrate and Azure Site Recovery can support this type of migration. A consulting partner can also help determine whether lift and shift is the right approach for each workload. The goal is to move efficiently while reducing downtime and business disruption.
What are the main drawbacks of lift and shift?
The main drawback of lift and shift is that the application may not fully take advantage of cloud-native capabilities. A workload moved as-is may still require manual scaling, traditional patching, and the same operational practices it needed on-premises. This can limit cost savings, resilience, and agility. In some cases, lifted-and-shifted applications may even cost more over time than modernized cloud-native applications. That is why lift and shift is often best used as an initial migration step, followed by targeted optimization.
When should you avoid lift and shift?
You may want to avoid lift and shift when your primary goal is to maximize cloud-native benefits from the start. If the application needs major scalability improvements, performance changes, or architectural modernization, refactoring or rebuilding may be a better long-term option. Lift and shift may also be less useful for applications that are already unstable or poorly designed. Moving a problematic application to the cloud without fixing underlying issues can simply move the same problems to a new environment. A careful assessment can help determine the right strategy.