Cloud migration: choosing between rehosting, replatforming and refactoring (Part 2 of 2)
Making an efficient inventory of IT resources is the first step in preparing a legacy software application or production code for cloud migration. The original web server configuration must be considered, where many enterprise databases are still running in private data centers on archaic standards. The viability of the source code for cloud hosting may be increased by the use of containers and disk image prints to deploy with guaranteed consistency of web server configurations. Nevertheless, there are still many instances where the best choice is to recode the application functionality on a new framework.
Due to the fact that the costs of refactoring a web or mobile application codebase or legacy enterprise application can be expensive, many corporations choose replatforming for cloud migration and just make minor adjustments to the script or database to host on public cloud PaaS/DBaaS plans. This leads to wide cost savings over in-house data center investment and maintenance of private cloud orchestration. Some companies have state-of-the-art web/mobile applications already in production and just need to “lift & shift” the codebase to another cloud service provider to save costs on hardware, storage, or bandwidth.
Following the first article in the series: “Cloud migration: defining rehosting, replatforming and refactoring“, which defined the terms, this article will review the main aspects to consider when choosing a cloud migration or upgrade path for legacy software applications or enterprise-scale web/mobile apps running on public cloud hardware.
Business owners and IT administrators need to know when to rehost, refactor, or replatform code, as well as the costs involved with each approach in the short and long term. Enterprise corporations with huge investments in custom code or massive database requirements to support must consider their cloud strategy by visualizing all elements of the software lifecycle with regards to DevOps best practices.
Rehosting: The “Lift & Shift” Approach to Cloud Migration
Rehosting using DevOps tools and techniques should be a routinely trivial procedure without extraordinary costs or complex requirements. DevOps teams make extensive use of version control software like Git, Subversion, or CVS, as well as utilizing sandboxing for testing and local development environments. The use of Docker containers is based around complete web server stack disk image prints that can be booted in less than a second in production. The disk image includes the web/mobile application code, database, web server software, and operating system in a complete package. Kubernetes orchestration using container virtualization is vendor agnostic, so migrating between public cloud hosting plans is simpler, and companies can secure the best costs on hardware.
Businesses operating thoroughly modern cloud applications with DevOps best practices should consider rehosting as the main option for cloud migration. Continuous Integration / Continuous Delivery (CI/CD) requirements established by Agile teams in cloud software development is standard across enterprise and startup programming teams. And the good news is that business owners shouldn’t expect a major investment or talent organization requirement for rehosting. Many public cloud hosting companies provide migration software to automate the process. Often rehosting can be accomplished for web/mobile applications in under a few hours. DevOps teams merely need to copy the database, code, and website files between cloud platforms or use version control to transfer the data. This type of agility is a main component of DevOps best practices and saves businesses significant money in the long term.
Replatforming: The “Resource Upgrade” Approach to Cloud Migration
Replatforming is similar to rehosting in many ways but normally requires some adjustment to code or database formats to take advantage of PaaS/DBaaS cost savings. The most common example is businesses running Microsoft software in a private data center migrating to the Microsoft Azure platform. Microsoft offers automated tools for cloud migration but for complex web/mobile applications, such as those built in ASP.Net, C+/C++, Java, PHP, or Python, some code optimization is to be expected to streamline operations in the new environment. Best practice is to have in-house programming and development teams manage the cloud migration or hire expert consultants.
Many web/mobile applications built on MySQL databases migrate to AWS for elastic web server support. The use of Docker containers facilitates replatforming and reduces costs significantly where the code may only require minor changes to support elastic load balancing or the use of NGINX web servers in production. Similarly, companies seek to take advantage of better caching facilities using Redis, Varnish Cache, or CDN integration. Serverless frameworks allow new code to be written on top of an existing application, operating in parallel. Applications running in VPS may need to be modified to run on Alpine Linux, CoreOS, or RancherOS in containers for production. Otherwise, companies may shift their database support from private servers to DBaaS platforms, requiring technical support and minor recoding of existing software applications to accomplish.
Refactoring: The “New Code” Approach to Cloud Migration
Refactoring is most common for legacy enterprise software applications that have not been modernized and run on archaic or degraded standards. Many enterprise corporations still maintain software and databases on mainframes in private data centers for internal operations, product orders, logistics, or customer support. When migrating these applications to cloud hardware, often a complete recode of the software is required. AWS is estimating $100s of billions of USD in revenue in the next 10 years from legacy application modernization in enterprise corporations. Consultants expect similar amounts for custom programming and systems administration as outdated products are modernized for the cloud era.
The main reasons for refactoring is that the software code or database is running in a private cloud or in-house data center on archaic standards and is outdated. By reprogramming legacy software applications, enterprise corporations save large amounts of money on IT spend simply by increasing the processing efficiency of hardware. Migrating a “Big Data” application from legacy database standards to a DBaaS platform is complex may require more expert talent to be recruited. Enterprise corporations save money by contracting with consultant groups and integrators on a limited time basis vs. recruiting in-house IT employees and expert staff. Eliminating the need for private data centers with staff overhead is one of the largest savings for big companies, offset by the high cost of refactoring legacy applications.
Cloud Migration: Ecosystem Tools, Cost-Efficiency, and Innovation
Making efficient use of public cloud migration tools from Google, Microsoft Azure, and AWS is the easiest way to transfer complex code and databases between vendors. Third-party developers like VMware, NetApp, Mirantis, Nutanix, CloudFoundry, and Heroku are popular with enterprise DevOps teams for managing cloud migrations. Rehosting should be a simple process for businesses operating under DevOps best practices with version control and CI/CD. Replatforming is becoming more seamless through the use of Docker containers, Kubernetes, and multi-cloud software. Refactoring is a necessity for legacy enterprise software and database applications that need modernization for cloud hosting at scale.