For a growing number of companies today, app modernization is a high priority. They’re attempting to update their IT infrastructure and reduce costs by moving software applications out of their on-premises data centers and into the cloud. According to CloudZero, more than two-thirds already have some or all of their IT estate in the cloud, with 39% running at least half of their workloads there.
But for many, this effort hasn’t worked out as they hoped. According to a report from Fortinet entitled, “The Bi-Directional Cloud Highway,” 74% of companies have migrated apps to the cloud but then moved them back again. Some of those return trips were planned, but many constituted an implicit admission that the initial transfer to the cloud failed to produce the expected results.
So, what went wrong?
In many cases, companies were disappointed because they didn’t obtain the financial savings they anticipated. CloudZero notes that six out of ten survey respondents report that their cloud costs are higher than expected, while 53% say they have yet to see any substantial ROI from their cloud investment. Respondents in another survey estimate that their organizations have wasted 32% of the funds they’ve spent on the cloud.
But it doesn’t have to be that way. Companies that develop and execute a well-targeted strategic plan for their cloud efforts can reap significant savings by modernizing their legacy apps to give them cloud-native capabilities.
In this article, we want to identify some of the most significant features of such a strategy.
How App Modernization Helps Reduce Costs
In the typical company today, engineers spend about 33% of their time dealing with technical debt. That term refers to the amount of unplanned work an IT organization must devote to supporting apps that, due to their outdated design or implementation, have become extremely difficult to maintain or adapt to meet new requirements. Continually investing scarce resources into keeping such apps running is a common but costly practice.
On the other hand, modernizing legacy applications to give them cloud-native capabilities can produce significant savings in and of itself. Intel quotes a recent study as declaring that when companies reduce their technical debt load by modernizing their legacy app portfolio, they realize immediate savings that amount, on average, to 32% of their IT budget. And according to IBM, companies that implement an effective app modernization program can expect benefits such as:
- 15% – 35% year-over-year infrastructure savings
- 30% – 50% lower app maintenance and operational costs
- 74% lower costs for hardware, software, and staff
- 14% increase in annual revenue
Getting App Modernization Right
Many companies fail to reap the expected benefits from their app modernization efforts because they confuse modernization with simple migration. They assume that by simply migrating their legacy apps from a data center environment to the cloud, without making any substantial changes to the app design or implementation, they achieve a significant degree of modernization. That’s not the case.
Legacy apps typically are monolithic in structure, meaning that the codebase is a single unit that has functional implementations and dependencies interwoven throughout. The very design of such apps creates a high level of technical debt because a change to any function can have unexpected effects elsewhere in the codebase, potentially causing the app to fail. Because of that inherent technical debt, monolithic apps are by nature very difficult to maintain and update.
When a monolithic app is transferred as-is to the cloud (a process called “lift and shift”) it carries its technical debt with it: all the factors that made the app difficult to maintain and adapt in the data center continue to do so in the cloud. And although it still needs the same CPU, memory, and storage resources it did in the data center, a monolithic app cannot efficiently access those resources in the cloud. All this can have a huge negative impact on cloud costs. In an article on the lift and shift methodology, IBM puts it this way:
“An application that’s only partially optimized for the cloud environment may never realize the potential savings of cloud and may actually cost more to run on the cloud in the long run.”
In reality, a monolith is the most expensive type of app to run in the cloud. It’s only when monolithic apps are truly modernized, by refactoring them to a cloud-native microservices architecture, that the full benefits of the cloud are obtained.
Reducing Cloud Costs
Once legacy apps have been refactored to have cloud-native capabilities, further steps can be taken to reduce cloud costs even more. Cloud cost efficiency is built on the fact that cloud-native services are inherently elastic, scalable, and adaptive. You can minimize your costs by fine-tuning your cloud operation to take full advantage of these characteristics. Here are some ways to do that:
Reduce Operational Costs
Because of the cloud’s superior elasticity, cloud-native resources, including newly modernized legacy apps, can scale instantly and automatically based on demand. That allows you to rightsize your compute resources to fit your utilization requirements. Here are some ways to do that:
- Attribute your costs. To make sound decisions regarding forecasts, budgets, and cost optimization, you must understand how your IT costs are allocated across your organization. Identifying which functional areas contribute most to your overall cost structure allows you to sharply focus your cost reduction efforts.
- Inventory your compute resource needs. This enables you to determine the instance size and type you need for each workload based on historic usage patterns, and select the lowest-cost options that meet your requirements.
- Monitor your cloud resource utilization. Avoid over-provisioning by continuously monitoring your cloud resource usage patterns to identify utilization trends (your cloud provider probably offers tools for this). This will help you to rightsize your resource commitments based on your actual cloud workloads.
- Implement autoscaling. Incorporate mechanisms into your workloads to automatically adjust the number of instances or resources you use based on current demand.
- Consider serverless computing. Serverless computing platforms, such as AWS Lambda, Google Cloud Functions, or Azure Functions, relieve you of the necessity of provisioning and managing virtual servers and allow you to pay only for the execution time you consume.
- Use cloud-native services. The cloud offers many managed services that often can outperform services implemented in your data center, and do so at a lower cost. For example, using a cloud-native database service such as AWS DynamoDB or Azure Cosmos DB is often far more cost-effective than migrating your on-prem DB solution to run in the cloud.
Reduce Licensing Costs
Licensing costs are an often overlooked but potentially huge element of your overall cloud expenses. AWS makes the point very clearly:
“Without optimizing your licensing in cloud migration, the cost of overprovisioning third-party licensing can exceed the cost of compute.”
And in its lift and shift article IBM adds that your existing data center software licenses may not be valid for the cloud:
“Licensing costs and restrictions may make lift and shift migration prohibitively expensive or even legally impossible.”
Here are some steps you can take to reduce your licensing costs:
- Inventory your current licenses to determine if any are underutilized, no longer needed, or redundant. Check with vendors and cloud providers to see if it’s possible to transfer your existing licenses to your cloud environment.
- Proactively negotiate cloud licensing agreements with vendors based on current usage patterns and your assessment of future needs in the cloud.
- Consider alternatives such as open-source software or subscription-based services that offer a pay-as-you-go model for cost-effective scaling. Explore whether you can use managed cloud-native services that have licensing costs already built in.
Reduce Project Costs
App modernization allows you to:
- Increase staff efficiency required for maintaining and upgrading your legacy apps and reducing their technical debt. Once apps have been restructured into a microservice architecture they’re far easier to understand and adapt. That means that fewer people are required for managing them than were needed before modernization.
- Shorten release cycles by adopting a continuous integration, continuous deployment (CI/CD) modernization methodology. By breaking monolithic apps into independent microservices, you allow much of your development and maintenance work to be done in parallel since each microservice is assigned to its own team.
- Drive increased agility and innovation by leveraging existing cloud-native resources (rather than building from scratch) to minimize the work your developers must perform to create the new apps and features that can propel your company forward in its marketplace.
Setting the Stage for App Modernization
Application modernization can provide substantial cost reductions for your organization’s IT operation. But it’s important to note that significant savings can only be achieved by making extensive use of automation in the modernization process.
The process of analyzing a company’s portfolio of monolithic legacy apps (which may have tens of millions of lines of code and thousands of classes) to untangle hidden dependencies and reveal service boundaries, and then refactoring those apps into microservices, is a highly complex and labor-intensive endeavor. Any attempt to accomplish it using manual methods would be prohibitively expensive in terms of time, personnel, and financial resources.
What’s needed instead is an AI-based automated analysis tool that can produce comprehensive static and dynamic analyses of your legacy apps far more quickly than human engineers could. That kind of accurate, detailed information about the current state of your legacy app estate can then serve as the basis for building an effective modernization plan.
The vFunction application modernization platform can quickly and automatically analyze your apps to assess dependencies, technical debt, service boundaries, and other important modernization parameters. It can substantially automate the process of refactoring a monolithic codebase into microservices, providing your team with significant savings in time, personnel, and money.
To experience first-hand how vFunction can streamline your application modernization efforts and help you to substantially reduce your IT costs, request a demo today.