The Best Cloud Migration Approach: Lift-And-Shift, Replatform, Or Refactor?
There are a number of ways to get your applications to the cloud, but the question of which method to use is a little up in the air.
Join the DZone community and get the full member experience.Join For Free
Migrating to a new infrastructure or environment is both thrilling and challenging. It is exciting because the move is usually accompanied by additional resources and new features being made available. These additions are almost always good for the app and the developers behind it. At the same time, the actual process of migrating to the cloud is cumbersome and often difficult to handle.
Cloud migration doesn’t always have to be a hassle though, you simply need to strategize for the move appropriately. Which is why one of the things you need to do when planning for cloud migration is to weigh up the best approach to use. However, there are so many approaches to choose from. In this article, we are going to focus on three of the main trends. Rehosting, replatforming or refactoring. Which of these methods is the best?
Rehosting, also known as lift-and-shift migration, is often considered to be the simplest approach to cloud migration. A rehost simply means taking the entire application from its old infrastructure and moving it to the Cloud, all without making changes or adjustments to the code. This is also why rehosting is known as lift-and-shift: you lift the code out of an environment and shift it to another.
As you may have guessed, rehosting requires less time and fewer resources to execute. It is the fastest approach of them all due to the lack of data and code modifications. That said, rehosting is not always the most efficient way to go.
For starters, you don’t always benefit from the native cloud functionality and tools when the migration is done this way. The app still functions the way it would in a single physical server, and it does not take advantage of the extra flexibility and scalability offered by cloud environments.
Replatform migration is the middle ground between the three approaches we are discussing in this article. It is very similar to rehosting in that the code is not altered excessively. However, replatforming involves a bit of modification for the purpose of taking advantage of the new cloud infrastructure.
There are some common modifications that are usually performed during replatforming. For example, you may choose to modify the way the app interacts with the database to benefit from automation and a more capable database infrastructure.
You can also add new features during replatforming to enable better scaling and allow the app to benefit from the reserved resources of your cloud environment. There are even ways to integrate the app with native features of the Cloud while keeping code modifications at a minimum.
Replatforming is a very cost-efficient solution. You don’t need to adjust the cloud server to match the previous environment. Instead, you have the opportunity to start small and scale up as needed, which means you save a lot of money while the cloud environment grows with the app itself. The trap with replatforming is that during the process the project scope can change and grow if unchecked to become a complete refactor. Managing scope and avoiding unnecessary changes is key to mitigating this risk.
The third approach is known as refactor migration. It involves a complete re-architecting of the app to better suit the new cloud environment. This often involves modifying the app itself and a large chunk of its codes to better take advantage of cloud-based features and the extra flexibility that comes with them.
In many cases, refactoring could also lead to a switch to a cloud-native framework for better overall performance and efficiency. The app can even be tailored to specific cloud services such as AKS and GKE.
Refactoring is a complex process, but it is well worth the improvement that you get in return. It is a resource-intensive process; one that requires a lot of time to complete. Some companies even go as far as refactoring parts of their business solutions to make the whole process more manageable. This compartmentalization could also lead to the refactor becoming longer and more resource-intensive.
Which One Is The Best?
There is no definitive answer to this question, especially since different use cases require different things. Choosing between the three approaches is a matter of finding one that suits your specific needs best. That said, there is a way to determine whether one of these three cloud migration approaches will suit you better than the others.
Start by checking if the app can be moved to a cloud environment in its entirety while maintaining running costs and keeping operational efficiency in check. If the answer is yes, starting with a rehost is a good idea.
If rehosting is not an option or if cost-efficiency is at a level that needs to be improved, you can also consider replatforming as the approach to take. Remember that not all apps can be migrated this way, so you may end up having to find other solutions entirely.
The same can be said for refactoring. Do you have the time and resources to complete a full refactor of your current solutions? While trying to answer this question, take SaaS solutions and other alternatives into consideration. You will end up with the best approach by going through these stages.
Nevertheless, you can certainly take (most of) the hassle out of moving to the cloud with the right cloud migration strategy. You will be left with the exciting part: finding new resources to use, better flexibility to benefit from, and a more effective environment for your apps.
If you’re interested in cloud migration, here at Ibexlabs to allow our team of experts to make your worklife much easier.
This post was originally published here.
Published at DZone with permission of Narendar Nallamala. See the original article here.
Opinions expressed by DZone contributors are their own.