3

I've seen this word thrown around a lot so I looked it up. I've read through countless explanations but I'm still not sure what exactly DevOps is.

From what I gathered, somehow the use of automation (e.g. automated tests) is involved or somehow required and it's somehow related to the software development lifecycle and is somehow actually a 'culture', but frankly it's unlear exactly how it's a 'culture' and what makes it special.

I'm guessing simply using automation doesn't automatically classify something as 'DevOps', there's clearly something more to it or people would just be saying 'automation'.

(I was originally going to ask at SO but this has been asked twice before other there, both questions were closed - one as 'not a question' and one as 'off-topic'. None of the provided answers were very insightful.)

So what exactly is DevOps? (And perhaps how does it differ to 'not DevOps'?)

So far the clearest definition I've been able to find is

DevOps is a set of practices intended to reduce the time between committing a change to a system and the change being placed into normal production, while ensuring high quality

But that seems incredibly vague.

Pharap
  • 551
  • 3
  • 13
  • 2
    Closing this as "opinion based" is indirect way of saying there is no "exact definition" of DevOps. As you have found out from your research, there are many ways DevOps is understood and implemented. And arguing about which way is "right" is far into "personal opinions" territory. – Euphoric Jun 20 '18 at 07:53
  • 1
    @Euphoric I can't see what the close's chosen reason was, just that the vote exists. If there is no exact definition and it's open to interpretation, then surely that in itself is an answer? "There is no one true definition, people make it up as they go along" would be a valid answer. – Pharap Jun 20 '18 at 07:55
  • 1
    I think even "there is no exact definition" is an opinion. There might be people who would argue there is good, exact definition. And they do know that definition. – Euphoric Jun 20 '18 at 07:57
  • Not exactly the same question, but the answer may fit either: [Difference between DevOps and Software Configuration Management](https://softwareengineering.stackexchange.com/questions/130850/difference-between-devops-and-software-configuration-management) – Doc Brown Jun 20 '18 at 08:21
  • 2
    Another similar question, where two answers (David Arno's and mine) go into a definition of DevOps: [Is there a “DevTest” or “DevQA” equivalent to “DevOps”?](https://softwareengineering.stackexchange.com/q/372053/4) – Thomas Owens Jun 20 '18 at 08:38

2 Answers2

2

A short (and not exhaustive) explanation would be that DevOps is the improved and more standardized way of doing operations that are related to development, but are not development.

This includes things like (automated or semi-automated) testing, deployment to various environments (test, QA, production), infrastructure handling and all sorts of things that some years back would be done in a mostly custom way, depending on where you work and with whom.

So instead of having a programmer write code, run tests (if there were any), move the compiled package to a server by hand, configuring things by hand and so forth, you have a clear process and pipeline. The programmer will concentrate on writing code, and automation will handle the boring things that don't require human interaction.

Kayaman
  • 1,930
  • 12
  • 16
1

I think the missing puzzle piece is what the "Ops" part of DevOps means.

It means "Operations". That is, running the released software in production. It involves tasks like:

  • Choosing and configuring the hardware, including networking.
  • Deploying the software
  • Configuring the software
  • Monitoring the hardware and software while it's running and reacting to any problems such as errors in the logs or the hardware getting overloaded.
  • Investigating user complaints to find out whether the reported problem is due to user error, can be fixed by adjusting the hardware or configuration, or is bug in the code

Now traditionally, this "Operations" job is completely separate from developing the software. It's done by sysadmins, not by developers - by different people in a different department, who may know little about development and communicate with the developers rarely, usually via documents such as installation guides, via trouble ticket systems, or the occasional urgent phonecall.

The whole point of DevOps is to remove this separation between development and operations, and have a single team be responsible for both. The goal is to enable faster release cycles and faster reaction to problems in production, ideally to identify and fix such problems before they affect end users at all, or even avoid introducing them in the first place by having developers better understand the issues that arise when operating the software in production.

Michael Borgwardt
  • 51,037
  • 13
  • 124
  • 176