To migrate an existing workload to cloud, multiple options or strategies are available which could be followed as below:
- Lift and Shift
- Re-Architect/Refactor to make it cloud native
Let us take a look at each of the options below:
1. Lift and Shift:
In this strategy, the application/workload is moved as is to the cloud environment. This is similar to moving virtual machines from on premise to cloud environment. If this approach is used, then the application migrated to the cloud cannot take advantage of any of the cloud features like scalability, availability etc. This approach is generally used as a first step while migrating a large number of small applications or for 3rd party applications whose source code will not be available (and hence cannot be refactored). Sometimes this approach is used just to move away from the traditional datacenter to cloud and then tackle each of the application individually to refactor or re-Architect.
2. Re-Architect/Refactor to make it cloud native:
In this strategy, the application is refactored and often re-Architected to make it cloud native and thus enable the application to be distributed and make full use of cloud features like scalability, availability etc. This approach would be feasible if the application is written using any of the modern languages (this is the bare minimum criteria). Refactoring/re-Architecting cannot be done overnight and sometimes this could involve multiple iterations, so some parts of the application might reside on cloud whereas some might reside on premise, for certain duration, until the entire application is refactored.
In this strategy, the application is rewritten from scratch and deployed on the cloud. This approach is generally used if the legacy application is built on mainframe or if the source code of the application is not available (3rd party application), or sometimes if the cost of refactoring is more than the cost of rewriting.