The term DevOps has been around for more than a decade now, and the related practices have been widely adopted by companies including Google and Amazon as a way to accelerate the pace of software development and deployment. DevOps is, however, still evolving and finding new applications in the enterprise. These days, a DevOps approach is seen as crucial to successful digital transformation, cloud computing, security, site reliability engineering, and more.
In this article, we’ll look at the basic ideas that define DevOps and point to resources to help you understand and implement the philosophies, practices, and tools that work for your organization.
What Is DevOps?
Let’s start with a quick definition and overview. Google defines DevOps as “the organizational and cultural movement that aims to increase software delivery velocity, improve service reliability, and build shared ownership among software stakeholders.”
More fundamentally, adopting a DevOps model means development (Dev) and operations (Ops) teams are not siloed or separated. Instead, according to Amazon, a single team of engineers “works across the entire application lifecycle, from development and test to deployment to operations, and develops a range of skills not limited to a single function.” Quality assurance and security teams may also be integrated into the process, and this integration of security concerns is referred to as DevSecOps.
The advantage of an integrated, collaborative approach, says Patrick Debois, involves the insight gained from working within a system. “We have to optimize for the whole system and not just for the silo. By optimizing for the whole, we are improving for the business, not just for IT.”
These goals of system optimization and improvement are rooted in the far-reaching principles of statistical process control and total quality management set forth by W. Edwards Deming, which have been implemented within industries around the world for improved production and performance.
DevOps is also closely related to the continuous integration (CI) method developed by Grady Booch, and the tenets of Agile and lean software development, which emphasize continuous delivery (CD) and testing. DevOps, however, encompasses more than a set of best practices for software development; it’s a mindset.
DevOps is “an approach that combines cultural philosophies, organizational change, and the implementation of new tools and practices,” writes Catherine Paganini at The New Stack. And, she outlines these six essential building blocks of the process within an organization:
- Small teams, full ownership
- Automated tests for continuous feedback
- Loosely coupled architectures
- Telemetry for feedback on apps in production
- Continuous organization-wide learning
- DevSecOps: Building security into your DevOps approach
This system lets organizations “deliver applications and services at high velocity, evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management processes,” according to Amazon.
Testing and Metrics
Although each of these building blocks is important, the value of testing for continuous feedback cannot be overstated. Automated tests provide fast feedback loops to help detect issues so they can be fixed before more work is done, and this immediate feedback also keeps developers from repeating the same errors, Paganini says.
Another key element of DevOps implementation involves metrics. As Nicole Forsgren, principal author of the annual State of DevOps Report, says, “you are what you measure.” By this, she means that “a company’s capabilities may be either enabled or constrained by the extent to which it is capable of perceiving how it does what it does.”
For Jez Humble, Google Cloud Platform Advocate, this approach “comes down to three teams—software development, software deployment, and service operations—who care about four metrics plus one that can’t be measured directly, availability, but nonetheless can’t be compromised during this process.”
According to Humble, the four key DevOps metrics are:
- Lead time for changes
- Deployment frequency
- Time to restore service
- Change failure rate
Successful DevOps teams, he says, “understand the shared ownership of these objectives” and foster a “climate for learning, highly participatory retrospectives, and the encouragement of trust, voice, and autonomy.”
To adopt these practices and implement these metrics, organizations need the appropriate tools and platforms. VictorOps has put together a list of 20 top DevOps tools that can lead to “improved collaboration and transparency, as well as faster development and more resilient architecture.”
Additionally, Paganini notes, “developers must be able to independently create production-like environments, run tests, and deploy code—all which should be (ideally) automated and available on-demand. ... A key goal of DevOps is to eliminate human bottlenecks.”
With the world of software development now several years into the DevOps experience, the approach clearly has proven effective. The particular implementation practices will, of course, differ and evolve depending on an organization’s goals, values, and environment, but the underlying principles are here to stay.
- Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations by Nicole Forsgren, Jez Humble, and Gene Kim
- The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations by Gene Kim, Patrick Debois, John Willis, and Jez Humble
- Guide to Cloud Native DevOps (free ebook from The New Stack)
- Introduction to DevOps and Site Reliability Engineering (free training course from Linux Foundation)
- What’s a Site Reliability Engineer (SRE)? by FOSSlife.org