DevOps

Image

Imagine a world where product owners, Development, QA, IT Operations, and Infosec work together, not only to help each other, but also to ensure that the overall organization succeeds. By working toward a common goal, they enable the fast flow of planned work into production, while achieving world-class stability, reliability, availability, and security.

—The DevOps Handbook

DevOps is a mindset, a culture, and a set of technical practices. It provides communication, integration, automation, and close cooperation among all the people needed to plan, develop, test, deploy, release, and maintain a Solution.

SAFe enterprises implement DevOps to break down silos and empower each Agile Release Train (ART) and Solution Train to continuously deliver new Features to their end users. Over time, the separation between development and operations is significantly reduced, and trains operate with an automated Continuous Delivery Pipeline. This mechanism seamlessly defines, implements, and delivers solution elements to the end user, without handoffs or excessive external production or operations support.

The goal is simple: Deliver value more frequently. This is indeed achievable, as “high-performing IT organizations deploy 30 × more frequently with 200 × shorter lead times. … [and] 60 × fewer failures and recover 168 × faster” [1].

Details

DevOps is a combination of two words, development and operations. Without a DevOps approach, there’s often significant tension between those who create new features and those who maintain the stability of the production environment. The development team is measured on the business value delivered to end users, while IT service management is measured on the health and stability of the production environment. When each group has seemingly opposing business objectives, delivery inefficiency and organizational friction may rule the day.

DevOps ends this silo approach, thereby providing an enterprise with the ability to develop and release small batches of functionality to the business or customer in a flow process called the continuous delivery pipeline. DevOps is integral to every Value Stream and, by definition, is integral to SAFe.

Many SAFe concepts and principles—systems thinking, small batch sizes, short iterations, fast feedback, and more—directly support DevOps principles. In addition, the SAFe practices of Continuous Exploration, Continuous Integration (CI), Continuous Deployment, and Release on Demand directly support this business need.

The Goal of DevOps

From planning through delivery, the goal of DevOps is to improve collaboration between Development and IT Operations by developing and automating a continuous delivery pipeline. In doing so, DevOps:

SAFe’s CALMR approach to DevOps covers the five main aspects of the DevOps environment (Figure 1). Each aspect is described in the following sections.

A figure showing the five main aspects of the DevOps environment.

Figure 1. SAFe’s CALMR approach to DevOps

Culture of Shared Responsibility

In SAFe, DevOps leverages the culture created by adopting the Lean-Agile values, principles, and practices of the entire framework. Just about every principle of SAFe—from Principle #1, Take an economic view, to Principle #9, Decentralize decision-making—applies to DevOps. Adoption of this perspective allows some operating responsibilities to be shifted upstream, while following development work downstream into deployment, and operating and monitoring the solution in production. Such a culture includes the following characteristics:

Automate Everything

DevOps simply recognizes that manual processes are the enemy of fast value delivery, high productivity, and safety. But automation is not just about saving time: It also enables the creation of repeatable environments and processes that are self-documenting and, therefore, easier to understand, improve, secure, and audit. The entire continuous delivery pipeline is automated to achieve a fast, Lean flow.

Automation facilitates faster learning and responses to market demand and customer feedback. Builds, testing, deployments, and packaging that are automated improve the reliability of processes that can be made routine.

This goal is accomplished, in part, by building and applying an integrated and automated ‘tool chain’ shown in Figure 2. This chain typically contains the following categories of tools:

A figure illustrates the automation of the continuous delivery pipeline.

Figure 2. DevOps tool chain within the CD Pipeline

Lean Flow

SAFe teams strive to achieve a state of continuous flow, enabling new features to move quickly from concept to cash. The three primary keys to implementing flow are summarized in Principle #6: Visualize and limit WIP, reduce batch sizes, and manage queue lengths. All three are integral to systems thinking (Principle #2) and long-term optimization. Each is described next in the DevOps context.

Measure the Flow of Value

In a DevOps environment, problem resolution is less complex, because changes are made more frequently and in smaller batches. Telemetry—that is, automated collection of real-time data related to the performance of solutions—helps the teams quickly assess the impact of frequent application changes. Resolution happens faster because teams don’t need to wait for a different group to troubleshoot and fix the problem.

It’s important to implement application telemetry to automatically collect data on the business and technical performance of the solution. Indeed, basing decisions on data, where ‘the facts are always friendly,’ rather than on intuition, leads to an objective, blameless path toward improvement. Data should be transparent, accessible to everyone, meaningful, and easily visualized so as to spot problems and trends.

The goal is to build applications that perform the following functions:

It’s also important to measure the flow of value through the continuous delivery pipeline. See the Metrics chapter for specific recommendations on DevOps measures.

Recover: Enable Low-Risk Releases

To support the continuous delivery pipeline and the concept of Release on Demand, the system must be designed for low-risk component or service-based deployability, releasability, and fast recovery from operational failure. Techniques to achieve a more flexible release process are described in the Release on Demand chapter. In addition, the following techniques support fast recovery:

To achieve these recovery capabilities, the organization will typically need to undertake certain enterprise-level initiatives to enhance architecture, infrastructure, and other nonfunctional considerations to support deployment readiness, release, and production.

LEARN MORE

[1] Kim, Gene, Jez Humble, Patrick Debois, and John Willis. The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations. IT Revolution Press, 2016.

[2] 2015 State of DevOps Report. https://puppet.com/resources/whitepaper/2015-state-devops-report?link=blog.