The main objective of DevOps is to make the development and deployment of software consistent and reliable. Well-executed DevOps improves a team’s ability to deliver software. Agile principles and practices, when applied to DevOps, increase productivity and efficiency. It’s that simple.
What does it sound like when DevOps is not well executed?
- “Most of the IT budget was spent on fixing broken and defective software.”
- “I can’t invest in enhancements that might help drive business when I have to spend my budget on regulatory changes.”
- “The number of stakeholders for a key application is so large that I struggle implementing company-wide changes.”
- “Business priorities seem to change constantly; I struggle with managing these changing priorities.”
With help from Agile, DevOps can produce faster deliveries. Products can evolve and improve at a faster pace. Teams can deliver higher quality code and reduce the cost of development moreso than teams using the traditional waterfall model of software deployment.
Move consistently from development to deployment in a well-executed IBM DevOps model
IBM delivers DevOps solutions and tools that you can use to create test environments, perform regression testing and automated quality checks, and more.
- IBMÂ® Application Discovery and Delivery Intelligence (ADDI) accelerates application transformation by using cognitive technologies to analyze mainframe applications so you can quickly discover and understand interdependencies and impacts of change and renew these applications more efficiently and productively.
- IBM Rational Team Concert manages source code repositories as well as plans, tasks and project status to adopt faster release cycles and manage dependencies across both small and complex development projects.
- IBM UrbanCode Deploy is a tool for automating application deployments through your environments. It provides consistent and automated deployment of complex applications to distributed platforms, cloud environments, container platforms, and mainframes. It also allows for different security configurations across environments while being integrated with middleware. UrbanCode Deploy can streamline decades’ old processes that require substantial time and complexity to deploy. This makes it perfect for deploying CICS, DB2, IMS and MQ services on z/OS. It manages multi-platform applications while keeping the system consistent and reliable. You can read how UrbanCode deploy can be used to deploy IMS applications on z/OS here; and here is a quick UrbanCode Deploy Tutorial.
- IBM z Systems Development and Test Environment is a platform that enables IBM z/OSÂ® middleware and other z/OS software to run on Intel-compatible platforms without IBM ZÂ® mainframe hardware. It emulates IBM Z architecture and make it easy for mainframe application demonstration, development, testing and education. You can find out more about IBM Enterprise DevOps and IBM Z here.
Move consistently from development to deployment in a well-executed Open Source DevOps model
GitHub is a web-based hosting platform for source control similar to IBM Rational Team Concert (RTC). Using a GitHub repo, we can store all the files and folders needed for our project, such as the source code and the jar files.
IMS has a GitHub repository in which you can find code snippets and samples.
GitHub introduces the concept of branching, which allows for different versions of a repository at the same time. As a user, you can create a new branch from your master to write code and make changes in your own sandbox before merging it back to the master.
Here is a quick GitHub Tutorial.
Maven is a tool for building and managing any Java-based project. Maven creates a uniform build system and makes the build process simple.
The core of Maven lies in the Project Object Model (pom.xml) file. The pom contains information about the project, including configuration details used to build the project. Some of those configurations include different project dependencies, plugins, and goals.
Here is an example of a pom.xml file.
Here is a quick Maven Tutorial.
Ansible is a simple IT engine that automates cloud provisioning, configuration management, and application deployment. Ansible works by using small programs called “Ansible modules” to execute your program. These modules can reside on any machine with no servers or databases required.
A major component of Ansible is Playbooks. Playbooks describe the desired state of your systems. Ansible goes through all the required steps to get your system to that desired state, making installations and upgrades repeatable and reliable.
Here is a quick Ansible Tutorial.
Jenkins is a continuous integration and continuous delivery (CICD) server. You can use Jenkins to build and test your software projects continuously. Jenkins supports version control tools such as Git/RTC, and it can execute Maven/Ant based projects. Builds on Jenkins can be triggered after every commit to the version control system, or scheduled by time, such as running a build daily. Jenkins has many plugins that can extend its functionality, including the HTTP Request plugin, which you can use to send HTTP requests to kick off other DevOps tasks.
Here is a quick Jenkins Tutorial.
We’ll follow up this DevOps apps overview with another blog post that will show you how to set up and integrate Jenkins, Maven, and Git for end-to-end deployment of a Java application on IMS. Stay tuned!