Was könnte eine gültige Definition von DevOps sein, um es einem Neuling vorzustellen?

16

Ich habe viele SCM-bezogene Präsentationen erstellt und jetzt versuche ich, auf einen DevOps-Nachfolger zu "upgraden".

Was ich in meinen Präsentationen immer versuche, ist, eine Einführungsfolie zu erstellen, die irgendwie die Botschaft enthält, die ich übermitteln möchte (und die ich dann im Rest meiner Präsentation erläutere). Dabei versuche ich, meine eigene Frage zu beantworten: "Was wären 1 bis 3 Sätze, die ich verwenden möchte, wenn ich (nur!) 10 bis 20 Sekunden Zeit hätte, um sie jemandem zu erklären, der neu darin ist? * ".

Ich dachte, ich wüsste, was DevOps eigentlich bedeutet und worum es geht. Aber ich habe einige bizarre Verwendungen / Kontexte von DevOps gesehen (sogar auf DevOps.SE ...). Ich frage mich, ob DevOps meiner Meinung nach völlig falsch ist.

Was ist also allgemein als die Definition von DevOps vereinbart?

Pierre.Vriens
quelle
Der Verlauf der Kommentare wurde in den Chat verschoben, um aufzuzeichnen, wie eine Frage verbessert werden kann.
Tensibai
1
Das Wichtigste, was ich aus Gesprächen mit vielen Menschen gelernt habe, ist, dass es keine vereinbarte Definition gibt.
Boykott SE für Monica Cellio
merci @XiongChiamiov ... das hört sich so an, als ob Sie eine oder mehrere andere Definitionen kennen ... Warum nicht versuchen, sie als zusätzliche Antwort zu posten?
Pierre.Vriens

Antworten:

11

DevOps auf den Punkt gebracht

Aus Wikipedia :

DevOps (a abgeschnitten Verbindung von „ Software DEV elopment “ und „ Informationstechnologie OP menarbeit S “) ist ein Begriff verwendet , um eine Reihe von Praktiken zu beziehen , die die Zusammenarbeit und Kommunikation beide betonen Software - Entwickler und Informationstechnologie (IT) Fachkräfte , während der Automatisierung Der Prozess der Softwarebereitstellung und der Infrastrukturänderungen.

Ziel ist es, eine Kultur und Umgebung zu schaffen, in der das Erstellen , Testen und Freigeben von Software schneller, häufiger und zuverlässiger erfolgen kann.

Aus der Übersicht :

Bildbeschreibung hier eingeben

Venn-Diagramm mit DevOps als Schnittstelle zwischen Entwicklung (Software-Engineering), Betrieb und Qualitätssicherung (QS)

Es gibt zwar kein einzelnes "Tool" für DevOps, aber eine Reihe von Tools, auch als DevOps-Toolchain bezeichnet :

Bildbeschreibung hier eingeben

Illustration, die Stadien in einer DevOps-Toolchain zeigt

Illustrationen von DevOps

Im Folgenden finden Sie einige Zitate aus einigen Fragen zu DevOps.SE , die alle einen Teil der obigen DevOps-Beschreibung zu erfüllen bzw. zu bestätigen scheinen:

DevOps ist KEINE Rolle

Im Folgenden finden Sie einige Zitate aus einigen Fragen zu DevOps.SE , die alle zu veranschaulichen scheinen, dass DevOps KEINE Rolle spielt:

Pierre.Vriens
quelle
10

Ich übe und berate DevOps seit fast fünf Jahren als Berater bei verschiedenen Kunden. Vor meiner derzeitigen Position war ich in den Bereichen Softwareentwicklung, Web-Betrieb und Systemadministration tätig. Meiner persönlichen Erfahrung nach gibt es DevOps in vielen Varianten.

Organisationsmuster

DevOps-Antimuster:

  • NoOps und NoDevs - nicht unbedingt DevOps im engeren Sinne. Diese Teams erstellen und betreiben jedoch Software, ohne dass eine Trennlinie zwischen Entwicklung und Betrieb besteht. Die Herausforderungen bei diesen Teams werden immer größer. Entwicklungsteams sind möglicherweise erfahrene Softwareentwickler, aber Anfänger und umgekehrt.

  • Die DevOps-Brücke - hier wird einem oder mehreren Teams die Verantwortung übertragen, die Arbeit von den Entwicklungsteams zu übernehmen und sie zu " produzieren ", um sie betriebsbereit zu machen. Die Herausforderung besteht darin, dass es zwei Übergaben gibt: Entwicklung → DevOps und DevOps → Betrieb.

  • Das DevOps-Team - Dies kann möglicherweise funktionieren, wenn das Team für die Erstellung von Tools verantwortlich ist, die das DevOps-fähige Betriebsmodell unterstützen. Es sollte jedoch wahrscheinlich als "Tools-Team" oder "Plattform-Team" bezeichnet werden.

DevOps Patterns:

  • Embedded DevOps - allgemein als Platform Engineering bezeichnet - ist in meinem Kopf jemand im Team, der verantwortlich ist, aber nicht für die Bereitstellung von Automatisierung, Tools und Infrastruktur für die Bereitstellung und Bereitstellung der Lösung verantwortlich ist, manchmal auch für den Betrieb der Software Letzteres ist eigentlich repräsentativ für DevOps.

  • Institutionalisierte DevOps - wo ein Projektteam gemeinsam für die Entwicklung und den Betrieb eines Softwarepakets verantwortlich ist, das gemeinsame Eigentümerschaft und positive Rückkopplungsschleifen aufbaut.

Praktiken Methoden Ausübungen

Die tatsächliche Praxis von DevOps baut auf mehreren anderen Praktiken auf, nämlich:

Jede der oben genannten Praktiken baut auf der anderen auf. Es ist jedoch möglich, dass keine Praktiken befolgt werden. Dies bedeutet, dass ein wichtiger Feedback-Zyklus fehlt, der möglicherweise auf eine "verpasste Gelegenheit" hindeutet. Das Hauptunterscheidungsmerkmal zwischen der Befolgung anderer Praktiken und DevOps ist der Betrieb von Software in der Produktion .

DevOps-Praktiken

Die drei Wege

In The Phoenix Project beschreiben Gene Kim und seine Co-Autoren die drei Möglichkeiten von DevOps :

Systemdenken

Systemdenken

Der Erste Weg betont die Leistung des gesamten Systems im Gegensatz zur Leistung eines bestimmten Arbeits- oder Abteilungssilos - dies kann eine so große Abteilung (z. B. Entwicklung oder IT-Betrieb) oder eine so kleine Abteilung (z. B. ein einzelner Mitarbeiter) sein (Entwickler, Systemadministrator).

Meiner Erfahrung nach erreicht es dieses Ziel, Entwickler dazu zu bringen, betriebliche Belange und nicht-funktionale Anforderungen zu berücksichtigen. Dies ist ein wesentlicher Bestandteil der kulturellen Aspekte von DevOps.

Verstärkung von Rückkopplungsschleifen

Verstärkung von Rückkopplungsschleifen

Bei der zweiten Methode geht es darum, die Rückkopplungsschleifen von rechts nach links zu erstellen. Das Ziel fast jeder Initiative zur Prozessverbesserung ist es, Feedback-Schleifen zu verkürzen und zu verstärken, damit notwendige Korrekturen kontinuierlich vorgenommen werden können.

Ich erreiche dies im Allgemeinen durch kontinuierliche Integration / Bereitstellung / Bereitstellung und gemeinsame Überwachung und Alarmierung. Daher passt es sehr gut zur Tool- Komponente von DevOps.

Kultur des kontinuierlichen Experimentierens und Lernens

Kultur des kontinuierlichen Experimentierens und Lernens

Beim Dritten Weg geht es darum, eine Kultur zu schaffen, die zwei Dinge fördert: kontinuierliches Experimentieren, Eingehen von Risiken und Lernen aus Fehlern; und zu verstehen, dass Wiederholung und Übung die Voraussetzung sind, um zu meistern.

Dies passt sehr gut in den Kulturraum , obwohl es stark von Werkzeugen und Prozessen abhängt, damit die Kultur wachsen kann.

Richard Slater
quelle
Hervorragende Antwort! obwohl ich auf diesen Graphen Vergleiche verschiedener Praktiken gestoßen bin ... insbesondere in Bezug auf Agilität. Ich denke, es ist viel zu weit gefasst, um dahin zu gehören. Das Testen ist ausgeschlossen, obwohl einige agile Methoden das Testen in den Mittelpunkt ihrer Praktiken stellen. Einmal könnte man argumentieren, dass DevOps sehr agil ist (oder sein kann, je nachdem wie es implementiert wird). Das agile Manifest zeigt mehr eine Philosophie als gut gebundene Übungsregeln. Nitpicking mehr als sich zu beschweren, es ist eine wirklich schöne Antwort!
Newtopian
Ich kann dieses Diagramm nicht in vollem Umfang würdigen, es wurde von vielen Beratern auf vielen Whiteboards auf der ganzen Welt vor mir gezeichnet. Ich vermute, es beschreibt die Praxis der Agilität, bei der sich Teams darauf konzentrierten, potenziell verwendbare Produkte in kurzen Iterationen zu erstellen. CI folgte als eine Praxis, die einen Teil dieser Arbeit automatisierte eingesetzt, die bauen und DevOps betreibt die Software in der Produktion.
Richard Slater
4

Ich habe viele, viele verschiedene Definitionen von DevOps gehört. Sie beinhalten:

  • Entwickler, die Vorgangsaufgaben ausführen
  • Eine Person erledigt doppelt so viel Arbeit (in der gleichen Zeit)
  • Entwickler und Betriebsteams arbeiten zusammen
  • Operations-Arbeit für Developer Tooling (in Anlehnung an "Web Ops")
  • Eine Berufsbezeichnung für jemanden, der Entwickler-Tools erstellt und verwaltet
  • Der Einsatz von Automatisierung im Betrieb
  • Die Verwendung von Public Clouds im Betrieb
  • Ein Job, der Aspekte des Betriebs, der Entwicklung und der Qualitätssicherung kombiniert
  • Eine Aufgabe, bei der die Entwicklungs- und Betriebsteams zusammenarbeiten
  • Eine Philosophie zum Abbau von Barrieren zwischen Teams
  • Infrastruktur als Code behandeln
  • Was Sie bekommen, wenn ehemalige Software-Ingenieure in Betrieb gehen
  • Ein völlig bedeutungsloses Schlagwort

Es gibt keinen öffentlichen Konsens darüber, was DevOps tatsächlich ist . Vor ein paar Jahren hatten wir ähnliche Probleme mit "Agile", und das hat eine schriftliche Definition .

Wenn ich Ihre Konzepte einem Neuling vorstelle, konzentriere ich mich darauf, die Konzepte vorzustellen, anstatt ein Etikett anzubringen, sonst hören sie widersprüchliche Definitionen und werden verwirrt. Wenn Sie beispielsweise versuchen, über Infrastruktur als Code zu sprechen , teilen Sie ihnen mit, dass Sie über Infrastruktur als Code sprechen. Je spezifischer Sie sein können, desto besser, da sich die meisten Unternehmen trotz vereinbarter Definitionen mehr auf bestimmte Teile einer Philosophie konzentrieren.

Boykott SE für Monica Cellio
quelle
2

Die Definition, die ich in dieser Situation immer verwende, ist die folgende:

„Eine Software-Erstellungskultur, die die Kommunikation und Zusammenarbeit zwischen Softwareentwicklungs- und Betriebsteams bei gleichzeitiger Automatisierung des Software-Bereitstellungsprozesses und der Infrastrukturänderungen in den Vordergrund stellt. Das Ziel von DevOps ist es, den Softwareerstellungs-, Test- und Bereitstellungsprozess so häufig, schnell und wie möglich zu gestalten. “

Zusammen mit der Definition ist es jedoch auch wichtig, dass sie verstehen, WARUM wir DevOps brauchen . Stellen Sie sicher, dass DevOps Software-Fehler schneller behebt, ein besseres Ressourcenmanagement, weniger menschliche Fehler, eine bessere Versionskontrolle, eine stabile Betriebsumgebung usw. ermöglicht.

DevOps Jedi
quelle
1

In der folgenden wissenschaftlichen Arbeit zur Erforschung genau dieser Frage, "Was ist DevOps?", Lautet die vorgeschlagene abgeleitete Definition von DevOps:

DevOps ist eine Entwicklungsmethode, die darauf abzielt, die Lücke zwischen Entwicklung (Dev) und Betrieb (Ops) zu schließen, wobei Kommunikation und Zusammenarbeit, kontinuierliche Integration, Qualitätssicherung und Bereitstellung mit automatisierter Bereitstellung unter Verwendung einer Reihe von Entwicklungsverfahren im Vordergrund stehen.

[Jabbari et al.] "Was ist DevOps ?: Eine systematische Mapping-Studie zu Definitionen und Praktiken" (2016)

Peter
quelle
-2

Devops ist die Entwicklungspraxis des Schreibens von Anwendungen, deren Geschäftsbereich der Betrieb ist. Während sich die meisten Anwendungsentwicklungen auf die Erstellung von Anwendungen konzentrieren, die sich mit Finanzen, Gesundheitswesen, Logistik oder Katzenvideos befassen, konzentrieren sich Entwickler auf Anwendungen, die das Erstellen, Bereitstellen, Überwachen und Erfassen von Metriken ermöglichen.

Das übergeordnete Ziel sollte immer sein, Entscheidungsträger zu Entscheidungsträgern zu machen . Stellen Sie sich die mobile Anwendung Ihrer Bank vor. Wenn Sie eine Übertragung anfordern, geschieht dies, wenn Sie auf die Schaltfläche klicken. Sie machte eine Entscheidung, dann nahm die Entscheidung. Das Gleiche gilt für Ihre Operationen. Wenn die zuständige Person entscheidet, dass einige Arbeiten für die Produktion bereitstehen, sollte sie in der Lage sein, auf einen Knopf zu drücken und die "richtigen Dinge passieren". Ebenso sollten sie über alle notwendigen Informationen verfügen, um korrekte Geschäftsentscheidungen treffen zu können.

Es geht nicht darum, Geschäftsleuten Shell-Zugriff auf Server zu gewähren - das ist ein verwirrender Zweck bei der Implementierung. Es geht darum, die richtigen Knöpfe und Hebel mit den richtigen Informationen und den richtigen Leitplanken für die richtigen Leute zu versehen, damit Entscheidungsträger zu Entscheidungsträgern werden.

Rob Kinyon
quelle
1
whose business domain is operations: Kann man das erweitern oder einige Beispiele nennen?
Dawny33
Ich bin anderer Meinung, devops ist ein Organisationsmodell zur Unterstützung von Softwareentwicklungen und keine Entwicklungspraxis für sich. Sie können extreme Programmieraufgaben in einem devops-Modell (z. B. Mixin Dev, Ops, Clients und Tester) ausführen )
Tensibai
Die grundlegende Definition von "Devops" ist die Entwicklungspraxis des Schreibens von Anwendungen, deren Geschäftsbereich der Betrieb ist. Das Schreiben von Anwendungen, unabhängig von Domäne oder Zweck, ist Entwicklung, nicht DevOps.
Adrian