Terminology – Difference Between DevOps and Software Configuration Management

organizationscmterminology

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?

Best Answer

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.
Related Topic