What is Cloud Migration?
March 02, 2024
Overview
Cloud Migration is the process of moving digital resources to a Cloud Platform (the destination). The source of this migration decides how we categorize the process. The difficulty and work required is highly dependent on the use case. On smaller (and especially one-person) teams where mature development processes haven't been established, it's easier for code and architecture to become highly coupled. Given that The Cloud itself is a platform where different computing components have been broken down into their own puzzle pieces, migrating highly coupled components (that are more common on smaller teams with less time to build modularity) often involves a process of de-tangling.
Table of Contents
Cloud-Provided Tools
Cloud Providers offer tools to help facilitate a smooth transfer to The Cloud. Tools that migrate data are often more successful than tools that migrate more than just data (e.g. entire applications and their environment). For example, AWS offers a Database Migration Service. This tool migrates data between compatible DB engines. As long as the source DB engine's feature set (offered in that version) is supported in The Cloud product (easy since they likely offer the exact same DB engine and version), the migration should be effortless. Alternatively, tools like AWS's Application Migration Service can be hit or miss.
Possible Sources
On-Premises
Relatively Limited Choice Compared to On-Premises
Cloud Providers provide a limited choice of hardware customization options whereas on-premises hardware is highly customizable and rich with options. This can pose a challenge if applications and systems are very low-level and are tightly coupled to their underlying hardware. If the problem is simply hardware configuration mismatch, then the solution is typically to over-provision Cloud hardware resources.
Cost Savings for Some Workloads
However, Cloud Providers offer products that don't exist in on-premises environments. One of the best examples (and what truly sets Cloud Providers apart from on-premises) is Serverless. These migrations can provide the biggest cost savings because services that are running 24/7 can have their uptime reduced to a fraction if their traffic patterns are sparse.
Geographical Compliance
Migrating from on-premises to The Cloud introduces an element of geographical compliance, especially if there is customer data that is stored in a region other than the on-premises hardware. GDPR is one example, but it's important to perform due diligence and ascertain the requirements for your data's region and your customers' region.
Non-Cloud Host
These migrations can be easier. The hardware offered by non-Cloud hosts is often very similar to the hardware offered by Cloud Providers. The flexibility offered by Cloud Providers is also often greater. The biggest risk to migrating from non-Cloud hosts is if your application is tightly coupled to other applications, your host, or itself. This last case suggests that the application may need to be built from scratch in order to properly use The Cloud tools that are available. For example, if you've built your own message queue service, migrating this component to The Cloud will require removing that component altogether from your application and re-wiring all of its producers and consumers to use The Cloud product.
Other Cloud Provider
These migrations tend to be the easiest. Cloud Providers are relatively very similar compared to each other. The granularity and boundary of each tool tends to be very similar to one another, making one-to-one migrations (of equivalent Cloud tools) potentially easy. You may just need to swap one Cloud Provider's SDK in your application for the other. However, small differences in feature sets may exist that could result in much more work given the use case.
Conclusion
Cloud Migrations can be daunting but exciting undertakings. Refactoring will almost necessarily take place. Entire features will likely disappear, replaced by alternatives provided by The Cloud. In this process, it's important to take extra care before any migration of data or application. Building test infrastructure to assure one-to-one functionality is always a good idea. Finally, be sure to brush up on cloud security best practices, and become familiar with continuous monitoring features.
To be updated with examples.