Unterschied zwischen DevOps und Software Configuration Management


15

Was ist der Unterschied zwischen Development Operations und Software Configuration Management?

Für mich scheint es dasselbe zu sein, solange sich sowohl DevOps als auch Software Configuration Management auf Folgendes konzentrieren:

  1. Aufbau der Entwicklungsinfrastruktur - Verantwortlich für die Versionskontrolle , das Build-Management, das Deployment-Management, das Abhängigkeitsmanagement, die kontinuierliche Integration und Bereitstellung usw.
  2. Verwenden von Best Practices zum Organisieren der Entwicklerumgebung .
  3. Qualitätssicherung von Entwicklungsprozessen - Erfassung von Kennzahlen zur Entwicklungseffektivität, Beseitigung von Engpässen im Entwicklungsprozess (Durchführung von Komponententests, Bewertung der Abdeckung von Komponententests, Durchführung von Inspektionen usw.)
  4. Infrastrukturmanagement - Zielplattformen und ihre Besonderheiten.
  5. Release-Management - Sicherstellen, dass das Release rechtzeitig an den Kunden / Kunden geliefert wurde.

Vielleicht fehlt mir etwas? Dieser Link zeigt, dass die Verwendung des Begriffs "Software Configuration Management" Vorrang hat. Mit welcher Wortkombination würden Sie die aufgeführten Aktivitäten jedoch lieber beschreiben: Development Operations oder Software Configuration Management ?

Antworten:


18

Die Begriffe beschreiben sehr ähnliche Konzepte und Verantwortlichkeiten und sind im Allgemeinen ein Synonym. Der Begriff "DevOps" ist ein relativ neuer Begriff, der auf der Devopsdays Ghent 2009-Konferenz und den nachfolgenden Devopsdays-Veranstaltungen populär wurde . Es ist am besten in diesem Diagramm beschrieben :

Bildbeschreibung hier eingeben

Auf der anderen Seite ist Software Configuration Management ein weit verbreiteter Begriff innerhalb des Berufs und leitet sich von dem nicht softwarespezifischen Begriff Configuration Management ab . Auf Software Configuration Management wird häufig im Kontext des Software-Engineerings verwiesen. Eine einfache Definition gibt Roger Pressman in "Software Engineering: A Practitioner's Approach" :

Es handelt sich um eine Reihe von Aktivitäten, die darauf abzielen, Änderungen zu kontrollieren, indem die voraussichtlich zu ändernden Arbeitsprodukte identifiziert, Beziehungen zwischen ihnen hergestellt, Mechanismen für die Verwaltung verschiedener Versionen dieser Arbeitsprodukte definiert, die auferlegten Änderungen kontrolliert sowie die vorgenommenen Änderungen überprüft und darüber berichtet werden.

Obwohl alle Begriffe, auf die Sie verweisen, vage sind, scheint DevOps nur eine weniger formale Art zu sein, mehr oder weniger dieselben Prinzipien wie Configuration Management oder Software Configuration Management zu beschreiben, wenn man sie aus der Perspektive eines Softwareentwicklers betrachtet. Dies gilt insbesondere für die Priorisierung eng verbundener Teams :

DevOps ist eine Reaktion auf das wachsende Bewusstsein, dass es eine Trennung zwischen dem gibt, was traditionell als Entwicklungsaktivität und dem, was traditionell als Betriebsaktivität angesehen wird. Diese Trennung äußert sich häufig in Konflikten und Ineffizienz.

In demselben Artikel werden die Ähnlichkeiten mit SCM erwähnt:

Das Hinzufügen zur Wand der Verwirrung ist das allzu häufige Missverhältnis bei Entwicklungs- und Betriebswerkzeugen. Werfen Sie einen Blick auf die beliebten Tools, die Entwickler täglich anfordern und verwenden. Dann werfen Sie einen Blick auf die beliebten Tools, die Systemadministratoren täglich anfordern und verwenden. Mit ein paar bemerkenswerten Ausnahmen, wie Bug-Tracker und vielleicht SCM , ist es zweifelhaft, dass Sie großes Interesse daran haben, die Tools der jeweils anderen oder eine signifikante Integration zwischen ihnen zu verwenden. Selbst wenn sich die Tooltypen überschneiden, unterscheiden sich die Implementierungen häufig in jeder Gruppe.

In Bezug auf die Verwendung der Begriffe ist Ihr Vergleich nicht wirklich sinnvoll:

  1. SCM ist eine Teilmenge von CM, kein Konkurrenzbegriff,
  2. DevOps ist ein ziemlich neuer Begriff, kein Grund, ihn mit etablierten Begriffen zu vergleichen.
  3. DevOps stammt (offensichtlich) aus Developer Operations, wird jedoch selten als solches erweitert.

Meinen Sie damit, dass SCM als Quellcodeverwaltung oder Softwarekonfigurationsverwaltung eine Teilmenge von CM ist?
Altern

@ Zaphod_beeblebrox: Dieses Bild stammt aus Wikipedia-Artikel: en.wikipedia.org/wiki/DevOps :)
altern

@altern Absatz unter dem schönen Bild: "Andererseits ist Software Configuration Management ein weitaus etablierterer Begriff innerhalb des Berufs und leitet sich vom nicht softwarespezifischen Begriff Configuration Management ab." : P Auch das Bild stammt aus dem Blog, mit dem ich verlinkt habe. Wenn der Autor es aus Wikipedia nehmen würde, würde ich es nicht wissen.
Yannis

@zaphod_beeblebrox: Ich sollte dann wahrscheinlich den Titel meiner Frage ändern
alternativ

@altern Was meinst du? Software Configuration Management ist nicht nur im Titel. Was zum Teufel ist auch "Source Code Management". Meinen Sie Revisionskontrolle? Wenn ja, ist die Versionskontrolle ein Aspekt des Softwarekonfigurationsmanagements. Die Antwort lautet also unverändert. Aber Revisionskontrolle mit Devops zu vergleichen, ist gelinde gesagt komisch.
Yannis

6

Als langjähriger Senior Software Configuration Manager (10+) höre ich, dass die Begriffe in einer Vielzahl von Situationen des realen Lebens nicht übereinstimmen. Aufgrund der relativen Natur der Positionen ist dies nicht ungewöhnlich für nichttechnisches Personal. Sie haben beide spezifische Rollen, Bedürfnisse und Anforderungen, die ähnlich sind, sich aber meiner Meinung nach klar unterscheiden lassen.

Ich glaube, der beste Weg, die Aufteilung dieser Rollen zu beschreiben, besteht darin, sich auf ihre Relativität zur Interaktion zu konzentrieren. Aus diesem Grund konzentriert sich das Software Configuration Management auf die internen Systeme und Umgebungen sowie auf die Integration, Bereitstellung, Freigabe und Verwaltung von Quellcode. Als Entwickler konzentriert sich DevOps mehr auf den betrieblichen Aspekt der externen Anwendungsarchitektur, wobei ein klares Verständnis des Codes, wie er verwendet werden soll, und der Praxis seiner Umgebung erhalten bleibt. Wenn die Leistung eines Computers Anzeichen einer Verschlechterung aufweist, die Kommunikation zwischen mehreren Anwendungen fehlerhaft ist, die Business-to-Business-Kommunikation (BtB) und / oder Architekturbeschränkungen in Bezug auf eine Produktionsumgebung bestehen, wenden Sie sich an den Developer Operations Lösung.

Nach meiner Erfahrung kann der Software Configuration Manager in der Regel auch diese Aufgaben ausführen. Dabei geht es jedoch nicht mehr um das Verfolgen, Verwalten und Bereitstellen von Umgebungskonfigurationen und Softwarerevisionen. Verwaltung der Software, die die Aufgabentrennung, Fehler- und Fehlerverfolgung, Projektverfolgung sowie den Lebenszyklus und Workflow der Softwareentwicklung ermöglicht. Diese Aufgaben stehen nicht im Mittelpunkt von Developer Operations und sind daher weniger wichtig, können aber dennoch ausgeführt werden.

Ich habe viele Fälle der Verwirrung von jedem gesehen, und in jedem gibt es einige begrenzte Überschneidungen. Am wichtigsten ist es jedoch, die Unterschiede zwischen den Zuständigkeiten der einzelnen unabhängigen Positionen in Bezug auf ihren primären Schwerpunkt zu berücksichtigen. In erster Linie beim Umgang mit intern genutzten Systemen und Hardware zur Verwaltung der Konfiguration von Umgebungen und der Produktfreigabe sollten Sie einen Software Configuration Manager aufsuchen. Wenn Sie sich andererseits mit der Systemleistung, Überwachung, Untersuchung und Diagnose der von Ihren Kunden verwendeten Systeme befassen, sollten Sie sich an Developer Operations oder DevOps wenden.

Nun, dies ist nicht als Schimpfen oder als endgültige Antwort gemeint, sondern vielmehr als persönliche Identifizierung der Unterschiede zwischen den einzelnen Positionen. Ich würde gerne wissen, ob es mir gut geht oder ob diese Antwort die Dinge klarer macht.


2
Um ehrlich zu sein, bei DevOps geht es darum, Softwareentwicklern das Software-Konfigurationsmanagement bewusst und verantwortlich zu machen. Wenn Sie das tun, erhalten Sie einen völlig anderen Ansatz für SCM als bisher - einen, der sich mehr auf kontinuierliche Integration und kontinuierliche Bereitstellung konzentriert, und einen, der (normalerweise) weniger Menschen in der Mischung hat. DevOps kann (und wird oft) als Lean für SCM angesehen werden, genauso wie Agile als Lean für die Softwareentwicklung.
Calphool

4

Es würde Ihnen schwer fallen, eine solide Definition für DevOps zu finden. Es ist eher eine Idee als eine Aufgabe. Und es ist zu neu, als dass sich alle darüber einigen könnten, was es genau bedeutet. Trotzdem, hier ist meine Meinung.

DevOps ist eigentlich nur ein neuer Begriff für das Konfigurationsmanagement, aber er wurde gewählt, um zu zeigen, dass es sich bei der Rolle nicht um eine Einpersonenrolle handelt, sondern um eine Zusammenarbeit zwischen dem Entwicklungsteam und dem Betriebsteam.

In der Vergangenheit wurde das Konfigurationsmanagement ausschließlich vom Entwicklungsteam durchgeführt und dann an den Betrieb übergeben, der alles mit tiefem Misstrauen betrachtete. Das ist fair genug, um ehrlich zu sein. Sie sind dafür verantwortlich. Sie sind die ersten, die um 4 Uhr morgens angerufen werden, wenn es schief geht. Sie sollten sich wirklich an der Entwicklung beteiligen.


1

Dies ist die einfache Klärung der Frage: DevOps ist ein Begriff, der zur Beschreibung der Koordination oder Beziehung zwischen der Entwicklung (Entwicklung der Programmcodes in der Entwicklungsumgebung) und dem Betrieb (Gewährleistung einer maximalen Verfügbarkeit der Produktionsumgebung) verwendet wird.

Software Configuration Management ist ein Mittel, um diese Koordination zu erreichen. SCM umfasste Tools und Techniken für das Management der Automatisierung des Prozesses des Übergangs von der Entwicklung zur Produktion (Betrieb).

Zusammenfassend verbindet SCM Dev und Ops.

Die Verbindung zwischen Entwicklung und Betrieb ist SCM


-1

Ich sehe, dass DEVOPs am Ende der operativen Ausführung ist - Deployment-Automatisierungsskripte, Umgebungs-Buildouts, so etwas. SCM hingegen befasst sich mit der Produktintegrität und der effektiven Verwaltung und Nachvollziehbarkeit von Änderungen an den Produkten. Ich habe ALM immer als Teil von SCM angesehen. Wie um alles in der Welt können Sie Änderungen an einem Produkt verwalten, wenn Sie keine Ahnung haben, welche Treiber für die Änderung verantwortlich sind oder wer sie vorgenommen hat? Bereitstellungs-Frameworks können auf beiden Seiten fallen - und welche Seite immer von den regulatorischen Anforderungen der Organisation abhängt, für die Sie arbeiten. Schließlich möchten Sie, dass ein Entwickler in der Lage ist, einen schnellen Hack auszuführen, der bedeutet, dass Ihr Dialysegerät nur zu 99,99% ordnungsgemäß funktioniert. der Zeit, oder brauchen Sie diese Situation, um Ihren Website-Code zu hacken, weil Ihre Entwickler fest codierte IP-Adressen haben?


4
Das sieht eher wie eine Tirade als eine Antwort auf die Frage gestellt
gnat

Deer Hunter, A Rant, ja sicher, es ist aber relevant? 100%. Vertrauen Sie mir in diesem Punkt - bis die Branche erwachsen wird und die Spielereien zum Erliegen bringt, werden die Todesmärsche nicht nur fortgesetzt, sondern auch noch schlimmer. Das ist ein Versprechen.
Jack

Rants sind in Ordnung, aber Stackexchange ist nicht der richtige Ort für sie.
Matt Freake
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.