19

What is the difference between Development Operations and Software Configuration Management?

For me it seems to be the same as long as both DevOps and Software Configuration Management are focused on:

  1. Establishing development infrastructure - being in charge of version control, build management, deployment management, dependencies management, continuous integration and delivery, etc.
  2. Using best practices for organizing developers environment.
  3. Quality Assurance of development processes - gathering metrics of development effectiveness, working on eliminating bottlenecks of development process (running unit-tests, evaluating unit-tests coverage, running inspections, etc)
  4. Infrastructure management - target platforms and its specifics.
  5. Release management - making sure release has been delivered to customer/client in time.

Maybe I'm missing something? This link shows that usage of term 'Software Configuration Management' prevails. But still, what word combination would you rather use to describe listed range of activities: Development Operations or Software Configuration Management?

yannis
  • 39,547
  • 40
  • 183
  • 216
altern
  • 757
  • 2
  • 7
  • 17

6 Answers6

21

The terms describe very similar concepts and responsibilities, and in general they are somewhat synonymous. The term "DevOps" is a relatively new one, popularized by the Devopsdays Ghent 2009 conference and subsequent Devopsdays events. It's best described in this diagram:

enter image description here

On the other hand, Software Configuration Management is a far more established term within the profession, and derives from the non software specific term Configuration Management. Software Configuration Management is often referenced in a software engineering context, a simple definition is given by Roger Pressman in "Software Engineering: A Practitioner's Approach":

is a set of activities designed to control change by identifying the work products that are likely to change, establishing relationships among them, defining mechanisms for managing different versions of these work products, controlling the changes imposed, and auditing and reporting on the changes made.

Although all the terms you reference are vague, DevOps seems to be just a less formal way of describing more or less the same set of principles as Configuration Management, or Software Configuration Management if seen from a software developer's perspective, especially prioritizing tightly coupled teams:

DevOps is a response to the growing awareness that there is a disconnect between what is traditionally considered development activity and what is traditionally considered operations activity. This disconnect often manifests itself as conflict and inefficiency.

In the same article, the similarities with SCM are noted:

Adding to the Wall of Confusion is the all too common mismatch in development and operations tooling. Take a look at the popular tools that developers request and use on a daily basis. Then take a look at the popular tools that systems administrators request and use on a daily basis. With a few notable exceptions, like bug trackers and maybe SCM, it's doubtful you'll see much interest in using each others tools or significant integration between them. Even if there is some overlap in types of tools, often the implementations will be different in each group.

As for the usage of the terms, your comparison doesn't really makes sense:

  1. SCM is a subset of CM, not a competitive term,
  2. DevOps is a fairly new term, no point in comparing against established terms,
  3. DevOps derives from Developer Operations (obviously) but is rarely expanded as such.
yannis
  • 39,547
  • 40
  • 183
  • 216
  • Do you mean SCM as **Source Code Management** or **Software Configuration Management** is a subset of CM? – altern Jan 19 '12 at 12:31
  • @zaphod_beeblebrox: that image is taken from wikipedia article: http://en.wikipedia.org/wiki/DevOps :) – altern Jan 19 '12 at 12:32
  • @altern Paragraph under the pretty picture: "On the other hand, Software Configuration Management is a far more established term within the profession, and derives from the non software specific term Configuration Management." :P Also the picture is taken from the blog I've linked to. If the author took it from Wikipedia, I wouldn't know. – yannis Jan 19 '12 at 12:33
  • @zaphod_beeblebrox: I should probably change the title of my question then – altern Jan 19 '12 at 12:35
  • @altern What do you mean? Software Configuration Management is not just in the title. Also what the heck is "Source Code Management". Do you mean revision control? If yes, revision control is an aspect of Software Configuration Management, so the answer stands as is. But comparing revision control to devops is weird to say the least. – yannis Jan 19 '12 at 12:37
  • @zaphod_beeblebrox: I meant I should probably change title of the question. It had 'Configuration Management' instead of 'Software Configuration Management'. I didn't notice paragraph under the pretty picture and, therefore, thought your SCM abbreviation means Source Code Management. You wrote that it's a subset and, actually, *it is* a subset of Software Configuration Management :) Anyway, never mind. Your answer is actually great! – altern Jan 19 '12 at 13:13
  • Link http://configuration%20management/ leads to nowhere %) – altern Jan 19 '12 at 13:16
  • @altern Thanks, it leads somewhere now, but I'm guessing you already been there... – yannis Jan 19 '12 at 13:19
7

Personally being a Sr. Software Configuration Manager for many years (10+) I hear the terms mismatched in a variety of real life situations. It is not uncommon for non technical personnel due to the relative nature of the positions. They both have specific roles, needs and requirements that are similar but yet can be clearly divided in my opinion.

I believe the best way to describe the division of these roles is to focus on their relativity to interaction. Meaning this, Software Configuration Management focuses on the internal systems and environments, along with integration, deployment, release and management of source code. Where as Developer Operations (DevOps) focuses more on the operational aspect of externally faced application architecture, while maintaining a clear understanding of the code as it was intended for use and the practice of its environment. If the performance of a machine is showing signs of degradation, communication between multiple applications is faulty, business to business (BtB) communication and/or architecture limitations in relation to a production environment, then you would look to the Developer Operations for their diagnosis and solution.

Typically, in my experience, the Software Configuration Manager can do these things as well, but this takes away from their core focus of tracking, managing, and deployment of environment configurations and software revisions. Managing the software that allows the separation of duties, bug and defect tracking, project tracking, and the software development lifecycle and worflow. These tasks are not the core focus of Developer Operations and therefore less imperative, but still can be done.

I have seen many instances of the confusion of each, and in each there is some limited crossover. However, it is most important to think of the differences between the responsibilities of each of the independent positions in relation to their primary focus. Primarily when dealing with internally utilized systems and hardware to manage the configuration of environments and release of product, you would seek out a Software Configuration Manager. On the other hand, when dealing with system performance, monitoring, research and diagnosis of systems used by your customers, you should look to the Developer Operations or DevOps.

Now, this is not a meant as a rant, nor as a definitive answer, but rather a personal identification of the differences of each of the positions. I would like to know if I am well off base, or if things are made clearer by this answer.

Phyro
  • 71
  • 1
  • 1
  • 2
    Honestly, when it's all boiled down, DevOps is about making software developers fully aware of and accountable for Software Configuration Management. When you do that, you get an entirely different approach to SCM than has been traditionally done -- one more focused on continuous integration and continuous delivery, and one with (typically) fewer human beings in the mix. DevOps can be (and often is) viewed as Lean applied to SCM, just as Agile can be viewed as Lean applied to software development. – Calphool Mar 03 '15 at 19:08
5

You'd be hard-pushed to find a solid definition for DevOps. It's more of an idea than a job to be done. And it's too new an idea for everyone to agree on exactly what it means. Nonetheless, here's my take.

DevOps is really just a new term for configuration management, but it was chosen to show that the role is not a one-person role, it's a collaboration between the development team and the operations team.

Historically, configuration management would be done solely by the development team and then handed off to operations who would view it all with deep suspicion. Which is fair enough, to be honest. They're responsible for it. They're the first to get called at 4am when it goes wrong. They really should have some involvement in its development.

pdr
  • 53,387
  • 14
  • 137
  • 224
1

This is the simple clarification to the question: DevOps is a term used to describe the coordination or relationship between Development(developing the program codes in development environment) and Operations(ensuring maximum up-time of production environment).

Software Configuration Management is a means of achieving this coordination. SCM involved tools and techniques for managing the automation of the process of moving from development to production(operations)

To summarize, SCM connects Dev and Ops.

Connection between Development and Operations is SCM

0

In simple words,

DevOps :

DevOps aims to combine Software Application Development and Operations(IT) to enhance the software delivery process. This is not limited to tracking changes in the software code or configurations. DevOps feature includes effective collaboration among teams, continuous integration and continuous deployment, speedy product delivery, automated deployment and testing.

Software Configuration Management (SCM):

SCM is predominantly focussed on version control of code and tracks changes in configuration so that there is no difference of specifications such as operating system, version, additional plug-ins in both Development and Operations side. This helps in efficient troubleshooting, debugging and deployment. SCM is a part of an overall big picture- DevOps.

-1

I see DEVOPs is at the operational execution end - deployment automation scripts, environment buildouts, that sort of thing. SCM on the other hand, is about the products integrity and the effective management and traceability of changes to the products. I have always viewed ALM as being a part of SCM - after all, how on earth can you manage changes to a a product if you have no idea of the drivers for the change or who made them? Deployment frameworks could fall either side - and which side will invariably depend on the regulatory needs of the organization you work for - after all - do you want a developer to be able to do a quick hack that means your dialysis machine only works properly 99.99% of the time, or do you need that situation to allow you to hack your website code because your developers have hardcoded IP addresses?

Deer Hunter
  • 917
  • 1
  • 11
  • 15
Jack
  • 11
  • 4
    this looks more like a rant than an answer to the question asked – gnat Jun 23 '14 at 06:45
  • Deer Hunter, A Rant, yeah sure, it is, but relevant? 100%. Trust me on this - until the industry grows up and stops the gimmicks, the death marches will not only continue, they will get worse. This is a promise. – Jack Jun 23 '14 at 08:57
  • Rants are fine, but stackexchange isn't the place for them. – matt freake Mar 25 '15 at 17:24