Many organizations decide to migrate their services and infrastructure to the cloud. In this way, they want to reduce server maintenance costs and, above all, ensure scalability and high availability of applications. Unfortunately, the process of moving services to the cloud may prove to be very costly and laborious. Sometimes it turns out that it is necessary to rewrite the application to support solutions available in the cloud. There are many ways to deal with this and one of them is the “lift-and-shift” approach.
In order to take full advantage of the benefits of migration to the cloud, we need to prepare the application to operate in a distributed environment and change its architecture in such a way that it is scalable. One of such methodologies for building applications is The twelve-factor app – application of twelve factors.
What is lift-and-shift?
One way to move services to clouds is to “upgrade and move” the current infrastructure from physical servers to cloud servers. This solution assumes the mapping of current solutions in services such as AWS, Digital Ocean or Microsoft Azure. Due to the fact that our application cannot take full advantage of cloud solutions (e.g. Auto Scaling group, CDN), it may turn out that it is not the cheapest solution. Sometimes a virtual server with the same power as our physical machine is much more expensive. Nevertheless, this solution allows for the fastest migration of solutions to the cloud. It also allows you to forget about such problems as managing your own server room, or damage to e.g. drives in the server.
The next step after migrating to the cloud should be rewriting the application to take full advantage of the new environment. A lift-and-shift approach is also a good solution for Disaster Recovery. Our infrastructure can be prepared for cloud services and used only when we switch from the main Data Center.
Application application is not equal to
Before deciding whether to move an application to the cloud using “lift-and-shift” or first change its architecture, we need to think about some criteria. Not every application is suitable for a simple transfer to cloud solutions. For example, if we use powerful servers, on which the software is used to count analysis or uses GPUs, we should first think about rewriting the application in such a way that it can work on many distributed servers. Migrating to a 1:1 cloud may not be possible, very expensive or we will not achieve the expected performance.
Small businesses may face a problem with insufficient resources to migrate to the cloud. They may be stuck at the stage of moving services to cloud servers, and will not find time to rewrite applications later.