DevOps for the mainframe
DevOps as a term has been evolving over the last few years. If you want some interesting perspective, see what your favorite search engine returns for the term. At it's most basic, DevOps is the process of bringing Development and Operations together to share processes and procedures. The goal is to reduce the risk of change and improve the speed of deployment. This requires true collaboration across the groups responsible from the business analyst, through Development, Test, Quality Assurance, and Operations. DevOps is about making sure the way an application is deployed in production is the same way it was deployed in test and development, DevOps includes the radical notion of applying software management to the scripts and processes used for the actual deployment and monitoring by operations into production, and bringing the monitoring capabilities from Operations into development and test to get early understanding of how the operational behavior including performance and the demands on human and automated procedures. DevOps principles allow more frequent deployments (See Continuous Integration) and a more effective feedback cycle.
While DevOps principles are intended to apply across all platforms, the intensely shared nature of the z/OS environment has shaped, some would say constrained, the deployment process. For z/OS, the deployment processes are highly structured requiring all the changes to follow a common process. To start with, the source code management tooling is the heart of the process. In many cases, it provides the promotion and deployment technology that all the applications need to use. It should be noted that there have also been numerous client specific customizations of this deployment capability, customizations that only handle the z/OS part of the deployment. Today’s composite applications are driving the need is to coordinate the deployment of the entire application across the various platforms. With a deployment capability locked in a given system that does not coordinate well with other environments, a comprehensive and automated deployment solution still is not available.
There are also a number of other key differences for mainframe clients in the development processes that need to be understood to truly reach the goals of DevOps. In the z/OS environment, organizations are generally building only the changes, the deltas, to the application and deploying them into the environment. It is very common to find that some parts of an application have not been rebuilt in decades!. There is very little truly automated testing of applications and development projects generally follow a more waterfall development methodology. There are generally few z/OS test environments that are shared across application development teams. The z/OS teams have their own SCM tools and procedures for the entire development process. These tools are rarely if ever the same tools available to or used by the distributed teams. These differences increase the difficultly to provide an end to end development process.
The goal of DevOps has to be to bring not only Operations and Development together, but to also bring the different teams within development together. We need the collaboration and the consistent development practices across the teams to insure reliable repeatable deployment across the platforms to provide the true business value. With the explosion of inter-dependent multi-platform, this is truly composite, business applications, the “need” is more like a very demanding requirement for success.
Most conversations about the effectiveness of the Test part of the process quickly point out the cost of setting up and deploying realistic test environments on a project by project basis. Testing mainframe application changes is particularly daunting given the costs and complexities involved. Perhaps, this is why many would rather defer to QA that which would be better handled earlier in the cycle. IBM has stepped up to the tooling challenge with the ability to have cheap, isolated development and test environments for z/OS through Rational Development and Test Environments for System z. By providing test z/OS environments to individual team, the contention for resources are decreased. We went further with the ability to provide test virtualization through Rational Test Virtualization Server. The ability to provide virtualization for the services, either for parts of the z/OS application, the entire z/OS application, or the entire front end components the developers have greater ability to test their application in parts and when they are ready.
Tools are only as effective as the organizations that use them. Organizational collaboration is critical to improve your overall development process and to increase the ability to deliver function on time with the right capabilities. This collaboration needs to cover the full development lifecycle across platform teams, as well as Operations and Production deployment teams. This collaboration will require that teams, individuals, change the way they work. The work needs to be more visible and accessible to the others on the project as well as the stake holders. IBM can provide the tooling through a combination of the Collaborative Lifecycle management products of Rational Team Concert, Rational Requirements Composer, and Rational Quality Manger as well as SmartCloud Control Desk. Integration is provided between these products to allow traceability and collaboration across the teams. Organizations, however, need to change to take advantage of what the tools offer.
Quality cannot be tested in. We know this to be true. We need the enforcement of quality standards through the process so quality is part of the whole process. This is facilitated through the use of Rational Test Workbench for automated testing and products such as SmartCloud Application Performance Manager and OMEGAMON to monitor the environment. Two key factors play into improving the quality, one is through automated testing, it allows the testing early and often. The developers can use it to validate their coding efforts match the requirements as they develop the changes. Those same testing facilities and test cases can be re-used throughout the development cycle to ensure the required behaviors do not get lost or broken. The second is monitoring the solution through the same monitors used in production. If the first time you measure the application’s behavior and performance with your production monitors is in production, you won't have the parameters set right. You won’t have the automation correctly defined. You will not be capturing the right diagnostics to identify problems when they happen, and you won't have the opportunity to fix those problems early. Defining the oper
The applications we are changing, expanding, maintaining are not simple. They have many moving parts, often on several different platforms. A sensible approach is to have an automated consistent build, configure, and deploy through all stages of the process. This will ensure that you are building all the parts needed and only the parts needed. It will ensure that the application remains whole as changes come in and the project moves through the cycle of Test, QA and Production. IBM brings a number of capabilities to the table including Rational Team Concert (RTC), SmartCloud for Continuous Delivery, and SmartCloud Orchestrator. RTC provides the automated build capabilities for your entire application including the z/OS components, as well as allowing for any platform unique deployment requirements for composite applications. Through the integration of RTC with SmartCloud Continuous Delivery you can build and deploy your distributed application elements, and coordinate that with the deployment of the z/OS application elements into an existing z/OS image.
Where are we today with DevOps for multi-platform business solutions that include the mainframe (which covers much of today’s existing business solutions, by the way)? DevOps is the way application development is moving. Organizations are adopting the principles and taking advantage of the capabilities that provide the best value for their organizations. As they do, they are driving the need for the organizational transformation required to receive the full value of a fully integrated collaborating organization, with full automation for test and deployment.
About the author
Rosalind Radcliffe is an IBM Distinguished Engineer within the Rational Enterprise Modernization organization. She is the Enterprise Modernization Solution Architect responsible for Collaborative Lifecycle Management products for IBM System z and Power Systems. This includes Rational Team Concert support for standard mainframe development activities, as well as the support required within the IDEs to provide a complete development and test environment. Prior to Rational, she was in the Tivoli software division, responsible for the SOA management strategy for IBM. Rosalind is the Chair of NC TEC, the North Carolina IBM Academy of Technology Affiliate, and she is a member of the IBM Academy of Technology and a Master Inventor.
Follow her blog, Multi-platform development