Cloud migration: defining rehosting, replatforming and refactoring (Part 1 of 2)

Cloud migration is a complex procedure for any DevOps team, but a number of new software tools are available to make the process easier. Cloud migration can include software application code that is transferred from a private data center or between public cloud hosting hardware resources. Most of the third-party cloud migration software is required to be installed on the original database or application server, while many public cloud hosts offer remote-hosted migration options. Cloud migration from private data centers is fueling massive growth at AWS, Microsoft Azure, Google Cloud, IBM, & Oracle.

In the first installment of this two-part series, we’ll discuss rehosting, replatforming, and refactoring, which have become the most popular DevOps methodologies for cloud migration. We’ll define the terms and discuss the advantages of each approach for legacy web/mobile applications. In part two: “Cloud migration: choosing between rehosting, replatforming and refactoring“, we’ll consider the factors IT pros and business owners need to evaluate when deciding whether to rehost, replatform, or refactor. Knowing which cloud migration method is most appropriate for a particular codebase is the pre-requisite to major IT resource acquisition, department-level purchasing, and talent organization.

Rehosting: The “Lift & Shift” Approach to Cloud Migration

Rehosting is common in web development as companies routinely move their website code and databases between service providers to take advantage of costs savings or more storage, bandwidth, etc. on different plans. The “Lift & Shift” approach to cloud migration involves taking the original code for the web/mobile application and transferring it directly to the new web server. For example, a copy of the MySQL database can be made and installed on another hardware instance from a new vendor. When the PHP, HTML, and other required files are moved, the DNS settings are changed to the public cloud host and the migration is complete. This approach requires extensive testing and debugging.

One of the main problems with the “Lift & Shift” approach and custom code is web server software stack version compatibility. Most web/mobile application code includes dependencies which may not be standardized between vendor configurations. This can lead to unexpected runtime errors, software bugs, glitches, or security issues. Taking a full stack approach to rehosting and using complete disk images with Docker containers can solve this issue. Web/mobile applications running in Kubernetes with container virtualization utilize full disk image prints to make cloud migration simple using the rehosting approach, one of the main principles of the Cloud Native Computing Foundation.

Replatforming: The “Resource Upgrade” Approach to Cloud Migration

Replatforming is a cloud migration approach that is most suitable for the upgrade of hardware and software resources for legacy applications. Under this model, the web/mobile application may be running under shared hosting, virtual private servers, or on-premises in a corporate data center. The developers or business ownership seeks to take advantage of public cloud hosting facilities for the savings on hardware costs, elastic scaling platforms, load balancing, etc. or to make use of other DBaaS/SaaS/PaaS options. The code and database from the old hardware is ported to the cloud, often with the use of third-party utilities. Public cloud hosts may provide free resources or technical support.

Google, Microsoft, and AWS all have their own proprietary cloud migration software which is tailored to suit the needs of each market sector from small business to enterprise. Third-party development companies offering software utilities for cloud migration include Carbonite, Corent, Micro Focus, Turbonomic, NetApp, & VMware. Velostrata and CloudHealth Technologies were startups in this field acquired by Google and VMware respectively for cloud migration usage. Most of the Fortune 500 is in the process of replatforming from private data centers to public cloud hardware, and in many instances also reformat code to take advantage of DBaaS/SaaS/PaaS products available through the IT majors.

Refactoring: The “New Code” Approach to Cloud Migration

With refactoring, companies take a “new code” approach to cloud migration, updating legacy applications to function on remote hardware with containers or migrating databases to new formats. Serverless solutions are becoming increasingly popular, where code can be added to existing applications to optimize functionality or add new features. AI/ML integration can be added to ecommerce applications for product recommendations, to media websites for content, or to social networks for friend suggestions. Code running on VPS platforms with a custom OS and web server stack software can be updated to run in Docker containers with Kubernetes orchestration. In this manner, legacy applications can be modernized and companies can take advantage of cloud resources.

Refactoring can involve a complete change of programming languages or database formats which has the disadvantage of being initially expensive but allows legacy applications to operate in cloud containers or elastic web server frameworks. When the result is the elimination of in-house private data centers, the expectation is long-term cost savings, better security, and support for more web traffic through public cloud facilities. DevOps teams practice continuous integration and continuous delivery (CI/CD) to roll out new changes to web/mobile applications more quickly or apply security patches to production code. Refactoring brings legacy applications and databases up-to-date with the latest DevOps standards to take advantage of the recent advances in cloud innovation.

Cloud Migration: Ecosystem Tools, Cost-Efficiency, and Innovation

One of the main factors to look for in cloud migration is the ecosystem tools provided by the public cloud hosting company. Enterprise corporations and small business both seek to build upon Microsoft, Google, and AWS platforms because of the advantages of the DBaaS/SaaS/PaaS products they offer. The use of public cloud hardware has significant costs savings over in-house data center maintenance. Cloud innovation boosts the efficiency of legacy applications and databases in runtime, improving customer relations and supporting more web traffic per VM.

Rehosting, replatforming, and refactoring are the recommended approaches for legacy application modernization in Enterprise IT to accomplish cloud migration using established DevOps practices.