Moving applications to the cloud: Lift-and-shift, refactor, or containers

clouds-above-highway

There’s no question we’re moving our applications to the cloud. We started with Infrastructure-as-a-Service (IaaS) for our data, and now most of us are considering  Platform-as-a-Service (PaaS) for our programs. The question is, how will we move our programs to PaaS? You have three main choices: Lift-and-shift, refactor, or containers.

With life-and-shift, you simply port your application to the cloud with the least amount of code changes. Short and sweet. 

Programs where the application logic is tightly coupled to the data can work well for lift-and-shift. It can be expensive to refactor such applications or to fit them into containers. Besides, if the native application will run well on the cloud, there’s no need to do more.

While lift-and-shift is simple and fast, it may not be the best because it doesn’t take advantage of any cloud-specific tools. It also can be more expensive to run if it doesn’t make the most of the cloud-native environment.

Still, for some applications lift-and-shift works well. That said, if you move an application to the cloud just because quick and dirty works for you now, keep in mind  this is a decision you will come back and re-examine.

With refactoring,  you customize your application’s code to run in a cloud. There are two varieties: Partial, where you modify specific parts of your program, and complete, where you change the whole kit-and-kaboodle.

Each has its advantages and disadvantages, and they’re easy to sum up. The more you refactor your code, the better it will run on the cloud. But, the more you refactor, the higher your upfront bill and the more time it will take to deploy your project.

Containers can work with either lift-and-shift or refactoring. Containers also have many advantages of their own.

For example, containers save you both compute time and system resources, which, in turn, saves you money. Containers also make it easy to test and deploy your applications.

What’s more, because a well-made container only uses the dependencies it needs to run a given application, it tends to be both less complex and more stable.

Containers also lend themselves to DevOps tools, such as Ansible, Chef, and Puppet. This gives you the advantage of making it easy to automate your cloud-based software management and deployment.

And later on in your cloud migration you can use containers to step into continuous integration and delivery (CI/CD).

You can, of course, use all these methods. Take a long, close look at your server programs and see which method will work best for each of them. Then you’ll be ready to make the most out of your cloud journey.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: