There is no friend like an old friend. Only this cannot be applied to the IT industry. Your laptop in 2020 with a 100% guarantee is more powerful than your PC from 2005.
Contents
What is a legacy system?
Almost everyone has ever got a project with code written by someone else years ago. This code is often so terrible that it is completely unclear how to work with it. And if we speak in terms of a legacy system, additionally you have:
- outdated technology;
- heterogeneous architecture;
- lack or even a complete absence of documentation.
All these points require a solution and resources input. Perhaps, one cannot do without a good sense of humor — those who take life too seriously usually run away as soon as they see the real legacy system.
The legacy system is not so scary. Here are a couple of reasons why.
- If the system has lived all these ten years and still works, then there is some sense in it.
- Maybe it brings good money (unlike your last startup with the latest technology).
- The code of such a system is relatively reliable if it could survive for so long in production. Therefore, you need to make changes to it with caution.
Gartner Glossary provides the following definition: “Legacy system is an information system that may be based on outdated technologies but is critical to day-to-day operations.”
Negative effects of the legacy system
In 2019, the U.S. federal government spent 80 percent of its IT budget on operations and maintenance. These costs mainly included legacy systems that posed issues of efficiency, cybersecurity, and mission risks. To put this in context, only 20 percent of IT funding was allocated for development, modernization, and improvement.
We found out at least 5 reasons for businesses to upgrade the system and reach a new level of efficiency.
#1. Maintenance & Support
Updates and changes. Typically, the legacy system takes up a large amount of memory and functionality. When interfering with the existing code, there is a high probability of code conflict. In addition to a large amount of documentation, some features remained undocumented.
Infrastructure. Every year, the infrastructure is becoming more complex and, therefore, pricey to maintain. Large amounts of data are difficult to reorganize or optimize. In addition to being a laborious process, it is also expensive.
Training. The less popular the technology becomes, the fewer specialists with the necessary skills and experience are present on the market. A significant part of the budget can be spent on staff training.
#2. Integration and Compliance
All modern technologies are ready for integration by default. After all, numerous programs use third-party APIs to expand their functionality. For example, Lyft says it uses Google Maps as its default navigation tool for drivers. However, rare or outdated technologies cannot boast such compatibility. Or they can do only with large resource investments.
Another aspect is compliance with political and legal norms. For example, the General Data Protection Regulation (GDPR) came into force in 2018. The legacy system is one of the main problems if it is necessary to comply with such laws.
#3. Safety
Due to age, the legacy system is less resistant to cyberattacks. On the one hand, scammers had years to crack the system. On the other hand, the supplier may stop releasing updates or fixing bugs and will cease all support for its product.
If you can fix your system yourself, then this may become like a leaking bucket. You patch one hole, and a new one appears nearby.
#4. Lost business opportunities
When channeling the budget for the maintenance of the legacy system, fewer funds are left to the innovations. This allows competitors to be ahead of you or even occupy your market share.
#5. Organizational flexibility and efficiency
The success of a business largely depends on whether it can respond quickly to changes in the business environment. Can you scale or vice versa to slightly reduce your business if necessary? How fast can you innovate?
Meanwhile, IT modernization is based on flexibility, along with digital mergers and acquisitions and collaboration with digital startups, which was revealed in a Harvard Business Review study. Agile methodologies can accelerate the delivery of IT services by 30-50%, and they are especially suitable for transformations with a high degree of uncertainty.
Legacy system upgrade methods
There are specific techniques to update obsolete technologies. They are arranged in order of increasing complexity.
- Encapsulation is a method of reusing legacy software components. This helps to expand the functionality of the product with minimal changes. Minimal code intervention also minimizes risks. This option is good when the legacy system is key in the business. However, problems with maintenance or updates will remain because this method is interface-oriented.
- Rehosting. Using the rehosting method, the application is transferred to the cloud or other infrastructure as is, without any modification to the code. This is the fastest and easiest solution.
- Replatform migrations mean upgrading versions to adapt code to a new platform while maintaining existing functionality. Among the changes are the use of a managed database or automatic scaling.
- Refactoring is a controlled process of improving the code, without writing new functionality. The refactoring result is clean code and simple design.
- Rearchitecting means the transition to a new application architecture with simultaneous code changes to fully utilize the new and better platform features. This method has an average cost and risk, but also average results.
- Rebuilt is writing from scratch components identical to the former. Changing the code makes it possible to further scale or expand functionality.
- Replacement. Sometimes it’s better to completely replace the application with another tool than to invest in its modernization. Although, when creating a substitute product, you can use some tricks or logic.
Conclusion
The choice of upgrade method depends on your goals and system condition.
Encapsulation, rehosting, and replatforming affect the technology platform. Refactoring and rearchitecting can solve problems in technology and architecture. Rebuilding and replacing allow you to change and add features and functions.
Whatever technique you choose, modernization is a complex and resource-intensive process with a certain risk. Yet, this risk is fully justified.