What is DevOps
A topic that has come up in many discussions for me recently is DevOps. Its an important thing to understand, but I’m finding a lot of people have some serious misconceptions about what it is and actually means. This is surprising due to how common a practice it has become. For instance, AWS re:Invent had an entire track dedicated to DevOps. Regardless, its interesting to hear peoples thoughts on the subject.
Here are some of the things I’ve heard over the last 2-3 weeks:
1. It’s simply a way of streamlining and automating the deployment process.
2. It’s defining standard processes that sys admins follow.
3. It’s a way to empower developers to do deploys on their own.
4. It’s a way to get rid of needing system admins - entirely. This person was serious too…
While I can certainly see where some of these ideas are spawned from, I don’t think any of them really touch on the heart of what DevOps is. So what is it?
###What is DevOps
According to a fantastic training video on Chef from Linux Academy, they summarize DevOps as the following:
- DevOps is about “How well people work together and how streamlined our Operations really are” - Adam Jacob.
- An ideal where applications and the infrastructure that they run on are not treated as separate entities to each other - and neither are the teams that manage them.
- DevOps is part of continuous delivery where all aspects of the deployment process are automated.
- DevOps is infrastructure as code.
This is pretty susinct to me, but I think there is still more too it. This is why I really like the “What is DevOps” post made on The Agile Admin site.
The Agile Admin post, is great because it makes a coralary to agile development, in which they feel DevOps is built on top of a set of core values, principles, methods, practices and tools. And, much like agile methodology, if you lack one or more of these components, you’re really keeping your team from reaching its full potential.
Thats where I think you’ll find the real definition. At its core, DevOps its about harmony and efficiency. In that, its the realization that your product team needs to be comprised of people across multiple disciplines - which includes operations. This is necessary to allow your teams to achieve faster, more frequent and more stable releases. Its expanding the agile approach beyond the just the Dev team and, more arguably, realizing that “Dev team” has a much broader definition and makeup than we used to think it did.
What are your thoughts? As always, feel free to comment below.