For most organizations, the need for Continuous Delivery and Continuous Integration is the driving force behind moving to Agile development on the mainframe. The business requirements of needing to continuously update and respond to market needs often outweighs the savings in time and resources, so most DevOps managers don’t consider that in the equation. However, Continuous Delivery on a mainframe can be problematic since many companies don’t have the ability to do true agile development on the mainframe. A distributed agile development IDE may be the solution they are looking for. Distributed agile development offloads the GUI to a desktop environment where the environment is more conducive to IDE tools and interactions with newer tools and technology. In addition, the mainframe proprietary infrastructure can be abstracted on the desktop to further assist developers in creating an agile environment for development, testing and deployment. While the advantages of using agile software are apparent, distributed software provides even more subtle enhancements. Even though DevOps’ goal is unified around software delivery, managers must allocate their resources for the separate functions wisely. For the DevOps manager, he is concerned with more than just the productivity of developers; the operations group and the systems group have their own concerns when embracing DevOps. Productivity on the operation’s side of DevOps has evolved from focusing on stability and reliability to how it affects the bottom line. An Agile Infrastructure is key to providing this productivity, but let’s just focus on how a distributed agile development environment can help first.
For the developers, the inherent advantages of a distributed agile development environment is more apparent, but can often be overlooked:
- a desktop based IDE with a project based, distributed file system environment provides quicker responses to changes affecting code on the mainframe.
- File transfer times to the mainframe no longer are an issue, since dynamic updates happen all the time.
- Issues with updating the source repository disappear in a distributed environment; check ins and check outs are a mouse click away.
- Complex build environments can be abstracted in an IDE with one click.
- New deployments can be abstracted into a one click menu item in the IDE.
- Menus can be customized to fit any environmental or functional requirements.
- Debugging in an integrated environment with the mainframe not only provides a better view of information, but greatly speeds up the debugging process.
For the operations side of DevOps or the systems department, there are some advantages that may not be apparent with a distributed, Agile development tool. It is just a matter of identifying all the changes to your Continuous Delivery process and how a distributed environment can affect them:
- Less overall system resources are used in a distributed development environment, reducing the need for additional capacity planning.
- Memory resources are significantly reduced because of the reduction in the number of processes.
- Mainframe CPU resources are reduced for a couple of reasons: developers are using Desktop resources to modify their code, and intelligent editors with syntax highlighting or code assist catch syntax errors before the developer sends off the code to the compiler.
- Less disk space is required to maintain copies of the source code and temporary files generated by the compilers on the mainframe.
- IO is significantly reduced because your developers are using workstations for code development and manipulation and that IO is not being performed on the mainframe.
- A lower load on the mainframe results in lower power consumption and lower maintenance costs.
- Less load on the mainframe could translate into a reduction in hardware configuration: i.e. – number of CPUs, Memory or Disks on the servers.
- If hardware configurations are reduced, then some software maintenance costs based on the machine configuration,would be reduced as well.
As you can see from this list, a distributed, agile development environment can not only improve developer productivity, but significantly reduce the resource consumption and enhance the performance of the mainframe. As a systems manager, you should be able to assign costs to these changes and calculate an overall savings. If the systems department is still being operated separately as a profit center, then the distributed agile development savings alone can be used to justify agile infrastructure software to speed up the deployment process as well. In our next blog: How to speed up deployment with Application Performance Managers for DevOps.