Introduction
“I don’t need a hard disk in my computer if I can get to the server faster… carrying around these non-connected computers is Byzantine by comparison.”
said a certain Mr. Steve Jobs talking about the cloud.
Why are CTOs and CIOs all over the world excited about migrating to the cloud? Why is there so much rush and buzz about going to the cloud?
‘Why not?“
says me.
If something provides on-demand availability, elasticity, flexibility, reliability, better business continuity and security while being light on the wallet – why not? But mere thinking about migrating to the cloud does not take us to the cloud. Migration to the cloud is hard. It can get messy! So there needs to be a strategy, a structure and method to this whole madness.
It is hard because there is no sure shot answer to which strategy is the best. There are 3 main variables to the equation- tweaking which could change the strategy you might want to use:-
- Lead Time: How much lead time have you got?
- Cost/Effort: What’s your budget?
- Complexity: How complex is it going be?
This blog talks about high-level strategies that will help businesses to migrate to the cloud and how these strategies fit against the variables mentioned above.
Let’s get into it.
6 R’s of migration
The phrase ‘6 R’s of Migration’ was first coined by Gartner back in 2011, and now it is being used a standard to talk about migration. Here are the most commonly used migration strategies generalized: –
- Rehosting
Also known as “lift and shift”. This means – migrate the applications, services, databases without any changes. In the large-scale, legacy migrations involving a portfolio of apps and services – organizations typically go for lift and shift as the first step since these can be get done with quickly and help meet business objectives at the same time.
It is worth to be noted that, the re-hosted applications might not be completely optimized from the get-go. It certainly requires enhancements after the migration to be fully cloud-native and cloud optimized. However, this strategy can be looked at as something that provides quick wins.
- Re-platforming
As part of this strategy, while the core architecture is still kept intact, certain cloud optimizations or tweaks are applied to the apps, services or databases.
An example could be migrating your existing My SQL relational databases to the Azure SQL Database Service or migrating your IIS based ASP.NET Web App to a fully-managed Platform As a Service offering. In both these examples, there is no change to the overall architecture – but there is a tangible change to the philosophy that helps unlock the benefits which the cloud has to offer. This helps organizations’ engineering teams to focus on business value and not worry about infra.
- Repurchasing
This strategy means fulfilling the business needs using Software as a Service (SaaS) model. In an enterprise, it is typical to find a licensed, commercial off-the-shelf (COTS) product developed by an Independent Software Vendors (ISV) that solves a specific problem and integrate that within the enterprise.
E.g. using WordPress or Drupal for all the content management needs. Or using the customizable Workday as an HR module and migrate the entire application to the cloud is a classic move enterprise make.
Most of the ISVs provide a “cloud version” of their platform in AWS or Azure Marketplace and which can be directly integrated into the existing cloud-hosted application/service. Using the SaaS model ensures that the application is always up to date with the latest features and supports “don’t invent your own wheel” strategy.
- Refactoring/ re-architecting
This strategy is all about re-imagining the application/services/database stack and introduce cloud-native features to enrich the application from scalability, security and stability point of view. Considering the investment it will take, it needs to be strongly backed by the business needs.
E.g. a certain organization has a monolithic platform that is experiencing the stability and scalability issues – as part of this strategy, this platform can be re-architected and migrated to let’s say Azure Kubernetes Services using microservices pattern that enhances the business and makes it future proof as well.
- Retire
Get rid of the applications, services or databases that are no longer needed by the business users. Many times, you would be surprised to see that as much as 10%-20% of an enterprise IT portfolio is no longer required or has outlived itself. Sometimes there might be multiple apps, services within an enterprise that are performing redundant operations.
This is an opportunity to consolidate and decommission these legacy applications which helps eliminate the operational costs and enable your IT teams to focus on business-critical applications.
- Retain
This strategy means “Do nothing for now”. This strategy can be used where there is no strong business justification or business benefits of migrating to the cloud. Sometimes, such apps, services require massive refactoring before it can be moved to the cloud.
This strategy does not eliminate the possibility of cloud migration, it just says currently there is no good enough justification to move to the cloud.
Some examples in which retain strategy is wise could be: –
- There are compliance and regulatory requirements where data can be stored and cloud provider doesn’t support that
- A certain enterprise has recently refreshed the licenses across data centres
So which strategy should I go for?
There is no definitive answer to that question. It kind of depends!
- Cost of Migration
As shown in the graph above the cost of migration and complexity are proportional to each other. Cost goes up if you start refactoring architecture, code – since complexity goes up along with it. But in the long term, you get all the good things that cloud offers. But if project timeline is a larger factor and business is looking for quick wins – re-hosting (using either IaaS or containerization) or investing into SaaS product would do.
Many organizations go with the hybrid approach. As a first phase, they migrate the apps using the Re-hosting (lift n’ shift) strategy. Obviously, it does not unlock all the benefits that cloud offers – but it takes them closer to the ultimate goal. As a second phase, or as multi-step process – enterprises start doing re-platforming or refactoring and start introducing more and more cloud-native features. This way they can control both complexity and cost factors over a period of time.
It is typically recommended to start with applications that can be re-hosted to help build confidence and achieve some “quick wins” while applying the learnings to future migrations as we build confidence.
Complexity and Opportunity
Let’s look at it from another angle. While we know that rearchitecting strategy is going to take more resources (time and cost) it does provide better opportunity to optimize.
Conclusion
To reiterate – going for a phased migration approach is probably the best choice. Focus and prioritize business functionality in the first phase, rather than attempting to do it all in one step. In the next phase(s), applications can be optimized for cost, performance, productivity etc.
If you could sunset and retire apps, nothing like it. If you have too much invested in the on-premise infrastructure and there is no strong reason to go to the cloud – retain.