What is DevOps?
First, let’s just say there is no definitive answer. Yet. There are lots of opinions about what is covered under DevOps and what’s not. Is it a culture? Is it a job title? Is it a way of organizing? Or just a way of thinking? We think it’s a still-evolving movement so let’s not get stuck on limiting it too much right now. Instead, we can talk about some of the common themes, tools and ideas.
Born of the need to improve IT service delivery agility, the DevOps movement emphasizes communication, collaboration and integration between software developers and IT operations. Rather than seeing these two groups as silos who pass things along but don’t really work together, DevOps recognizes the interdependence of software development and IT operations and helps an organization produce software and IT services more rapidly, with frequent iterations.
The Perfect Storm of 2009
A perfect storm of converging adjacent methodology including Agile, Operations Management (Systems Thinking & Dynamics), Theory of Constraints, LEAN and IT Service management came together in 2009 through a smattering of conferences, talks and Twitter (#devops) debates worldwide that eventually became the philosophy behind DevOps.
The Perfect Storm
Agile software development paved the way, steering away from the waterfall method of software development toward a continuous development cycle. But it didn’t include the operations side so while development could be continuous, deployment was still waterfall-oriented.
In a DevOps environment, cross functionality, shared responsibilities and trust are promoted. DevOps essentially extends the continuous development goals of the Agile movement to continuous integration and release. In order to accommodate continuous releases, DevOps encourages automation of the change, configuration and release processes.
Modern Applications in the Cloud and Out
DevOps found initial traction within many large public cloud service providers. With modern applications running in the cloud, much of what used to be considered infrastructure is now part of the code. Classic big WebOps shops like Google, Amazon, Twitter and Etsy are known to do deployments multiple times a day. In order to deploy that often, you have to know you’re not going to break what’s already working. DevOps helps ensure frequent deploys with a low failure rate.
Companies of all sizes are beginning to implement DevOps practices, with a 2012 survey by Puppet Labs and IT Revolution Press showing that 63% of over 4,000 respondents are implementing DevOps practices. And many shops, particularly lean startups, have been “doing DevOps” without calling it DevOps for quite a while.
DevOps Tools
The Agile Manifesto emphasizes individuals and interactions over processes and tools, but DevOps, while emphasizing collaboration and integration also looks to automation tools that can leverage an increasingly programmable and dynamic infrastructure from a lifecycle perspective. Version control and automating code deployments are two of the most impactful common tools but there are many more, including configuration management, ticketing systems, monitoring and provisioning.
Why do DevOps
The benefits of a DevOps approach are many, including:
- Improved deploy frequency which can lead to faster time to market
- Lower failure rate
- Shortened lead time
- Faster mean time to recovery
DevOps is not a set of rules, or templated workflow that everyone can adopt to achieve “DevOps”. DevOps is an ethos, that bridges Dev and Ops. This grey area varies between organisations, and the products/services being worked on.
The biggest part of DevOps, is discovering what each organisations DevOps requirements are, and then implementing a strategy that will set out to achieve the objectives set out.