The cloud has inarguably defined computing in the last decade, and cloud storage is amongst the best investments a business can make. The cloud offers many advantages over conventional data storage, the main ones being security, accessibility, and flexibility. Sounds great right?
However, data and application migration to the cloud can cause a lot of headaches for system architects when faced with the seemingly simple directive: move everything to the cloud. Whatever the specifics of a project, there are five main approaches to cloud migration.
First on the list of best practices is rehosting, also known as “lift and shift”, and it is a common intermediate step when first breaking away from outdated hardware storage. In a nutshell, rehosting is the changing of an app’s configuration in order to redeploy to a different hardware environment. His method is appealing to businesses planning to move to the cloud to avoid the costs of replacing or expanding existing architecture.
Rehosting an application without making changes to its architecture is a fast migration solution, but can have many disadvantages in the long run. Although rehosting is a quick fix, many of the benefits that cloud architecture provides are lost by using IaaS, the main one being scalability and synergy between different systems.
[pullquote]Refactoring is the process of running apps on the infrastructure of a cloud provider.[/pullquote] This means making changes to the structure of your code in order to take full advantage of the functionalities of the cloud. This refactoring may be rather costly in the short term and can be more risky than a simple lift and shift approach but yields dividends in the long run.
When refactored correctly, apps migrated to the cloud use resources such as cloud compute, storage and databases more effectively; as well as scaling well. PaaS also allows developers to reuse code, frameworks, and containers; which saves a lot of time and effort. Downsides of refactoring include framework lock-in, transitive risks and missing functionalities.
This method can be considered a prerequisite to rehosting or refactoring. It consists of extending and/or modifying code in order to be compatible with legacy modernization requirements. Revising gives organizations the ability to optimize their application to best take advantage of the characteristics of a cloud provider’s infrastructure.
The most apparent disadvantage of refactoring a large-scale development project is that it requires major expenses in order to mobilize a team of developers. Of all the methods listed here, revising is an option that, depending on scale, will take the most time to deliver a return on investment when it comes to capabilities.
This approach consists of rebuilding the entire solution on PaaS by doing away with existing code and completely rewriting, i.e. rebuilding, the application. By doing this, all of the existing framework and code is trashed. However, using cloud-native applications is extremely beneficial when it comes to implementing innovative features in the provider’s platform.
A good example of this is Salesforce and even live FX charts. These new features can go a long way towards improving developer’s productivity and include tools that build application templates and allow data model customization. Additionally, developers can reap the benefits of metadata-driven engines and prebuilt components.
The main potential downfall of this method is lock-in, as product owners are extremely vulnerable to changes on the side of the provider. For example, providers can make technical or financial changes that are unacceptable to the consumer and may force them to abandon some or all of its application assets.
The last of the R’s is Replace: completely discarding an application in favor of a commercial software solution. This option is a solid solution in situations where desktop app architecture is not applicable to the cloud, thus making migration impossible.
The replace method eliminates costs associated with mobilizing a dev team and is great for projects where business requirements change quickly. Inconsistent data semantics and data issues can plague projects that implement this approach, as well as the risk of vendor lock-in.
Companies that are considering app migration into the cloud should carefully consider what approach to take. The complexity of migrating legacy data and applications varies greatly and depends on evaluation criteria, organization needs, architecture principles, licensing, and many other factors. While a particular approach may be ideal for one business, it may prove detrimental to the next.
If you are interested in even more cloud-related articles and information from us here at Bit Rebels then we have a lot to choose from.