DevOps is a continuous process, and like Agile, ideas that are discussed in DevOps and Continuous Delivery belong to the same basic concept. In DevOps, all stakeholders including engineers, contribute to making the organization’s process faster, more efficient and reliable.
From Agile Lifecycle to DevOps Lifecycle
In Agile, several different cycles can be followed, from Portfolio level through Scrum and Kanban cycles, to the Continuous Integration cycle. Kanban works on a twenty-four-hour cycle and is popular among operation teams. Scrum, meanwhile, takes generally two to four weeks and is mostly used by development teams. DevOps needs to be able to adjust and support all cycles, because the theme is cooperation with all the organization’s stakeholders, as was discussed in the post What is DevOps?
As the saying goes, watch the pennies and the dollars will take care of themselves. Similarly, the way DevOps works with obvious benefits occuring in the shorter cycle, makes the subsequent longer cycles more efficient.
Phases of the DevOps Lifecycle
We will now look into the phases of the DevOps lifecycle:
1. Continuous Planning
In order to initiate the process and support the development and operational teams in coping with the rapidly changing environment, they need to have a plan in place. In DevOps, a backlog is created which can be prioritized at any time during the lifecycle and adjusted accordingly. Planning adjustments should be frequent, to take care of the quick changes in business requirements. Tight integration between planning and execution in this cyclical process is needed, which can be achieved by planning small numbers of batches, executing the processes, obtaining feedback from customers, taking care of the feedback and adjusting the planning wherever needed.
2. Continuous Integration
Continuous Integration requires a working relationship between development and operational teams. In order to achieve this, integration should be performed early with all changes being continuously visible to all the teams. During this phase, automation is needed for processes such as code compilation, unit and acceptance testing, then feeding the code for deployment. Automation should be interconnected in such a way that if developers perform any activity or change the code, it should be detected by the build system, then sanity tests are carried out and the build is posted to a repository. Bear in mind that for smoothness, this should be a continuous process.
3. Continuous Deployment
This phase requires the system to automatically deploy the software to a specified environment, but not to a customer environment. Continuous Deployment is a prerequisite for a continuous delivery phase.
4. Continuous Delivery
This phase is where stable and valid builds are automatically released to a customer’s environment. To arrive at this part of the process, Continuous Deployment is necessary for achieving Continuous Delivery. In short, Continuous Delivery is the ability to deliver applications to customers whenever necessary.
5. Continuous Testing
The aim of this phase is to identify issues early then eliminate the root causes through test case automation so time can be reduced. Automating test cases for DevOps is necessary because there is no manual intervention at all, and the automated test cases should be executed for every build generation.
6. Continuous Monitoring and Feedback
Monitoring is an important operational phase that helps determine the quality of the entire DevOps lifecycle. It enables the team to assess how well the application is working in its respective environment and if it conforms to design. To maintain the health of the system at an optimal level, key information is recorded and processed so any loopholes can be discovered, avoiding any degrading of the system. This requires that operation team use tools that monitor the application performance and related issues. The operation team may work with a developer to create a custom monitoring and analytics function within the application. Monitoring has the effect of lowering the rate of support requests. If a problem is highlighted during monitoring, the issue is immediately reported back to the development team who then fix the problem in the continuous development stage.
Feedback is essential to frequent and automated releases. Continuous feedback helps in providing visibility to all stakeholders as to what is being delivered and what issues are being reported. In DevOps, feedback is regarded as data that is collected from the customer as an input in carrying out planning and development. The collected data contains valuable information about the performance and any problem that is faced by the end-user.