Post date: May 6, 2020 7:02:49 AM
Something which was modern yesterday has become legacy today. Everyday something becomes modern. There is a cost associated with modernizing an application or portfolio of applications hence there is a need to analyze reasons for modernization. This analysis should demonstrate benefits and return on investment in support of modernization.
Drivers for legacy modernization
Challenges in legacy systems should be first understood then modernization opportunities can be analyzed:
Scalability: Unable to scale (up or out)
Maintenance: Challenges of maintenance due to rigid old architecture, old technologies
Lost business opportunities: Old closed systems can’t tap new business opportunities, reaching out to customers over internet. Internet business. Exposing old system to new users and markets.
High cost: Legacy system may be costly to maintain due to reasons including but not limited to maintenance challenges as mentioned above. (for example mainframe)
Late to market: Can't achieve faster time to market due to legacy systems. Offering new services quickly, ahead of the competition requires ahead in your IT system too which may be impacted due to a legacy system.
Application quality: Specially availability of the system due to low robustness. You can't make business if you are dependent on a system which is always down. Downtime is a killer and legacy system may suffer from this issue.
Application portfolio analysis
Often analysis of application portfolio is conducted to identify the opportunities and define rational for modernization program.
This application portfolio rationalization or application portfolio analysis is described here:
Some key questions to consider while analyzing portfolio of application for modernization:
What is the cost of operation?
What is the business value and business criticality of the application?
Availability of skills to maintain the application and handle legacy technology used to build it?
Technical quality as per expected needs
Is it possible to easily change the application to meet market ad business expectations?
Investment required versus availability of fund for modernization program
Time required to complete the modernization program
Ways to modernize legacy systems
Traditionally people talk about following ways to modernize a legacy system (precisely see the difference between system and application. When you say system it includes software, hardware, o/s, platform etc more closely. Application generally refers to software although it requires a hardware and o/s to run but system is a broader terms. Theoretically an application can also be modernized but often portfolio of applications is assessed and part of them may be modernized).
As a result of application portfolio assessment following conclusions may be drawn:
Either to expose power of an existing system and to reach out to more users or to extend capability/functionality of a system: the legacy can be wrapped around by a modern layer. Often a wrapper application layer exposes APIs to further mobile application. This wrapper application may connect to legacy through connectors and other means.
Rehost or redeploy
Just providing a new home to your application, it may be a new physical server or virtual infrastructure or a cloud infrastructure. There is no functionality change, no recompiling and no major alterations.
Application is migrated to a new platform. with only few (minimum) changes to code to just adapt the the new platform. Features, architecture (structure of the application) is not changed.
Restructure and optimize existing code without changing its external behavior to remove technical debt and to improve the component’s features and structure.
In many cases you may have to change the architecture of the application and hence code to utilize power of new modern infrastructure, platform and capabilities. There may be some part of the code require changes to adapt the new architecture but you reuse lots of existing code.
In some cases it is almost not feasible to achieve modernization (using new platforms, new architecture) without rewriting the code from scratch. Some time it may require more efforts to adapt the old code to new frameworks, platform compared to writing it from scratch.
If an existing system can't fulfill the needs of current business requirements and is also not feasible to change/upgrade you may have to consider defining new requirements, new specifications and bring new system in place of an existing system.
Following are few of the technical methods to achieve legacy modernization:
To reach out to more users, to open up new channels to offer more services to large number of users conveniently
Monolith to Microservices:
Scalability, adding new features quickly (coping with demanding market in future)
To cope with high volume of data,
Migration to cloud:
To get scalability, to reduce infrastructure management challenges, to reduce cost (but this is no more true now)