What is DevOps?
DevOps is difficult to explain as there is no exact definition. Here’s my attempt to give a quick explanation and an overview of the pillars of DevOps.
DevOps is a cultural movement that aims to improve the collaboration between development and operations, resulting in getting changes faster and more frequently into production, while running more sustainably in production.
The pillars of DevOps are first and foremost cultural and organizational aspects. Applying proven principles and practices and using suitable technology and tools complement DevOps with practical factors.
Culture & organization
“You build it, you run it” says Werner Vogels, CTO of Amazon, the same company whose CEO Jeff Bezos coined the term two-pizza team. This is opposite to traditional siloed organizations where people with the same function (developers, QA, DBAs, infosec, …) are put into separate functional teams. Instead, members of cross-functional, autonomous teams strive for the same business goals. At Spotify, those teams are called squads. Experts still meet in virtual teams named chapters and guilds but the strong lines in their matrix organization are along the team:
Cross-functional teams can still be dysfunctional. They need the right culture: mutual trust and a culture of constant learning and constructive criticism have to be established. This is not an easy task.
Principles & practices
The Phoenix Project book describes three underpinning principles of DevOps, also known as the three ways:
The first principle — flow — focuses on global optimizations of business value in IT instead of doing local optimizations that might have very little value. Value flows from left to right, starting with an idea, requirement, experiment or improvement ending up in the hands of the customer.
The second principle — feedback — emphasizes the importance of feedback loops. Feedback flows from right to left and those feedbacks are crucial in order to do the right thing.
The third principle — continual learning — is about culture. An organization with a DevOps culture needs to be able to experiment and learn from those experiments even when they fail.
A couple of proven practices help you implement DevOps. The most important practice is continuous delivery (CD): “Continuous Delivery is the ability to get changes of all types — including new features, configuration changes, bug fixes and experiments — into production, or into the hands of users, safely and quickly in a sustainable way.”, says Jez Humble. So dive into CD and setup your first deployment pipelines.
Another practice is to establish monitoring systems in production at all levels starting at the OS level all the way up to the application, including appropriate telemetry. The state of the deployment pipeline is also important. Customized dashboards give the team a quick visual feedback.
“Automate everything and make those parts that can’t be automated a self-service”, says Gregor Hohpe. An excellent advice to be followed for automating your infrastructure. It is complemented by practices such as Config as Code, Infrastructure as Code, and Immutable Infrastructure.
Technology & tools
Technology is the least important aspect of DevOps, yet it can help you implement a DevOps culture and deliver value.
The most important item in your toolbox is the cloud. Use as much as possible from the cloud. Your main job is to deliver business value and not to build your own infrastructure, tools or frameworks. As such, Docker is valuable as well because it helps you to script and deliver your application in a standardized way.
You will need a decent version control to manage not only source code but also application and infrastructure configuration. Next, you need a continuous integration (CI) server. It doesn’t matter which CI product you’re choosing and every cross-functional team can have a different one (or even multiple) but in order to do CD you need a CI server as a foundation.
You will also need monitoring tools and information radiators that give you feedback of the status of your applications and environments.
I hope I could shed some light on what DevOps is. But it’s way more. If you’re interested in those topics or if you want to know more about DevOps then I highly recommend the reading list below. As DevOps is also a movement check out the various gatherings like DevOpsDays or the more business oriented DevOps Enterprise Summit, too.
- Kim G, Behr K, Spafford G. The Phoenix Project, A Novel About IT, DevOps, and Helping Your Business Win. IT Revolution; 2014.
- Kim G, Debois P, Willis J et al. The Devops Handbook, How to Create World-class Agility, Reliability, and Security in Technology Organizations. 2016.
- Humble J, Farley D. Continuous Delivery, Reliable Software Releases Through Build, Test, and Deployment Automation. Addison-Wesley Professional; 2010.
- Gene Kim. Top 11 Things You Need to Know about DevOps. http://info.leankit.com/thank-you-11-things-about-DevOps
- 2016 State of DevOps Report. https://puppet.com/resources/whitepaper/2016-state-of-devops-report
- Rob England. Define DevOps: What is DevOps? http://www.itskeptic.org/content/define-devops
- Jez Humble. There is No Such Thing as a “Devops Team”. https://www.thoughtworks.com/de/insights/blog/there-no-such-thing-devops-team
- Henrik Kniberg & Anders Ivarsson. Scaling Agile @ Spotify. https://ucvox.files.wordpress.com/2012/11/113617905-scaling-agile-spotify-11.pdf