Your migration to cloud options will depend on many factors: What are your most pressing needs? What are the skills on your team? Where are your apps in the development lifecycle?
Ggenerally they fall into one of five categories (see picture).
Five Options for Migrating Applications to the Cloud
Rehost
Also known as “lift and shift,” this strategy entails migrating your physical servers and VMs to the cloud just as they are.
By simply shifting your current server environment straight to IaaS, you reap the benefits of cost savings, security, and increased reliability. In the new rehosted cloud model, hardware and OS you previously managed yourself are now managed by the cloud provider. All other aspects of the workload or application remain the same. This is a highly popular migration approach because it lets organizations move quickly with little risk or impact and receive immediate benefits. It also allows organizations to see lower TCO faster, enabling investment back into the migration process that can then evolve through the model.
Refactor
This strategy involves using additional cloud provider services to optimize cost, reliability, and performance by refactoring your applications.
In rehost, you only use provider-managed hardware and OS, but in this model, you also take advantage of cloud services to drive down cost. You continue to use your current application as-is, with some minor application code or configuration changes, and connect the app to new infrastructure services like Azure App Service, Azure SQL Database Managed Instance, and containers. By employing modernized services, you can reduce both cost and management.
Rearchitect
This strategy involves rearchitecting an application to modernize it—that is, to transform it with a modular architecture.
Rearchitecting is modifying or extending an existing application’s code base to optimize it for a cloud platform and better scalability. Cloud provider services can be used directly as backend services of modern apps, which are highly scalable and reliable. This is likely the most time-consuming way to migrate an app to the cloud because it requires app code changes. One example of rearchitecting would be decomposing a monolithic application into Microservices that work together and readily scale on Microsoft Azure. Another example would be rearchitecting a Microsoft SQL Server database to make it a fully managed Azure SQL Database.
Rebuild
This strategy involves revising the existing application by aggressively adopting PaaS or even Software as a Service (SaaS) services and architecture.
The process encompasses major revisions to add new functionality or to building the app from scratch the application for the cloud. An example of rebuilding would be redesigning code to decompose the original application into smaller chunks, and then deploying using cloud-native technologies.
Replace
This strategy involves moving or discarding an existing application and replacing it with commercial software delivered as a service.
SaaS provides a complete software solution that you purchase on a pay-as-you-go basis from a cloud service provider. When you choose this option, all underlying infrastructure, middleware, app software, and app data are managed by a service provider and located in the service provider’s datacenter. The service provider manages the hardware and software and, with the appropriate service agreement, ensures the availability and security of the app and its data. SaaS can help your organization quickly launch an app at minimal upfront cost. Typically, you migrate existing data to the SaaS environment and import/export application data with an API or configuration/admin console.
Summary
Lift and shift is the most common (and fastest) first strategy, enabling you to move quickly to the cloud. By understanding your business processes, you can easily map the next best strategies for each workload based on goals, effort, and complexity. An advantage of this approach is that it enables you to sustain parallel migration efforts. And, as your migration projects continue, you can easily start modernizing certain applications to PaaS and even SaaS options. This strategy involves moving or discarding an existing application and replacing it with commercial software delivered as a service.
You can start with any of the cloud migration strategies depending upon your existing workloads and cloud adoption path. Workloads can evolve over time, potentially you can define a step-by-step journey for moving workloads from on-premises to the cloud, where you begin depends on the complexity of the workload and, ultimately, what you want out of it. For example, if you have a simple web application hosted in Windows Server Internet Information Services (IIS) and connected to a database, it might make sense to proceed directly to cloud optimization. In this case, you could migrate the application to Azure App Service and Azure SQL Database. To do this, you’d need to have a deep understanding of the application, including its complexity and dependencies.