What is Refactoring for the Cloud?
We wrote previously about the advantages of rehosting (lift & shift) applications and workflows. That’s the “easy” end of the spectrum with cloud migration — you’re really just moving out of the data center while doing the least amount of work with your apps. On the other end of the spectrum is refactoring, which is re-architecting and re-programming applications to function in the cloud. We believe refactoring for the cloud is a strategy for long-term success in technology.
Refactoring is the most challenging approach to cloud migration. The expected end result is a cloud-native application that fully embraces the advantages of the cloud: uptime, performance, and scalability. The effort to refactor an application depends on how difficult it is implement cloud services. Monolithic apps can be more difficult, while others can more easily be refactored to use cloud services. Having a combination of traditional and cloud-native development skills is beneficial.
All too often, organizations are trapped in old ways of “adding another server” as opposed to designing elastic systems that avoid single points of failure and optimize compute costs. We were recently approached with a project where the vendor recommended buying a quarter-million dollars in hardware to start. In our review, the entire project should be cloud-native (refactoring Microsoft Access databases and Excel spreadsheets!). Minimal capital expense is needed, and developing cloud native database ingestion and analytical tools will pay off for years to come. Consider the numerous advantages in this scenario for working with cloud technology:
- Ample computing power to ensure enough resources are available when new data arrives (project-based ingestion of large data sets)
- Elastic servers to ensure optimized costs when demand is lower
- Data lake tools and services available when required (project-based demand)
We have numerous examples of organizations that migrated to the cloud using a variety of methods and for a broad range of reasons. To give you a foundation for your evaluation, we share the advantages and challenges of refactoring for the cloud.
Advantages of Refactoring
To further explain why refactoring applications to be cloud-native can be beneficial, it’s helpful to see the advantages in more detail. For the most part, the advantages of refactoring arrive in the future, once the application(s) are in place.
Increased Uptime & System Resilience
The cloud offers highly-available computing services. As a result, your applications readily take advantage of the cloud’s resilience. We prescribe redundancy into every feasible area of hosted applications to maximize uptime. More uptime translates to happier users and higher productivity for your organization. Auto-scaling ensures meeting peek demand and optimizing costs.
Lower Long-Term Operating Expenses
By matching compute resource consumption with actual demand, applications cost less to operate over time. Contrast that with investing in “sufficient” on-premise hardware, which could largely sit idle in off-peak hours. The transition from capital investment in hardware to operating expenses in cloud systems offers long-term ROI.
Improved Business Agility
Being free from a CapEx model, your organization can experiment with new ideas. Having business agility enables competitive advantages, especially in a world where technology is ubiquitous — using it more effectively, then, differentiates your organization.
Challenges of Refactoring
It’s also worth weighing the challenges of having full cloud-native applications.
Refactoring is a complex undertaking that requires expertise in application, automation and cloud computing. If your organization lacks that experience, developing cloud-native applications is best left to others. In addition, refactoring can take significant time to complete.
Poor Execution Issues
Refactoring often entails rewriting huge chunks of the application, which means things can go wrong. Errors mean higher costs and longer timelines.
Vendor lock-in occurs when your organization becomes overly reliant on a service provided by a single vendor. In refactoring, you may require using an outside consulting firm or software developer. When things go wrong, the costs of switching can be too high to bear. In cloud computing, you also “marry” your cloud.
When Refactoring Makes Sense…
Refactoring is a complex process that can deliver a solid return on investment. It’s not a quick fix. You’ll be wise to review your applications on a case-by-case basis to assess their ability to be delivered as cloud-native. Prioritize those applications that can benefit the organization most with uptime, performance, cost savings, and agility. Your assessment may find that your team is inexperienced or that you can get by with lift & shift migration. When refactoring makes sense, you’ll begin your journey to true cloud computing, with its numerous long-term advantages.