One of the most common barriers to Agile transformation success is the wall between the technical teams that develop software and the business and operations stakeholders who are responsible for its ongoing support. Advancements in the Agile methodology and culture over the last decade exposed the need for a more holistic approach to the end-to-end software development life cycle. Enter the DevOps movement.
What is DevOps?
The three primary characteristic of the DevOps movement are:
- To strongly advocate workflow automation and monitoring at all steps of software construction, from integration, testing, and releasing to deployment and infrastructure management
- To shorten development cycles, increase deployment frequency, and achieve faster time to market
- To deliver more dependable and successful releases, all in close alignment with business objectives
DevOps also promotes frequent communication and ongoing, real-time collaboration between traditionally separate workflows of developers and IT operations teams. It replaces the traditionally-siloed development and IT operations teams with multidisciplinary teams, helping to further streamline the movement of software throughout the build, validate, deploy and delivery stages of development.
Why Does DevOps Matter?
On average, high performing DevOps teams have been able to:
- Increase the frequency of their releases
- Reduce the lead time to deploy
- Improve the time it takes to recover from a system failure
- Lower their defect rate
- Deliver working solutions that are in close alignment with greater business objectives
The DevOps Toolchain
Adopting a DevOps model of software development relies on selecting the right technology to manage and execute different phases of development and delivery. This technology stack is often referred to as the DevOps toolchain, which distinguishes different tools used at different stages of development, testing, and business processes. These stages include the following:
An ongoing set of activities that encompasses system requirements definition, metrics development, prioritization of new and enhanced features, security planning, and release planning.
Includes activities associated with the creation of a code release candidate, including design, coding, builds, functional testing, and release management
Quality assurance activities, including the variety of testing types like acceptance testing, regression testing, and performance testing.
The activities that take place when a release is ready for deployment, including staging, approvals, and configuration.
Includes activities needed to move software into production, including release and fallback/recovery activities.
An activity that occurs through the DevOps Toolchain that includes provisioning and configuration of hardware and software
Activities focused on the health of production environments, including measurement of performance, availability, and other non functional requirements, as well as monitoring of the end user experience. Feedback from these activities is factored back into Planning activities.