What is DevOps

This is a question I have been asked and seen others ask each other. It always leads to an interesting discuss, because it is not a rigorously defined term. I posted recently on linkedin in response to a question. Then I realized I should gather some thoughts on the topic here.

DevOps is primarily about bringing Operations and Development closer to accelerate delivery and deployment. This is achieved by automating what can be automated; by coding configuration, even for infrastructure, delivery and deployment processes; by using a common set of tools in Ops and Dev; by aiming for immutability, idempotency, repeatability, and replicability.

The delivery cycle does not have to be shorter. It is nice if it is. It can be a goal. But it is not an absolute must. Whereas Ops/Dev closeness is absolutely essential to devops.

Although some say that DevOps goal should be One Team that encompasses both operations and engineering, I have never seen actually work. Mostly because have every member of One Team being good at all of what DevOps entails, not to mention Dev and Ops, is not only unrealistic, it is counter-productive. Inevitably, some specialization and focus occurs for each member of the team. Most places that have seen end up with a DevOps team :)

There's nothing wrong with Operations and Development being two teams (eg). However they should share the same tools and procedures, just on different scales; and they have slightly different priorities. They should define their stacks identically as much as feasible. It may be a goal for there just to be one team, but it is not essential. Ops/Dev closeness is absolutely essential to devops.