How do you move a monolithic, on-premises legacy application into the cloud? One strategy is replatforming. In this article, I'll discuss replatforming, why it's a solid strategy for cloud migration, and how to plan and execute a successful replatforming.
What is cloud replatforming?
For companies still running software on-premises, moving to the cloud has numerous benefits. These include reduced costs, enhanced scalability, better resiliency, and tighter security.
However, these benefits often can't be gained just by moving your application from your data center and into AWS. For example, you can't gain the benefits of the scalability and redundancy built into AWS's database solutions by just moving the servers hosting your on-prem databases onto Amazon EC2 instances.
In other words, if you're not taking advantage of any cloud-native features, you're unlikely to experience the full benefits of migration.
You get the greatest benefit out of your migration by rewriting your application entirely for the cloud. The challenge is that legacy apps are large and complex. Rewrites are intensive and expensive. Plus, they draw critical resources away from supporting existing customers. In most cases, you need a more gradual approach.
Replatforming is a cloud migration strategy that brings an on-premises application into the cloud while re-implementing a few select components. The goal is to gain an immediate and tangible benefit from your cloud migration, such as increased application speed or reduced operational/capital costs.
Other names for cloud replatforming
You may have heard of cloud replatforming before but under a different. Other terms we've seen in the wild include:
- Lift and Reshape
- Move and Improve
- Lift, Tinker, and Shift
We've also seen a few places refer to this as component modernization. Despite the differences, the strategy is the same: a slow migration to the cloud with minor, gradual changes.
Use cases for cloud replatforming
One of the most notable use cases for replatforming is data storage. Databases are hard to manage at a large scale. Migrating to a cloud solution like Amazon RDS on AWS makes it easier to maintain a highly-available, redundant data store that scales with customer demand. It can also simplify complying with data residency requirements.
Another use case is scaling your front-end web app and back-end workers. Scaling is a key reason many companies move to the cloud. Instead of installing new on-premises servers to handle more traffic, you can simply lease capacity when you need it from your cloud provider.
Finally, replatforming can simplify identity management. Hosting your applications in your own data center generally means rolling your own authentication and authorization solutions. That can open the door to security flaws that compromise your entire system. With replatforming, you can take advantage of your cloud provider's tried-and-tested identity and access management system. This can tighten your security and simplify your code base.
The benefits of cloud replatforming
Improve performance and scalability
In a data center, the resources you can devote to an application are limited by the hardware you have on hand. In the cloud, you can gain increased performance and scalability easily by requesting additional on-demand computing capacity.
Improve staff productivity with automation
Many data center deployments are a clunky combination of automated scripts and manual processes. With replatforming, you can leverage Infrastructure as Code to create a fully automated DevOps pipeline that includes both infrastructure and application deployment. This results in faster, higher-quality deployments.
Improved automation also means less downtime for your customers. You can build a DevOps pipeline that uses automated health signals to validate the integrity of each change you push to production.
Replatforming can minimize downtime by replicating your infrastructure across different cloud regions. Rather than have a single production deployment, you can support multiple deployments that serve different areas of the country or the world. If your site goes down in one region, you can redirect customers to another region until it's fixed.
Replatforming vs. rehosting and refactoring
Replatforming isn't the only approach to moving an application to the cloud. There's also rehosting and refactoring. Let's look at each in detail and see how they compare to replatforming.
Rehosting, also known as "lift-and-shift", takes your existing application and moves it to the cloud as is. The only changes you make in rehosting involve necessary fixes such as changing hard-coded IP addresses or domain names used between services.
Rehosting vs. replatforming
Rehosting is (theoretically) the simplest approach to cloud migration as it involves the least revision. Instead of rebuilding critical features, you work to transfer features that you have already tested and verified to a new host.
On the downside, rehosting is liable to result in subpar performance as it doesn't take any advantage of the cloud's strengths. Additionally, rehosting projects are often not as simple in reality as they seem on paper. Unknown dependencies and undocumented configurations can lengthen a project's migration timeline.
Refactoring, or re-architecting, goes to the opposite extreme. With refactoring, you redesign and rebuild significant parts of your architecture. The goal with refactoring is to make your application cloud-native and ensure it's taking full advantage of the cloud's capabilities and benefits.
For example, instead of lifting-and-shifting your monolithic app into the cloud, you could refactor it into a set of microservices hosted on AWS Lambda. Done well, the rearchitected app would be faster as well as easier to deploy and maintain. By leveraging serverless technology, your Site Reliability Engineers would have less computing capacity to secure, monitor, and maintain.
Refactoring vs. replatforming
Refactoring is the ultimate cloud-native experience. You can rebuild your application to take advantage of technologies, such as serverless, that are hard or impossible to replicate economically in an on-premises environment. Additionally, it provides an opportunity to re-engineer facets of your application that don't scale well.
However, refactoring is a time- and resource-intensive process. A successful refactoring project can take months or years to complete. And your team still has to support the legacy platform in the meantime.
How to plan a successful cloud replatforming effort
Any migration effort is risky. Replatforming is no exception. You need to be clear on both your goals and the steps you'll use to accomplish them.
Here are some points to consider when planning a replatforming effort.
Assess your business needs
Be clear about what your business wants to achieve with cloud migration. This includes defining:
- What you want to achieve
- Your timeframe for completion
- How you'll measure success
For example, if you're moving to the cloud to achieve better scalability, your goal might be supporting x simultaneous users per hour within y months. If your goal is increased developer productivity, your goals might include reducing the time to push changes to production or decreasing the average number of incidents after launch. If you're moving to the cloud to reduce cost, you'll look to reduce your Total Cost of Ownership (TCO).
You can - and probably will - have multiple goals. Whatever they are, it's important to verify that each one is achievable within your set timeframe.
Assess your technological needs
Before you replatform, you have to know what you're replatforming. This in itself can be a challenge. A system that's been running for years accrues undocumented changes. Personnel changes mean the few people who knew how parts of the system worked may no longer be around.
If your team hasn't fully documented your existing system, now's the time. Do you know what components are in use by the system? What dependencies your application requires to run? The configuration data it depends upon? What third-party tools or SaaS systems it consumes?
Evaluate cloud options serving those needs
Once you have your business goals and a clear inventory of your technical assets, you can assess which cloud technologies you'll leverage in your replatforming efforts. This requires learning about the features supported by your cloud provider and determining which ones map best to your needs.
The challenge in this step is determining which of multiple cloud features will meet your requirements. As we've discussed before, the cloud's multiplicity of features can easily confuse and bewilder new users.
There are no easy answers here. You'll have to do your due diligence and discover which cloud features meet your requirements for performance, security, maintainability, and cost. For companies moving to AWS, we can offer a mini-cheat sheet of recommended services and approaches for different use cases:
|Use case||AWS technologies|
|Simplifying and strengthening authentication and authorization||Identity and Access Management (IAM) for AWS resources; AWS Cognito for user authentication|
|Refactoring parts of your application into microservices||Docker containers deployed with Amazon Elastic Container Service (ECS) (read more on why we prefer Docker over AWS Lambda|
|Migrating databases||Amazon RDS for a straight port of your existing database; Amazon Aurora (leveraging MySql/PostgreSQL compatibility) for scalability and performance|
|On-demand file storage (semi-static files such as images, CSS stylesheets, documents, videos, etc.)||Amazon S3|
Cloud migrations can be nerve-wracking. Having a solid, detailed plan and a clear set of objectives both go a long way toward ensuring success. A well-designed replatforming strategy can vet your cloud migration plan and achieve short-term ROI while minimizing downtime for existing customers.