What is DevOps?
“DevOps is a cultural and professional movement” –Adam Jacob
[movement (n): a group of people working together to advance their ideas.]
So, who are these people and what’s the big idea?
The people are system administrators, developers, product managers, QA technicians, security analysts, network engineers, and anyone else involved in the business of developing software.
The big idea is to increase the value your product or service delivers, more quickly with less effort.
(Having a product or service that is designed and built well isn’t inherently valuable. The value comes when your customer is able to use your product or service to solve a problem. DevOps is all about delivering value quickly and effortlessly.)
DevOps practices and technologies are evolving, but here are some of the core concepts paraphrased–be sure to read the links in the footnotes for the full explanations:
The Three Ways
- Systems Thinking
- Learning how everything is interconnected, from concept to customer
- Amplifying Feedback Loops
- Cutting the time between action and reaction, failure and success
- Culture of Continuous Experimentation and Learning
- Recognizing failure is important data about how and where to improve
CAMS
- Culture
- It’s about how people relate and work, not something you can buy
- Automation
- Faster, less error-prone processes help amplify feedback loops
- Measurement
- You can’t get where you want to be until you know where you are
- Sharing
- Effective teamwork ignores organizational boundaries
ICE
- Inclusivity
- Everyone is responsible for (and benefits from) these practices
- Complex Systems
- Because simple systems are simple
- Empathy
- Real collaboration requires real understanding of another’s point of view
That’s the theory from a very high level; the following Q&A provides some broad explanations of related concepts. These are actual questions I was asked in a recent discussion of DevOps.
Q: What specific skills or experience do I need before I can put “DevOps” on my resume?
A: It depends. At this point in time when recruiters and/or hiring managers list DevOps in a job posting they are almost always looking for a “DevOps Engineer” (i.e. a sysadmin who knows just enough coding to be dangerous), or a “full-stack developer” (i.e. a developer who knows just enough about system management to be dangerous). The reality is that (as of today) there is no DevOps certification, organization or even manifesto, so anyone who pretends to authority on what is and isn’t DevOps is overstating their case at best, a charlatan at worst.
Q: What is source control?
A: Source control is a repository for files that make up a modern software application during development. It maintains a historical record of changes so it’s easy to review (or rollback to) changes made to an application’s source files. The most popular source control technology today is Git, and GitHub is one of many online services used to manage Git repositories.
Q: What is Jenkins?
A: Jenkins is to task engines or “build servers” what Kleenex™ is to facial tissue. It’s currently the most widely used software product for automating various functions of software build and deployment. For example, a system might be configured such that any code change pushed to source control triggers a job in Jenkins to build, test and deploy that code.
Q: What is configuration management (e.g. Salt, Ansible, Puppet, Chef)?
A: Configuration management is a means of scripting server configurations so it’s easier to track, deploy or make configuration changes to large groups of systems.
Q: What are containers?
A: In the same way that server virtualization allows you to have many isolated “virtual machines” on a single physical machine, container technology allows you to have many isolated application environments on a single operating system. Containers have been around in Unix/Linux for a long time, they just boomed in popularity when Docker came along and made them easy to use. The next version of Microsoft Windows Server (2016) will introduce Windows containers.
Q: What are microservices?
A: Microservices are small, independent components of a software application that are built, tested and operated in isolation from the core product. Using microservices enables development to be faster and more nimble than possible when working with a large, monolithic application.
Q: What is Continuous Integration/Delivery/Deployment?
A: Continuous Integration is the practice of continuously integrating (and testing) new code with your existing source code. Continuous Delivery is the practice of automating as much of the build/test/release process as possible while still requiring a manual push to production. Continuous Deployment is the practice of fully automating build/test/release all the way into production.
Q: Are there any conferences or meetups I can attend to learn more?
A: Yes! The original DevOps conference is DevOpsDays and there are many of these events around the world annually. A popular conference with large enterprises is the DevOps Enterpise Summit. Various DevOps-related meetups (#CoffeeOps on Twitter) are springing up around the country. Check the CoffeeOps.org website for details, or search for DevOps at Meetup.com.
Q: [Do I need to understand everything above | Is this all I need] to be or do DevOps?
A: Absolutely not, on both counts. You can successfully implement a DevOps way of thinking/working by incorporating all or just some of the above, and there are many other tools and practices around delivering value more efficiently. Naturally there are extensive resources available (a few linked in the footnotes) to do a much deeper dive on all these subjects.