Reading about Continuous Integration, Continuous Deployment, CI/CD, and unit testing etc all seem a million miles away from daily life on the Mainframe.
In fact there is a basic question to be answered for all projects, “Why do we need to do continuous integration?”. Agile Guru, Martin Fowler puts it best (he usually does) when he says:
Continuous Integration is a software development practice where members of a team integrate their work frequently; usually, each person integrates at least daily… Each integration is verified by an automated build… to detect integration errors as quickly as possible.
Large software projects are plagued with integration issues, developer 1 changes code and breaks developer 2’s code. If you are not following a continuous integration approach this will only be discovered near release, resulting in many late nights for the developers and even more grey hairs for the project owners. It is at this point that coding standards fall precipitously and “hacking” a change in to “make it work” can ensure that the next project delivery starts with, often, severe technical debts. Unless you are the US government this debt will have to be paid resulting in longer release cycles and missing features.
That’s great for Heirloom as a commercial software development company producing a completely automated mainframe workload migration platform but what about our customers?
Well our tooling enables our customer’s mainframe code to fit into industry best practice CI/CD environments and processes just like the one below. Because mainframe code compiled with Heirloom runs on the Java VM we are in the great position that we can utilize all the Java infrastructure that has been built in the last few years to support enterprise application development.
How do we implement this?
Lets start with the Developer Workstation. Heirloom is delivered as both a development environment and a set of run time Jar files.
The development environment is an Eclipse Perspective. We add COBOL and PL/1 as fully supported languages to the industry standard Eclipse development environment.
We can follow a full development cycle here:
The code being worked on in the image above is a standard CICS application presenting a BMS screen to the user. With Heirloom, BMS screen definitions are automatically transformed into HTML5 templates with the initial template design mimicking the green screen that mainframe users are familiar with. See an earlier post for a typical green screen sample program Mainframe Migration? Why?
The Continuous Build Server that we use runs the Jenkins open source automation server.
All our notifications back to the developers are done using using slack channels.
So what is the process flow?
Heirloom migrates not just your mainframe code to a new platform, the Java VM. It also enables you to transform your developer and integration processes. When you use Heirloom your mainframe projects and developers are now full citizens, and can adopt, industry best practices for continuous integration and deployment.
A pre-requisite that many people may have noticed for all this to work is that there is a set of tests that can be run automatically as part of the build and integration process and that is the topic for the next article
This is part 1 of a series of articles investigating why organisations should consider Mainframe Migration, the options they have and the steps they need to take to transform their mainframe workloads to run on the cloud.
Lets set the scene a little bit for a typical large organisation that runs business critical applications on the mainframe.
But there are a few vague, uneasy, feelings:
Would you rather be working with this green screen? A COBOL/CICS application that has been deployed to Pivotal Cloud Foundry using Heirloom.
Or with this Angular and D3 application that is also running on Pivotal Cloud Foundry and using exactly the same back end COBOL/CICS program to run the amortization calculation?
Your companys’ “front-end” applications are being delivered using industry best practices, continuous integration and continuous deployment, CI/CD, of the applications is de rigueur and perhaps most importantly your customers are extremely happy with the features the responsiveness and the look and feel. These applications and the teams that create them are agile in a way that the Mainframe group is not.
At the same time these web applications are now capable of the same reliability as your mainframe environment, not because every single component works all the time, but because every component has fail-over redundancy built in. It is a different reliability model to be sure but one to which the organisation is gradually becoming accustomed.
Your company is also becoming accustomed to hardware costs for running the non mainframe applications to actually fall each year and yet still eke out higher and higher performance. Need to have a little performance kick for black Friday, just automatically scale out some more application instances, and pay for the extra throughput performance ONLY when it is needed.
So now the scene is set, check back here for the next post where I will lay out various Mainframe Migration options and the pros and cons of each one.