Introducing Development Containers for Mainframe Subsystem Application Development
Introduction
After nearly 40 years of working as a developer or with developers, I contend that writing code is part art and part science — a hybrid of creativity and technical skill. I have also observed that creativity is best served when developers have the freedom to make choices.
We also must acknowledge that development managers need processes that deliver control, observability and consistency. Meanwhile, the businesses they all work for need software to be delivered at greater speed but without introducing risk.
So how do we reconcile all these requirements in the world of hybrid cloud ? This is a particularly high hurdle for those developers and organisations that produce and rely on business applications designed to interact with Mainframe SubSystems (MSS) like CICS®, IMS™ and Db2®.
Rocket Software provides your solution by delivering industry-leading development capabilities with an array of UI experiences. They’re deployable on z/OS®, on-premises, and in the cloud, in both Windows, Linux, and AIX. Rocket® Enterprise Developer and Rocket® Enterprise Test Server offer developers both a choice of ‘Change Experience’ as well as the opportunity to incorporate modern development practices. This even includes folding in DevOps into your day-to-day tasks when maintaining and modernizing MSS applications.
Survey
To help shape the future of the development of MSS applications and to help drive innovation, please take part in the survey here.
Containers are made for development
In recent releases, we’ve also introduced support for containerization of development capabilities. Deploying the development capabilities in containers maintains the unique characteristics of Enterprise Developer. Providing ‘individual’ development environments that remove the bottlenecks of the traditional MSS application development experience remains intact. And the same is true of the allowance for centralized management and control across large scale development organizations.
The dynamic nature of containers has made them ubiquitous in delivering automated development functions in all the leading CI/CD pipeline tools. And now you can also align with workflow models of branch-based version control systems.
To extend and compliment these choices further, in the 10.0 release of Enterprise Developer we have introduced the ability to deploy using Development Containers.
What are Development Containers?
Development Containers (or Dev Containers for short) are reproducible development environments. But how are they different from standard containers?
Dev Containers add an extra layer of control on how the development environment is configured. This extends on the standard container with customization options that pertain specifically to development. Dev Containers are managed using a JSON based configuration file that provides simplified management of the container functionality and can be versioned alongside the application. Further features allow individual developers to customize their environment to suit their personal preferences.
Why do Development Containers matter?
Dev Containers empower developers by providing a reliable, isolated, and efficient environment for building and testing code.
They contribute to faster development cycles and better collaboration within development team.
Isolation and Consistency
Dev containers allow developers to work within a consistent environment, regardless of your local setup or the host system
By packaging tools, libraries, runtimes, and dependencies, dev containers ensure that everyone on the team works with the same configuration
This isolation prevents conflicts between development and operations teams, as each group can focus on its respective areas of responsibility
Speed and Efficiency
Setting up a new development environment can be time-consuming, but not with Dev containers streamlining this process
Developers can quickly spin up a pre-configured environment directly within their code editor
This saves time, reduces setup overhead, and ensures a clean environment for every development session
Continuous Integration and Testing
Dev containers aid in continuous integration (CI) and testing workflows
They provide a consistent environment for running tests, ensuring that test results are reliable and reproducible
Whether you’re building, testing, or deploying code, dev containers simplify the process and enhance consistency
Cloud-Native Development
Dev containers lay the groundwork for cloud-native development practices
They align with DevOps principles, CI/CD pipelines, and serverless architectures
Container-based applications can seamlessly operate across distributed cloud environments, making them ideal for modern development
How are Development Containers different?
With typical host-based development, all elements such as editor, SDKs, App Servers, tools and packages, and source code are all in a single environment. This often leads to software clashes between projects.
When clashes do happen, developers have to choose the versions of these dependencies that are not the same as ideal versions, just to preserve the use of multiple source bases.
In Development Containers based development, the necessary SDKs, App servers, tools, and packages are installed in a container, including Rocket® Enterprise Developer. Source code can be either loaded in, or mounted to, the container allowing complete isolation.
Consider this in the context of MSS application development, where often there is a business need to work on deliveries on different cadences. Using Dev Containers allows the developer to work on different ‘versions’ of the application without the need to spend significant time reconfiguring their development environment.
Demo
To help you visualise how all this works, watch the following video.
Combining Dev Containers and Unit Testing
Dev Containers provide a ‘light touch’ mechanism for developers to access their development tooling, which aligns with modern development practices. An obvious bedfellow for this type of development experience is utilizing unit tests to simplify and accelerate testing of the changed code before committing the changes to the CI/CD process. Using unit tests will also reduce error rates in the later, more functional testing phases of the SLDC.
COBOL [OC1] unit testing has been available in Rocket® Enterprise Developer for a number of releases. In 9.0 we extended that feature to deliver mocking and stubbing of MSS coding constructs such as CICS and SQL, adding IMS support in 10.0. This allows for testing of the business logic code that has been amended without the need for a complete MSS subsystem environment to be available.
Combining these two capabilities of Enterprise Developer will allow developers to realize the benefits of modern development practices to accelerate maintenance changes through the SDLC. It is particularly beneficial to organizations that outsource some or all of these changes to 3rd parties.
For more details on the Enterprise Developer Unit Test Framework, read this accompanying blog. To see unit tests working inside a Dev Container, watch this video below.
What’s next for Dev Containers?
As cloud platforms become more prevalent in development, the adoption of hosted development tooling is increasing. An example of this is GitHub Codespaces, which provide ‘code from anywhere’ environments. The development capabilities are managed in the cloud, based on Dev Containers, and accessed via a browser utilizing the web version of VS Code.
We at Rocket Software envision these environments will play an important role in the future of MSS application development and are working towards delivering Enterprise Developer for GitHub Codespaces. For an early look at the value of this innovation, please take a look at this video below.
How you can try Dev Containers
If you are an existing Enterprise Developer customer, please download version 10.0 and view the product documentation here.
If you are not an existing customer, please follow the link here to obtain a trial version of Enterprise Developer.
If you are interested in the future of the development of MSS applications, please help keep driving innovation by taking part in the survey.