Agile & DevOps

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?

Many say DevOps is the offspring of Agile software development – born from the need to keep up with the demand for increased software delivery speeds and an understanding of the value that an Agile framework achieved by employing collaboration in product development.

The tech community has used a variety of terms to describe the essence of DevOps – it is a culture, a movement, a set of practices, and the act of using tools (software) to automate and improve imperfect methods of managing complex systems. At its core, DevOps aims at unifying software development and software operations methodologies. It asks the Operations teams to be part of the Agile development lifecycle.

DevOps is reinforced by the practices it borrows from Agile and Lean principles, with an added focus on service and quality. By designing, building, testing, deploying, managing, and operating applications and systems faster and more reliably, DevOps practitioners create greater value for customers. This then translates into a profitable competitive advantage for them – and fosters a manageable delivery schedule that places people over product.

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?

Successful organizations understand that development and operations teams must work together if they expect to continuously deliver high-quality, supportable technology solutions that satisfy their customers. When organizations have siloed teams, each time a software program is “thrown over the wall” to an independent team it adds bottlenecks and risks that threaten the success of the release.

DevOps addresses the challenges of traditional development approaches by establishing ways for business and IT teams to be collaborative – bridging the gaps between disparate tool sets. In a recent report, Gartner refers to these collections of siloed development tool ecosystems as “tool islands.” If CIOs want to achieve continuous delivery of high-quality software, they must build bridges between these islands so that tools and teams can work together seamlessly.

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.

These stages are commonly represented in the form of the DevOps Loop:
Why DevOps Alone is Not Enough

Many organizations assume that if you can achieve speed through Agile and DevOps, then you’ll be successful in driving business value. However, the reality is that as a product passes through each stage of the DevOps toolchain, gaps in alignment can become chasms within value stream mapping. Without a deeper focus on the aligning these business-IT value gaps, a product will continue to drift further and further from its intended business goals as it moves through different stages of the development lifecycle.