Considerations and Approach to Application Modernization

Considerations and Approach to Application Modernization

Organizations are under increasing pressure to modernize their legacy applications to make them more responsive to the changing business needs as well as reduce the high cost of maintenance. Many organizations like World Economic Forum and IDC believe that by 2022, 60% of the world economy will be digitized and legacy applications are a major hindrance to the fast pace of digital economy. Yet many of these legacy applications especially those running on mainframes are still at the core of business. So, what are the key challenges and a good approach for application modernization.

Let us start by first defining a legacy application. As per Wikipedia, in computing, a legacy system is an old method, technology, computer system, or application program, "of, relating to, or being a previous or outdated computer system," yet still in use. So, it’s all relative to the current technology.

As per the above definition an application running on Windows 2003 using .NET Framework 1.0 is as legacy as the Mainframe application developed on COBOL. However, the challenges for modernizing the two applications are very different. It’s because Mainframe applications are huge monolithic legacy applications. Monolithic applications have two characteristics that make it desirable to modernize them: they are difficult to update, and they are difficult and expensive to scale. In monolithic applications, if even one module or a component of the application faces performance issue, entire application will have to be scaled up instead of that component. This approach comes with considerable wasted compute, licensing and efforts. By modernizing it to a microservices architecture, components are smaller, loosely coupled, and can be deployed and scaled independently of one another.

The three most common approach used for application modernization are re-platform, Re-factor and Re-write. Lot of people use refactor and rewrite interchangeably. However, the key purpose of refactor is to introduce modifications in the code that over the time will improve the overall quality of the code base and application architecture making it easier to maintain and evolve over the time. Rewrite on the other hand, is re-writing the code from scratch. Unlike refactor, the selection of technologies in rewrite is free from any legacy limitations that would probably exist when doing a refactoring. So technically in rewriting the application, you can change the language, frameworks and the application type (client-server to web to mobile etc.) For this reason, rewriting an application is much more expensive and time consuming compared to refactor.

Advantages of refactoring:

·    Less risky because the changes are incremental and impact is limited.

·    Less time-consuming, faster to see the impact and easier to maintain

Advantages of Re-writing

·      More flexibility to change the technology stack 

·      Business impact may be higher compared to refactor

So, what are the key considerations for modernization of large monolithic applications like mainframe. It is important that considering the efforts and cost involved, the application modernization journey is well thought out. Lot of clients use “Big-Bang” application re-write approach where the whole might of the organization is put behind the project sometimes putting operations at risk with a relatively higher probability of ending in a failure. In the phased approach, we incrementally migrate the applications over a period. One of the approaches to re-factor is the “Strangler Pattern” coined by Martin Fowler during his trip to Australia. While in the rain forests on the Queensland coast, he observed the huge fig trees. They seed in the upper branches of a tree and gradually work their way down the tree until they root in the soil. Over many years they grow into fantastic and beautiful shapes, meanwhile strangling and killing the tree that was their host.

Similarly, for mainframe, idea is to create a new modules around the edges, letting it grow slowly to the core over several years until the mainframe becomes redundant. A good example is to replace the edge functionality of the monolithic application like CRM, Web services, Internet banking etc. which impacts both customer experience as well as the revenues before moving to the core of the application like supply chain for retail or core-banking for financial services.

To conclude, there is no right or wrong approach to application modernization. The key is to understand your problem (technology, architecture or functionality) and the right speed and cost of the program.

Satya Bharat

Cloud and Legacy -Strategy & Transformation Leader and Chief Architect

4 年

Sandeep good attempt, definetly agree on the approaches but always microservices is not a solution.

回复
Palanivel Saravanan

Vice President - Cloud Engineering Leader at Oracle India Private Limited. (Oracle Corporations)

4 年

Well explained Sandeep!!

Arvind S.

Senior Cloud Security Solution Architect (Enterprise Cyber Security and Cloud Security) TOGAF?, Integration Architect, Data & AI Architect, IAM Architect

4 年

very well explanation sandeep, I will say vision of legacy modernization ,Time and Cost is also factor.

回复
Ankit Kapil

Director, Cloud Solution Engineering at Oracle | ankitkapil.eth

4 年

Very well articulated Sandeep, my fav l Part is conclusion !!

要查看或添加评论,请登录

Sandeep Ghildiyal的更多文章

社区洞察

其他会员也浏览了