This article originally appeared on Forbes.
With more and more infrastructure and applications moving to the cloud in support of digital transformation, one of the decisions enterprises must confront is the best approach to cloud migration for long-term success. While some favor a lift and shift model, others come down on the side of replatforming or even a refactoring approach. However, there is no single path to success. And, indeed, a hybrid approach is often the ideal answer.
What are the Options?
For companies that want to move their workloads to the cloud, there are multiple migration approaches; however, we will discuss the three most common here. Naturally, there are benefits and disadvantages to each.
- Rehost, (aka Lift and Shift,) is essentially a forklift approach to migrating applications to the cloud, moving them without any code modification. In this case, a VM is treated like a blackbox and copied bit by bit. This approach offers a faster, less resource intensive migration process. However, lift and shift migrations don’t generally benefit from cloud-native features like elasticity and while more cost-effective than on-prem, it can be more costly to run applications in the cloud this way than if you were to replatform or refactor.
- Replatform migrations move assets to the cloud with a small amount of up-versioning -- perhaps using a managed DB offering or the addition of automation enabled auto-scaling -- to benefit from cloud infrastructure. While a slower migration path than rehosting, this approach offers a solid middle ground between rehosting and refactoring, allowing workloads to take advantage of base cloud functionality and cost optimization, without the level of resource commitment required for refactoring.
- Refactor involves a more advanced process of re-architecting and often re-coding some portion of an existing application to take advantage of cloud-native frameworks and functionality. This approach is the most time-consuming and resource intensive, yet can offer the lowest monthly spend of the three approaches. Organizations that refactor are able to modify their applications and infrastructure to take full advantage of cloud-native features and to maximize operational cost efficiency in the cloud.
Migration Path Assessment
By looking at the totality of an IT system, it may be possible to identify which infrastructure and workloads are of low business value and should be retired, and which are of high business value and should be relocated to the cloud.
Organizations should explore the following:
- How strategically imperative is this application to the business? Is it an application that contributes to revenue and should be invested in, or an application necessary for business and hence shall be sustained at the lowest possible TCO? This is important because migrations are often bound by time and budget, and the energy required to replatform/refactor is better invested in invest applications, rather than sustain applications.
- For sustain applications, is it even possible to rehost the application, i.e., are all technologies even runnable in the cloud? If yes, rehosting is the best option. If not, you should look for a SaaS alternative. If found, retire the app. If not, retain it.
- Invest applications require a cost-benefit analysis. Analyze cost in terms of development resources and any business interruptions that may be required from a significant rewrite. Note that sometimes it’s often impossible to refactor applications because the original development teams are currently inaccessible. Also to be considered are the benefits of refactoring which must be computed through careful analysis. If the benefits outweigh the cost, and the direction is achievable within the constraints, refactoring is the right choice. Due to these constraints, companies often re-factor a very small fraction ( <10%) of their portfolio.
For example, if an application suits the serverless computing model (e.g., using AWS Lambda) and the development team has the resources to refactor to use Lambda, refactoring is possible. Next, we evaluate the benefit of moving to Lambda, i.e., will this app really benefit from effortless-scaling and minimal ongoing maintenance. If these benefits are important for the application, refactoring it is feasible and the right choice.
- Lastly, for invest applications, if refactoring is not feasible, replatforming is the right choice. Given tight constraints, we see companies opting to replatform 25%-30% of their portfolio. In these cases, the burden is on the DevOps team to build a harness for the application, which without requiring major code changes, can provide benefits of cloud features such as auto-scaling, self-healing, containers, etc.
For example, an e-commerce website written in a framework which is not suitable for serverless may be replatformed.
For example, an e-commerce website for a retailer is an app that should be invested in, while the employee vacation reporting system for HR is something to sustain. Given typical constraints, it’s best to consider a refactor/replatform for the e-commerce website and a simple rehost for the vacation reporting app.
For example, if the vacation reporting app uses an IBM AS400 machine, it may be best to either replace the app entirely with a different tool or retain the application on-premise rather than investing developer resources to refactor (recode) it for the cloud.
The answers to these questions will shed light on the right strategy which will likely not be a one-size-fits-all approach to the cloud migration. For example, I had the opportunity to work with an enterprise media company on its modernization project. After its migration analysis, the company determined that about 50% of the apps were going to be re-hosted and 10% to be retired or retained on-premise in a co-location facility. Approximately 40% of its apps, which were maintenance-level, yet business critical, were flagged for replatforming/refactoring. In this way, the firm was able to strategically migrate its assets, maximizing cloud benefits for those applications that would gain the most while not spending resources on applications that would benefit minimally.
Cloud computing can offer a wide variety of organizational benefits. However, when planning a cloud migration, it’s important to map organizational goals and the workloads that support them to those cloud features that will help further those goals. With a thorough assessment, any organization can create a solid migration plan tailored to their organization’s short- and long-term business objectives.