The DevOps Lifecycle
It’s important to note that DevOps instills an ongoing process of constant, iterative, incremental improvement. While the concept of a “lifecycle” implies, for some, that there is a finite “life” with a beginning and an end, the emphasis here is more on the “cycle” which will continue cycling until such time as the software under management is retired.
The DevOps Lifecycle is truly a living thing in that it grows, adapts, changes, contracts, accelerates, and de-celerates as required by the current state of the code being developed and used. The underlying foundation of the whole concept of DevOps recognizes that those who operate systems are the first line for receiving feedback from the user community regarding the latest release of software. Quickly and systematically delivering this feedback to the development group enables rapid response. The developers use the feedback to inform the next round of improvements which then travel their part of the cycle and are delivered to users shortly thereafter. In very meaningful terms the decision and the action become one.
The concept of joining development and operations people together in this way supports the goals of the DevOps Lifecycle:
Improve collaboration between all stakeholders from planning through delivery and automation of the delivery process in order to:
- Improve deployment frequency
- Achieve faster time to market
- Lower failure rate of new releases
- Shorten lead time between fixes
- Improve mean time to recovery”
This is accomplished by implementing and adhering to a straightforward lifecycle of activities:
- Continuous Development
- Continuous Integration
- Continuous Testing
- Continuous Monitoring
- Virtualization and Containerization
Clearly implementing DevOps fosters a culture of continuous everything! The result is an iterative cycling creating constant improvement with far shorter update cycles that accelerate time to market while making it far easier to identify and correct deficiencies should they occur. That iterative cycle repeats constantly:
From the monitoring, we learn what we need to know to return us to being agile and beginning the next plan. Jez Humble, one of the founding developers of DevOps and author of The DevOps Handbook, points out that “DevOps is not a goal, but a never-ending process of continual improvement.”
A Lifecycle of Continual Improvement
Most of us are accustomed to periodic updates and upgrades. New features, new capacities, new security provisions are introduced that make our software experience better. Some of these are ad hoc, distributed when a need, such as a security weakness, is identified and must be addressed immediately.
Most updates are distributed weekly or monthly. Upgrades perhaps a bit less frequently. Major new version introductions may take years.
These are true for software applications that have been developed in the classic, monolithic way. Any change must be planned, designed, coded, prototyped, piloted, tested and re-tested before distribution.
In cloud environments, monolithic application development no longer makes sense and has been superseded by microservices delivered in containers along with all libraries and other resources required to run them. These microservices are called upon as required. Should one become damaged in the course of transit or processing, it is instantly re-instantiated and re-distributed. This delivers a level of resilience unavailable in monolithic development.
Similarly, today’s DevOps Lifecycle re-emphasizes the concept of “cycles.” Here, the cycles come far faster and more frequently. In DevOps, the developers and operators that have joined forces develop a culture in which they are constantly finding new, better, faster ways to work. Leveraging their foundation in Agile development methodologies, they build new code in collaborative environments rather than silos, and they focus on “short yardage,” creating repetitive rounds of incremental improvement.
As soon as the developers have distributed new code the operators step in and start obtaining user feedback. This vital information is fed back immediately to the developers who then assess the input, create code to build new solutions. Since each is a small component of a much larger environment they can be tested, packaged into their containers, released, configured, and distributed at which point the operators step in again and start obtaining the next cycle of user feedback, starting the next cycle. This repetition continues, and continues, in a lifecycle of constant, continual improvement.
Iterative Lifecycle Process
Even though they are now working together collaboratively, it is useful to examine the steps both “Dev” and “Ops” execute in the course of the DevOps Lifecycle. Let’s enter right in the middle.
Ops Task Cycle
A major responsibility that falls to Ops is the constant monitoring of applications to assure optimum performance. This cannot end at simply monitoring. Going deeper, Ops must regularly audit the system surrounding each application to assure that everyone is doing what they are supposed to be doing in a timely and efficient manner. As they expose weaknesses, they must diagnose the underlying root causes. If possible, they will tune any configuration parameters that are available to them in order to resolve the anomaly. If they are not able to do so, the report of this anomaly becomes part of their regular feedback to Dev.
Dev Task Cycle
As new feedback comes in, Dev analyzes it to determine root causes and identify opportunities for improvement. They may then edit existing code or build new microservices to resolve reported issues. Once corrected or conceived, the changes and additions must be tested and then debugged as necessary. Finally they deploy the new microservices at which point Ops begins monitoring them.
And the next iteration of the lifecycle continues. Again, and again, and again. Continuous development. Continuous Integration. Continuous Improvement.
Interested in learning how to enable a culture of collaboration within your organization? Check out our latest White Paper, "DevOps Gives Wing to Your Development Efforts," to learn:
- How to Understand DevOps and its Enabling Culture
- How to Build Momentum for Excellent Innovation
- How to Create a Compelling Business Case For DevOps
- How to Get Started With DevOps