Comment: Moving from COBOL on a mainframe to Java in the cloud can be tricky. See how AI-assisted automated testing improves the process.
Nearly two-thirds of large enterprises use mainframe-based applications dating back two decades, according to the recent Mainframe Modernization Activity Barometer Report of Advanced. More than a quarter of companies are running production applications that are up to 30 years old – some are even back to the 1960s.
In other words, while we love to tout cool new technologies, many companies are mired in old, not-so-cool technologies.
For example, in a conversation with a friend from a US public pension fund with nearly $100 billion under management, he told me that they had decided to take action and migrate most of their applications remaining mainframes from COBOL to Java. Why switch from COBOL? Well, for one thing, it was hard to find developers who either knew the language or wanted to, with COBOL ranking #1 as the “most feared” programming language in Stack Overflow’s annual survey. But there were other reasons to adopt Java, starting with a desire to better use DevOps to improve software delivery.
TO SEE: Quick Glossary: DevOps (TechRepublic Premium)
Less COBOL, more DevOps
When migrating from COBOL (or any language) to Java (or any language), it’s a good idea to start by testing the requirements. After all, a lot of your code might not even be used anymore. And when you’re migrating to Java, you definitely need unit testing to know where you’re at and to ensure a code base that you can confidently upgrade over time as requirements change constantly. In the case of this pension fund, they decided to start with AI-powered Diffblue to automate the writing of these unit tests, something I’ve touched on before.
Migrating or upgrading decades-old applications can be complex, but companies increasingly feel compelled to take this route. The data suggests more modernization took place in 2020 than in previous years as businesses grappled with shifts in demand and operational disruptions from the pandemic.
TO SEE: 10 Ways to Prevent Developer Burnout (Free PDF) (TechRepublic)
Businesses are under pressure to create new value for their customers. Coupled with the demand for software-based products and services, the trend towards competitive differentiation through technology is no huge surprise. Additionally, organizations are finding that traditional approaches to software development and delivery are not sufficient to meet these needs, giving rise to trends such as DevOps. By moving from COBOL to Java, for example, companies like this pension fund are able to embrace containerization and the cloud.
The alternative – mainframe code, applications and environments – created the following significant speed bumps for the business:
Rigid and difficult to access development and test systems.
Extreme sharing of environments, causing bottlenecks in development and testing.
Code difficult to understand and in which it is difficult to establish dependencies.
Unknown or unknown build and deployment procedures.
Lower level software, with no idea of the upgrade or the impact it may have.
Inability to make changes.
Lack of integration/coordination with other platforms.
The company’s first thought was to try to embrace DevOps while staying true to COBOL and its mainframes; However, implementing a DevOps culture in a mainframe environment is incredibly difficult. First, the lack of service-oriented architecture and extensibility makes “systems thinking” a difficult task. Second, the core concept around DevOps is to connect development to technology operations. Big Iron is notoriously expensive to expand, making mobile data access risky. When the system itself is the biggest impediment to achieving a culture of continuous experimentation and learning in the name of competitive advantage, it’s time to replace the system.
“Computing moves heaven and earth”
My pension fund friend runs a large software store for the fund, with over 150 IT people. As it should be, business requirements are driving its strategy to adopt a DevOps approach and move as many workloads as possible from the mainframe to Java.
“What I’ve heard from the company…is that IT is leaving no stone unturned to bring us our improvements, to bring us fixes, and to deploy our application changes,” he said. . “However, every time they deployed something, it broke something else. I see this as a challenge to take on and embed into our internal IT processes. improve our regression testing to hopefully speed up our delivery and give our delivery a higher quality.”
So far, the pension fund has successfully moved 70% of its COBOL code to a test-covered Java codebase, with another two million lines of code remaining on the mainframe written in COBOL. But that change is coming: “We haven’t really gone into production yet in multiple development environments, so we don’t really know what the performance will be,” he said, until it’s uploaded to the company’s DevOps pipeline.
As developers verify code, the company automatically runs Diffblue Cover to generate JUnit tests. Diffblue Cover allows the developer to gradually build test suites to measure progress and detect unforeseen side effects. Tests can be run continuously and results are delivered immediately.
Moving off the mainframe was a huge effort, he said, and the fund isn’t ready to embrace automated coding in other areas outside of testing. But his team is exploring options in the cloud. He moved identity management to Okta, so that’s a start.
“We want to be agile, flexible, and where we can move from Azure to AWS, and everywhere else, with containers and Kubernetes in the future,” he said. “We invest heavily in DevOps, test automation, and IT business automation. My goal has been to improve the quality of our code, our development operations, and bring our organization to a point where we can we open up to cloud computing?
Disclosure: I work for AWS, but the opinions expressed here are my own.