Unitl a few years ago, the accepted wisdom was that dealing with legacy software applications is a risky and expensive proposition, with very few and limited options to modernize. Over the past few years, there is an increasing awareness and recognition that there are multiple facets to legacy systems, and dealing with them should no longer be viewed as a threat, but as an opportunity to modernize and transform.
In this post, I would like to present a brief overview of the nature of legacy challenges, context for modernization, outline the multiple dimensions and the need for a holistic strategy and approach to modernization.
Burden of legacy systems
The nature of legacy burden varies based on multiple factors such as the kind of programming languages used, application architecture, mode of deployment etc. From a technology perspective, this legacy burden can be summarized as:
|Software built with 3G/4G programming languages which are difficult to support|
|Monolithic architectures with tight bonding between UI, data and application logic, making them inflexible and difficult to change|
|Predominantly deployed as on-premises based applications, designed to solve a narrow business problem in a given domain|
Very often, these businesses have a dual challenge of continuing to support an existing base of customers for survival, and at the same time, also pursue growth and acquisition of new customers. This is where it gets tricky, as there is always a conflict in balancing the priorities and needs of short-term vs long-term goals.
Evolution of software systems
From the perspective of software systems as enterprise-business solutions, the legacy burden is of a different nature. Gartner’s pace-layer theory nicely captures the historical evolution of software systems over the past few decades:
Systems of Record (SoR): are the first generation of software applications, that catered to the core needs of the enterprise by automating their business processes. These SoR used technology only as an enabler to solve a business need.
Systems of Differentiation (SoD): To deal with the increased complexity of business and regulations, SoR grew both horizontally and vertically, and over a period of time have become very complex. To deal with this complexity, Systems of Differentiationevolved, which provided sophisticated systems of integration and orchestration for the modularized and unbundled applications. SoD supported configurability, personalization, provided responsiveness to business process and regulatory change, often with unique, differentiating, and competitive advantages.
Systems of Innovation (SoI): With the proliferation of digital accelerating technologies, and unprecedented consumerization of IT, enterprise business processes had to be made available and accessible, across devices, channels, and user groups. To cater to this multifaceted engagement, Systems of Innovation (also known as Systems of Engagement) have evolved in the form of smart apps and intelligent systems. SoI and SoE are used interchangeably by industry thought leaders and service providers.
The different layers shown in the above pace-layered image, evolve and change at varying speeds, and in a typical enterprise landscape, one will see software applications or systems across these layers. The legacy burden and challenges of modernization will vary significantly based on the nature of software system, and how the specific domain that it serves is being disrupted.
Drivers for modernization
We have seen how the nature of legacy burden varies from a technology and solution perspective. In a similar manner, there are distinct drivers for modernization, which can be broadly clubbed under:
Technology push: The changing enterprise needs, advent of digital accelerating technologies such as SMAC, IoT, AI etc. proliferation and popularity of a new generation of robust programming languages and flexible application architectures have emerged as some of the key technology drivers for modernization.
Business model pull: As every business is transforming into a digital business, enterprise digital needs can be met only with sophisticated systems of innovation (or engagement) that can support consumerization and personalization. The onset of platform business models and new opportunities to offer software-enabled services to digital businesses across diverse domains, have emerged as key business drivers for modernization.
As I have outlined above, the burden of legacy systems has multiple dimensions, with distinct modernization drivers from a technology and business model perspective. It is not an easy to task to come up with the right modernization strategy, as there are often conflicting levers and priorities.
As a first step, I would suggest a comprehensive analysis, which looks at markets, technologies, and current state of the software including application architecture, technical debt and obsolescence. Based on this analysis, one can identify priorities and formulate a strategy to achieve the targeted modernization goals. In other words, start with the end goal in mind.
We can broadly visualize 4-distinct dimensions for modernization (need not be sequential), which are briefly described below:
Deployment Modernization: One of the common modernization dimensions is to provide a modern deployment infrastructure with enhanced scalability, reliability, and availability of the application. This can be achieved by adopting IaaS (Infrastructure-as-a-Service) and re-hosting the application to cloud.
Technology Upgrade: The other commonly encountered scenario is that of a legacy application which needs to refactor/upgrade its technology stack to newer and latest versions (within the same stack) and extend the shelf-life of the software application to continue supporting existing customers. Sometimes this modernization strategy might also call for migrating to newer frameworks and languages.
Application Modernization: As many legacy software applications have antiquated technology stacks and monolithic architectures, they must adopt a strategy of Application Modernization, which will help them achieve three things: a re-designed and re-architected application with a modern stack, deployed on cloud as SaaS, with a hybrid architecture. This strategy will not only modernize the technology stack, but will enable migrating to a services-first, modular, and flexible application architecture.
Business Model Transformation: If the domain needs demand sophisticated SoI/SoE, then one must consider a strategy of business model transformation or digital product reinvention. In the current landscape, this calls for future-proofing the application with AI/ML, VR/AR capabilities, and make it modular and flexible at a service-level to enable the application to be part of multiple business models in a digital platform ecosystem.
To sum up, modernization of legacy software applications cannot be achieved with a uni-dimensional approach. Legacy modernization has multiple dimensions, and one must choose the right strategy, based on the current state of the legacy software, competitive drivers, and broad business context. Irrespective of the strategy chosen, it should achieve some or all of the following goals, and the modernized software applications must support:
|interoperability, integration, and data exchange through APIs and microservices|
|omni-channel customer experience|
|smart devices and connected products|
|data capture and analytics for real-time decision support systems|
|scaling for mass market, security, and privacy|