IT Focus Area: digital
December 30, 2020
Modernize Legacy Apps to Drive Agility and Innovation
In response to ongoing market disruption, CIOs have been under pressure in recent years to become more agile and innovative while reducing cost and risk. In a recent study by McKinsey, CIOs who were asked about their CEOs’ top 3 priorities mentioned the following objectives:
- Revenue acceleration (88%)
- Improved agility and faster time to market (71%)
- Cost reduction (47%)
Application modernization (defined by Gartner as migrating legacy applications to new applications or platforms to make them more agile, secure, resilient and scalable) is an effective and increasingly important way to help organizations achieve all of those goals.
Modernizing legacy applications will increase an organization’s agility by enabling it to scale, deploy on the cloud, use emerging technologies, let go of accumulated technology debt, separate concerns and services, and say goodbye to non-responsive UIs, spaghetti code and inflexible architecture.
COVID-19 has heightened the focus on increasing agility while managing cost and risk, as many businesses quickly ramped up their digital or virtual activities and capabilities. For example, healthcare providers had to quickly shift to virtual visits and telemedicine, restaurants and retail stores quickly became delivery services, and enterprises had to shift to relying on and supporting remote workforces. Companies saddled with legacy applications struggled to make the shift as quickly or effectively as those with apps that were more flexible or modern.
For many organizations, the already growing importance of application modernization in driving agility came into even sharper relief. In fact, the global application modernization services market is forecast to grow from $11.4 billion in 2020 to $24.8 billion in 2025, also driven by key factors such as cloud services, the migration of workloads to cloud and SaaS, increasing focus on digital transformation, and the need for more resilient modern infrastructure.
5 ways to smoothly modernize your legacy applications
You can ensure the success of your application modernization efforts and broaden their impact by following these simple suggestions.
1. Understand holistically what you have today
Inventory the apps you have. Understand who the owners and users are, what the true cost and value are to the organization for that app, its usage and life cycle, and the infrastructure it runs on.
2. Rationalize your application portfolio
It is best to start off the process by rationalizing your apps, determining which ones have value and should be invested in, which ones are still in use but don’t merit more investment, and which ones can be retired. By streamlining your portfolio, you simplify it, reduce cost and drive out inefficiencies.
3. Carefully consider your options, avoiding common misconceptions
Next, look at your remaining apps to determine which modernization option makes the most sense for each app. Gartner identifies application modernization options as: replatforming, re-hosting, recoding, rearchitecting, reengineering, interoperability, replacement and retirement.
Legacy applications fall into two categories: those that run on the IBM i operating system on IBM Power Systems (formerly AS/400, iSeries or System i) and mainframe (IBM Z) applications or distributed monolithic applications that are not scalable or cloud-native. These two groups have an overlapping but different set of modernization options.
Modernizing IBM i and mainframe applications
When modernizing IBM i and mainframe applications, your options include:
- Rewriting the app. This option may seem like a slam-dunk, but it’s not that clear cut. Surprisingly, research by the Standish Group showed that nearly half of all attempts to modernize by rewriting a mainframe or IBM i application failed due to lack of sponsorship. A further 47% of rewriting projects were challenged—with cost overruns, for example—often due to lack of automation. Only 4% of such attempts to rewrite the apps were deemed to be successful.
- Replatforming: Purchasing and modifying the replacement. The success of this option is determined by ROI—whether it is low, medium or high. Thirty-four percent of replatforming projects enjoyed high ROI; 57% had medium ROI, and 9% had low ROI.
- Modernizing the existing app. Fifty-three percent of modernization of IBM i and mainframe apps were successful, while 39% were challenged and 8% failed. Of the challenged modernization projects, 25% had cost overruns of 50% or more.
- Retiring the application. If the app has little value, putting it to rest will lower TCO, drive out inefficiencies and simplify your efforts moving forward.
Modernizing legacy distributed monolithic applications
Legacy applications can also refer to traditionally deployed, nonscalable apps that are not highly available.
Often, many business services exist within a larger monolithic application. It is important to assess and decompose these services separately, as you may decide to break apart the monolith by decoupling the code within it, refactoring it into services, and rearchitecting the services to be more cloud-native. This will give you a clearer view of dependencies, and enable you to scale and partition them separately.
When modernizing monolithic applications, you have several options to help you reduce operational costs:
- Rewrite the application.
- Purchase commercial, off-the-shelf (COTS) products. You can reduce IT operational costs by purchasing COTS products, but be careful to select only ones that have features you actually need, as shown in the analytics you ran to understand what you’re currently using today. If you go for applications with all the bells and whistles, you could end up with an overengineered mess.
- Modernize it. This entails incrementally decomposing the features that are used one at a time and incrementally refactoring the code, also known as “strangling the monolith.”
- Retire it. Once again, if your assessment shows that some of your applications aren’t providing value, you can streamline your application portfolio, save money and simplify by letting them go.
- Containerize it. You can take your monolithic applications (one or more) and decompose them into functional units of code, aka microservices. Microservices are more reusable in a container than in a software project because any language your organization uses can call that container as long as it provides an HTTP REST API endpoint. Reusability does not start at the code layer but at the container level. This is the essence of a “bounded context.”
4. Focus on the features that you use
According to the Standish Group, 80% of an application’s features are typically not used on a daily basis, so focus on the 20% that are. You have to think about utilization metric. When you look at refactoring or modernizing code, you don’t want to waste time or money engineering features that are not relevant to your company and users. If you incorporate everyone’s thinking, or overengineer based on features that people rarely or never use, you will create a nightmare strain on your organization. Overengineering increases costs, makes training more difficult, and puts a huge strain on the organization from cost and personnel to infrastructure.
When you create a new feature for an app, you don’t know if users will use it or not. We all inherently risk wasting time developing features, as the value is only realized when we get feedback from end-users. Yet we must always remember that, as modernagile.org asserts, our whole purpose in life is to make the end-users awesome at the end of the day.
5. Identify a reference architecture based on what you have today without acquiring additional tooling
Acquiring additional tooling could add to the issue of shadow IT. If there’s a lack of governance in your organization, as you grow larger, people won’t know which tools they can use and which ones they can’t, so you end up with a “Wild West” of IT with a crazy number of tools, or “tool fruit salad.”
Accelerate your appliation modernization
Modernizing your legacy and monolithic applications may seem overwhelming and can add cost to what you may already consider “technical debt,” but it is possible to achieve a high ROI and to explore digital transformation initiatives that can set your digital experiences apart from competitors. Choosing a technology partner to help guide you through application modernization can help accelerate the process and ensure that you maximize your ROI.