Last week, a Federal News Network article from 2020 went viral on Reddit. Whilst the original article focused on the United States Internal Revenue Service's (IRS) long-standing strategy to retire their Individual Master File (IRF) system – written in Assembler code that is now more than sixty years old – a discussion quickly ensued in the comment thread around the state of critical applications worldwide that still run on legacy systems.
The reality is that many organisations are still deeply entrenched in legacy systems to keep their business operating, and a majority of Reddit users seem to be recognising the problems with this too. Even though these systems are robust and reliable, shrinking talent pools and a lack of integration with modern software development practices like DevOps are hindering organizations.
We know that many organisations worldwide are grappling with the increasingly difficult task of integrating and migrating from legacy platforms to more modern ones. It's a complex dilemma, and the last two years in particular have clearly highlighted this. Organizations have been challenged in more ways than many could have ever imagined. Demands to deploy a global remote workforce appeared overnight, driving an accelerated adoption of technology to support operations. But even though CIOs, IT leaders and even government bodies have acknowledged the challenges with legacy systems, the truth is that it is the systems themselves that are unable to reliably support or integrate with modern applications such as the Cloud. Modernisation and digital transformation efforts can no longer be put on hold.
So, what exactly is holding organisations back?
For one, legacy applications are often responsible for handling critical data. Strict privacy requirements that vary from industry to industry leave many organisations with little choice but to retain at least some of their data on-premises. A hybrid cloud approach to modernisation is the best solution for larger businesses looking to migrate to the cloud, either completely or partially.
Hybrid cloud environments consist of a mix of on-premises and cloud services that are connected to allow orchestration between the platforms in such a way that the combined entity acts as a single network. Permissions and identity management, for example, can be applied to both local and cloud-based servers without the need for replication. In a legacy modernisation sense, hybrid cloud is a great option because it allows for a staged approach to migration, where business operations can be moved in the cloud or on-premises depending on what's best for that particular service.
Whichever disposition strategy your organisation chooses to adopt will likely depend on a number of factors unique to your business goals and IT environment. There is no “one size fits all” solution, and you may find yourselves considering either one or several of the following:
- Rehosting (also referred to as ‘Replatforming’ or ‘Lift and Shift’) ensures your entire mainframe estate is deployed to the target environment in the languages and database models you need. Source code is recompiled where possible (or transformed using tools where not), and customized to support the specific rehost technology. Data is migrated – with the structure of some original data types retained - e.g. Relational, VSAM, Sequential, GDGs, etc. In order to support the same processing capabilities as the original legacy environment, third-party solutions such as job schedulers, print and output management, security, and systems management solutions are replaced.
- Refactoring (also known as ‘Automated Conversion’) retains functional equivalence while refactoring core legacy applications to fully maintainable, object-oriented Java or C# code. This means once the legacy application and database are transformed, developers can extend application functionality directly without having to navigate the original legacy code to do it. The legacy system's critical business logic is retained whilst allowing for deeper integration with other Java or C# workloads and additional customisation to meet evolving business requirements.
- Re-engineering (also known as ‘Rewrite’) captures original application specifications where applicable, incorporates any required new functionality (and this is typically a driver for this approach) - then redesigns and develops the new solution using the latest application frameworks.
- A Replace (also referred to as a ‘Repackage’ or ‘COTS replacement’) approach focuses on replacing legacy application functionality with packages and components available from third party vendors.
Regardless of your preferred disposition strategy (or strategies), the starting point of any modernisation journey should be a comprehensive assessment – encompassing applications, operations, and the supporting infrastructure. Stakeholders will be able to use the findings to make important application modernisation decisions, including disposition strategies and target environment architectures. In addition, it reduces costs and risks by pointing out potential bumps in the road, and an experienced vendor can provide suggestions on how to get through them.