IBM’s Project Minerva for Modernization offers tools for splitting applications into modules for faster, more reliable service.
Shopping online has become so effortless that it can be jarring when a website for renewing a passport or buying a plane ticket is slow, clunky, or crashes without warning. The dangers of outdated software became evident early in the pandemic when millions of people trying to file for unemployment at once brought down legacy systems across the U.S.
Since then, enterprises have doubled down on modernizing their applications by dividing up workloads and moving them to the cloud to boost speed and flexibility. But an estimated 70% are still using mission-critical software tied to on-premises data centers. Companies may be reluctant to update or replace their systems because of the cost, a shortage of programmers fluent in legacy languages, data privacy concerns, or the risk of catastrophic failures if updates aren’t executed perfectly.
But it is our belief that enterprises cannot afford not to modernize. Consumers have come to expect the fast and frictionless service that digitally native companies provide. It’s next to impossible for enterprises to match that kind of ease without breaking up their monolithic software systems. Companies that fail to adapt and improve risk losing customers and missing new opportunities. They may also end up sinking increased time into keeping these aging systems running. Each time a glitch is found and fixed, the entire system needs to be updated.
Project Minerva for Modernization, an extension of IBM’s Project CodeNet a massive dataset of more than 14 million code samples, wants to make application modernization easier. We know that splitting a program with millions of lines of code into hundreds, or even thousands, of mini applications called microservices is a daunting task. It requires knowing how to take the puzzle apart — and put it back together. Software engineers have traditionally done this by hand, but bringing AI into the loop can expedite the process and potentially deliver better results.
Project Minerva is an open source toolkit for refactoring old software systems and minimizing the amount of code that needs to be rewritten. It’s also an umbrella for the online community we are building for developers interested in software modernization.
Two of Project Minerva’s algorithms focus on analyzing Java programs to understand how blocks of code depend on each other while running and at rest. A third algorithm in the Minerva toolkit is The study, CARGO: AI-Guided Dependency Analysis for Migrating Monolithic Applications to Microservices Architecture, received a distinguished paper award at IEEE/ACM's 2022 International Conference on Automated Software Engineering.CARGO. CARGO (short for Context sensitive lAbel pRopaGatiOn) can use the information in the other algorithms to understand how code and data are intertwined and recommend how to divide the application code into standalone microservices.
CARGO augmented several top recommendation algorithms for dividing a legacy program into modules. It was then tested on open source Java programs for trading stocks, booking flights, and buying a pet. A recent paper shows that CARGO lowered the restructured program’s latency by 11% and increased its throughput by 120%. CARGO recommended architectures that were measurably faster and more efficient.
We plan to enable CARGO to analyze legacy programs as they run, to encourage continuous updates, because even microservices can be improved with further analysis. We also hope to expand Project Minerva to other programming languages and develop more AI tools for refactoring legacy programs. But it is a big job, and we could use your help. We will be leading two Project Minerva coding challenges this year, kicking off the first one this spring. Stay tuned for more details.
Date02 Feb 2023
- Note 1: The study, CARGO: AI-Guided Dependency Analysis for Migrating Monolithic Applications to Microservices Architecture, received a distinguished paper award at IEEE/ACM's 2022 International Conference on Automated Software Engineering. ↩︎