Enterprises are moving hundreds or even thousands of applications to the cloud. This was once a straightforward, if difficult, process that focused on lifting and shifting the application. These days, other emerging patterns should be considered.
Lift and shift is the most popular way to migrate applications, and it was really the only method that enterprises used in the past. It's cheap, it's fast, it works -- all pluses for American businesses.
I've previously covered the deficits involved in lift and shift, but in a nutshell they are not taking advantage of cloud-native features and not getting strong performance or cost-effectiveness.
What are those other migration patterns? The two main ones are the use of containers and making applications cloud-native.
To become cloud-native, applications are modified to take direct advantage of a specific cloud provider's capabilities, such as provisioning and deprovisioning resources versus having the cloud itself autoscale or autoprovision. The cloud-native approach is not new, but it requires skill and time that many IT organizations haven't had.
Containers are a new approach, and using them falls somewhere between lift and shift and cloud-native. You still need to modify the applications, but you're not writing to a specific cloud. Instead, you break up the application to encapsulate those pieces into containers, such as Docker. The containers abstract the application from the underlying platform, so the application should be portable to other platforms that support the same container standards.
You can orchestrate and cluster containers using tools like Kubernetes or Docker Swarm, and the ecosystems around containers continues to explode. The trade-off versus lift and shift: There is additional work, but as a benefit, your application should be portable from cloud to cloud, unlike cloud-native applications.
Few people deny that the cloud is a great platform for the future. But many enterprises may not be using all of the available cloud migration patterns. Before you embark on an application-migration project:
- Understand what your applications do, and define their importance to the business.
- Assign a complexity ranking for each application, in terms of the amount of work required to redesign or refactor each application.
- Assess all the migration patterns for each application. It will never be all lift and shift, all cloud-native, or all containers.