DORA-Bericht 2019: So verbessern Sie die DevOps-Effizienz

DORA-Bericht 2019: So verbessern Sie die DevOps-Effizienz

Vor einigen Jahren betrachteten viele Unternehmen DevOps eher als vielversprechendes Experiment denn als Mainstream-Ansatz für die Softwareentwicklung. DevOps ist heute ein bewährter und leistungsstarker Satz von Entwicklungs- und Bereitstellungspraktiken und -tools, der die Veröffentlichung neuer Produkte beschleunigen und die Produktivität steigern kann. Noch wichtiger ist, dass sich DevOps auf das allgemeine Geschäftswachstum und die höhere Rentabilität auswirkt.

Team Mail.ru Cloud-Lösungen übersetzte das Interessanteste aus Accelerate State of DevOps-Bericht 2019, zusammengestellt von DevOps Research & Assessment (DORA)-Experten. An der Studie waren 31 Spezialisten aus aller Welt beteiligt. Werfen wir einen Blick darauf, was sich 000 in der Branche verändert hat und wie Unternehmen ihre Effizienz bei der Softwarebereitstellung verbessern können.

Wie sich Branche und Unternehmensgröße auf den Stand von DevOps auswirken

Die Studie ergab keinen Zusammenhang zwischen der DevOps-Leistung und der Branche eines Unternehmens, mit Ausnahme des Einzelhandels, der etwas besser abschnitt. Dies liegt insbesondere daran, dass Händler schnell auf Nachfrageschwankungen und Kundenbedürfnisse reagieren müssen. Der Studie zufolge kann jedes Unternehmen ein hohes DevOps-Niveau erreichen, auch der Finanzsektor und der öffentliche Sektor.

Die DevOps-Leistung war in Unternehmen mit mehr als 5000 Mitarbeitern geringer als in Unternehmen mit weniger als 5000 Mitarbeitern. Dies ist höchstwahrscheinlich auf die Tatsache zurückzuführen, dass große Unternehmen über größere Prozesse, strengere Kontrollen und eine komplexere IT-Systemarchitektur verfügen, was zu Verzögerungen bei der Entwicklung und Einführung von Code führt. Gleichzeitig gehen Experten davon aus, dass die Größe des Unternehmens den Erfolg beim Aufbau von DevOps nicht beeinträchtigt, sondern in manchen Fällen lediglich einen höheren Aufwand erfordert.

So beurteilen Sie das DevOps-Niveau in einem Unternehmen

Experten verglichen DevOps-Prozesse mit einem Benchmark und teilten die Umfrageteilnehmer in vier Gruppen mit den besten, guten, durchschnittlichen und schlechten Leistungen ein.

Für den Bericht haben wir vier Schlüsselkennzahlen zur Bewertung der Wirksamkeit von DevOps herangezogen: Zeit bis zum Abschluss von Änderungen in der Softwareentwicklung, Bereitstellungshäufigkeit, Fehlerrate und Wiederherstellungszeit.

Vier Ebenen von DevOps – beurteilen Sie, wo Ihr Unternehmen steht:

Eine Kennzahl zur Beurteilung der Wirksamkeit der Softwarebereitstellung für die wichtigsten Dienste und Anwendungen des Unternehmens

Teams mit den besten Bilanzen

Teams mit guter Leistung

Durchschnittliche Teams

Teams mit geringer Leistung

Bereitstellungshäufigkeit
Wie oft stellt das Unternehmen Code in der Produktion bereit oder gibt ihn für Endbenutzer frei?

Auf Wunsch auch mehrere Einsätze pro Tag

Von einmal am Tag bis einmal in der Woche

Von einmal pro Woche bis einmal im Monat

Einmal im Monat/mehrere Monate

Ausführungszeit ändern
Wie lange dauert der Übergang von einer Testversion zu einer Software, die erfolgreich in der Produktion läuft?

Weniger als einen Tag

Von einem Tag bis zu einer Woche

Von einer Woche bis zu einem Monat

Von einem Monat bis sechs Monaten

Service-Wiederherstellungszeit
Wie lange dauert die Wiederherstellung eines Dienstes nach einem Vorfall oder Fehler, der Benutzer betrifft?

Weniger als eine Stunde

Im Laufe des Tages

In einer Woche

Von einer Woche bis zu einem Monat

Ausfallrate ändern
Wie viel Prozent der Updates oder Neuveröffentlichungen führen zu einer Beeinträchtigung des Dienstes und erfordern Korrekturen?

0-15 %

0-15 %

0-15 %

46-60 %

Die Studie ergab folgenden Trend: Die Zahl der leistungsstarken Teams hat sich nahezu verdreifacht und stieg von 7 % aller Befragten im Jahr 2018 auf 20 % im Jahr 2019.

DORA-Bericht 2019: So verbessern Sie die DevOps-Effizienz
Verteilung der Entwicklungsteams nach Leistungsniveau.

Im Vergleich zu Teams in der leistungsschwachen Gruppe weisen leistungsstarke DevOps-Teams Folgendes auf:

  1. 208-mal mehr Codebereitstellungen durchgeführt.
  2. Verbrachte 106-mal weniger Zeit mit der Codebereitstellung.
  3. Es kam siebenmal seltener zu Ausfällen.
  4. Die Software wurde nach Ausfällen 2,604-mal schneller wiederhergestellt.

Darüber hinaus ist die Wahrscheinlichkeit, dass leistungsstarke DevOps-Teams ihre organisatorischen Leistungskennzahlen erreichen oder übertreffen, doppelt so hoch wie bei leistungsschwachen Teams.

Viele Experten halten es für unmöglich, alle Indikatoren gleichzeitig zu steigern, es müsse ein Kompromiss gefunden werden. Daher sind einige davon überzeugt, dass sich eine Erhöhung der Release-Geschwindigkeit negativ auf die Zuverlässigkeit des Softwarebereitstellungsprozesses und der Bereitstellung von Diensten auswirken kann. Untersuchungen haben jedoch gezeigt, dass sich Geschwindigkeit und Konsistenz der Ergebnisse nicht gegenseitig ausschließen.

Ich sehe nichts Überraschendes im Wachstum der Zahl der DevOps-Teams; es ist ganz natürlich: Die DevOps-Philosophie ist mittlerweile beliebt und die Zahl der Startups wächst.

Meiner Meinung nach haben die Experten jedoch nicht ganz die richtigen Parameter zur Beurteilung der Wirksamkeit von DevOps gewählt.

Es anhand der Geschwindigkeit des Code-Rollouts zu bewerten, ist gelinde gesagt seltsam. Dies gilt nur für Start-ups, bei denen der entscheidende Parameter die Geschwindigkeit ist, mit der das Produkt auf den Markt gebracht wird, und oft wird das Produkt in seiner Rohform auf den Markt gebracht. Unter solchen Bedingungen sind Mechanismen, die die Entwicklung und Auslieferung an die Produktion beschleunigen, von entscheidender Bedeutung. Aber für etablierte Software, wie etwa Finanz- oder Medizinsoftware, existiert der Parameter „Fehlerrate“ möglicherweise nicht – Ausfälle sind möglicherweise inakzeptabel.

Das Gleiche gilt für die Wiederherstellungszeit von Diensten: Für jeden entwickelten Dienst sollte sie in Sekunden berechnet werden, aber für viele Dienste sind Ausfallzeiten inakzeptabel; zu diesem Zweck wurden nahtlose Rollout-Technologien (z. B. Grün/Blau) erfunden.

Außerdem sollten Sie sich nicht auf die Anzahl der Codebereitstellungen konzentrieren – diese hängt vom Bedarf und den Kompetenzen des Entwicklungsteams ab. Wenn es bei der Bereitstellung darum geht, neue Funktionen hinzuzufügen, ist das eine Sache. Wenn es jedoch darum geht, bei früheren Bereitstellungen gemachte Fehler zu korrigieren, ist das etwas ganz anderes.

Denis Romanenko, freiberuflicher Experte bei Mail.ru Cloud Solutions

So verbessern Sie DevOps-Prozesse

Der Bericht stellt zwei Bereiche vor, die zur Verbesserung von DevOps beitragen werden: Steigerung der Effizienz der Softwareentwicklung und -bereitstellung und Verbesserung der Mitarbeiterproduktivität.

DORA-Bericht 2019: So verbessern Sie die DevOps-Effizienz
Jeder der Bereiche beinhaltet seine eigenen Komponenten, durch deren Verbesserung Sie das gewünschte Ziel erreichen können.

Der Schlüssel zur digitalen Transformation liegt dem Bericht zufolge in der Unternehmenskultur. Leistungsstarke DevOps-Teams brauchen eine Kultur des Vertrauens und der psychologischen Sicherheit, ein Gefühl für Leistung und klare Ziele. In dieser Umgebung können Teammitglieder fundierte Entscheidungen treffen, ihre Meinung äußern und kreativer sein.

Cloud-Technologien, kontinuierliche Bereitstellung, Disaster-Recovery-Tests und Änderungsmanagement werden ebenfalls dazu beitragen, die Effizienz der Softwareentwicklung und -bereitstellung zu verbessern. Die Produktivität lässt sich steigern, indem man in benutzerfreundliche Tools investiert, die technische Verschuldung reduziert – d.

Ich denke, dass die Methodik und Ideologie von DevOps gerade darin besteht, dass diese Prozesse nicht von äußeren Bedingungen, wie der Cloud oder der eigenen Hardware, abhängig sind. Die Cloud selbst ist nichts anderes als ein Werkzeug, an manchen Stellen wird sie helfen, an anderen wird sie behindern oder nicht gefragt sein.

Denis Romanenko, freiberuflicher Experte bei Mail.ru Cloud Solutions

Im Folgenden betrachten wir einige Komponenten zur Verbesserung der Effizienz von DevOps-Teams.

Cloud-Technologien ermöglichen den Erfolg von DevOps

Im Jahr 2019 entscheiden sich immer mehr Unternehmen für Cloud-Lösungen, die die Produktivität von DevOps-Teams deutlich steigern.

DORA-Bericht 2019: So verbessern Sie die DevOps-Effizienz
Welche Infrastrukturen nutzen DevOps-Teams?

DORA hat herausgefunden, dass 80 % der Befragten Platz finden Kernanwendungen oder -dienste auf der Cloud-Plattform. Allerdings haben nur 29 % der Befragten alle fünf zentralen Cloud-Merkmale des National Institute of Standards and Technology implementiert – den wichtigsten Standard zur Bewertung des Werts der Cloud innerhalb von DevOps.

Charakterisierung

Prozentsatz der Benutzer

Selbstbedienung auf Anfrage
Verbraucher können Computerressourcen automatisch bereitstellen
bei Bedarf, ohne Beteiligung des Anbieters.

57%
(+ 11 % seit 2018)

Breiter Netzwerkzugriff
Cloud-Funktionen sind über verschiedene Plattformen verfügbar.
wie Mobiltelefone, Tablets, Laptops und Workstations.

60%
(+ 14 % seit 2018)

Ressourcenpool
Die Ressourcen des Anbieters werden in einem Multi-Tenant-Modell zusammengefasst, bei dem physische und virtuelle Ressourcen bei Bedarf dynamisch zugewiesen werden.

58%
(+ 15 % seit 2018)

Skalierbarkeit und Elastizität
Ressourcen skalieren je nach Bedarf horizontal oder vertikal, sind praktisch unbegrenzt und können jederzeit in beliebiger Menge ausgegeben werden.

58%
(+135 seit 2018)

Transparenz
Cloud-Systeme überwachen, optimieren und melden automatisch die Ressourcennutzung abhängig von der Art des Dienstes: Datenspeicherung und -verarbeitung, Verkehrsmenge,
aktive Benutzerkonten.

62%
(+ 14 % seit 2018)

Platform as a Service (PaaS) bewegt sich zunehmend in Richtung eines Bereitstellungsmodells, das sich auf Container konzentriert. Cloud-Plattformen erleichtern die Bereitstellung von Software, sodass sich Teams nur um die Ausführung des Anwendungscodes selbst kümmern müssen. Auch Skalierung, Ressourcenplanung, Administration und Infrastrukturwartung werden auf die Anbieter übertragen.

Für Cloud-Anbieter wird die Bereitstellung einer Vielzahl von Diensten zum universellen Standard: virtuelle Maschinenvernetzung, Identitäts- und Zugriffsmanagement (IAM), Speicher und Datenbanken, maschinelles Lernen, Internet der Dinge (IoT), Containerlösungen, Sicherheitslösungen und andere .

Kunden von Cloud-Anbietern zahlen nur für die von ihnen genutzten Ressourcen und sorgen so für Kostentransparenz, im Gegensatz zu herkömmlichen Rechenzentren, bei denen Informationen zu Entwicklungskosten nur schwer oder gar nicht erhältlich sind. Befragte aus Unternehmen, die die oben aufgeführten Cloud-Merkmale erfüllen, schätzen mit 2,6-mal höherer Wahrscheinlichkeit die Kosten für den Betrieb von Software ein, verstehen mit 2-mal höherer Wahrscheinlichkeit, welche Anwendungen mehr Ressourcen erfordern, und halten mit 1,65-mal höherer Wahrscheinlichkeit ihr IT-Budget ein.

Manchmal stellt sich heraus, dass die Beauftragung eines kompetenten Spezialisten und die Nutzung der zugewiesenen Kapazität in einem Rechenzentrum rentabler ist als die Bezahlung der Cloud. Welche Option die bessere ist, hängt vom Profil und der Größe des Unternehmens, der Verfügbarkeit eigener IT-Spezialisten und dem Fachwissen ab. Die Cloud lässt sich beispielsweise bequem nutzen, wenn ein Unternehmen gegründet wird oder das Unternehmen keine eigene IT-Abteilung hat. Bei der Skalierung kann es kosteneffizienter sein, die Infrastruktur ganz oder teilweise vor Ort zu halten.

Denis Romanenko, freiberuflicher Experte bei Mail.ru Cloud Solutions

Technische DevOps-Praktiken

Viele Organisationen, die DevOps implementieren möchten, suchen nach einer Reihe von Richtlinien oder Best Practices. Es gibt jedoch keine zwei Unternehmen, die gleich sind. Daher hängt es von der aktuellen Lage des Unternehmens und seinen Zielen ab, welche Vorgehensweisen man wählt.

Allerdings gibt es allgemeine Bereiche, die zur Verbesserung der DevOps-Leistung beitragen können: Einige werden auf Teamebene entwickelt, andere erfordern Anstrengungen auf Organisationsebene.

Welche Wachstumsbereiche werden für DevOps-Teams im Jahr 2019 hervorgehoben:

Auf Organisationsebene

  • lose gekoppelte Architektur
  • Umsetzung von Änderungen
  • Code-Unterstützung

Auf Teamebene

  • kontinuierliche Integration
  • Testautomatisierung
  • Bereitstellungsautomatisierung
  • Überwachung
  • Entwicklungspipeline

Auf Team- und Organisationsebene

  • Nutzung von Cloud-Diensten
  • Tests zur Notfallwiederherstellung

Die Studie bestätigte die positiven Auswirkungen einer lose gekoppelten Architektur auf die DevOps-Leistung.

Bei einer lose gekoppelten Architektur können Teams Systeme bei Bedarf unabhängig von anderen Teams unabhängig testen, bereitstellen und ändern, ohne zusätzliche Unterstützung, Ressourcen, Genehmigung und mit weniger Feedback. Dies ermöglicht ein effizienteres Arbeiten, erfordert jedoch ein hohes Maß an Organisation und Management.

Dieses Vorgehen ist nur für Startups und unter Vorbehalt möglich. In anderen Unternehmen kann die Situation anders sein. Ein gutes Beispiel: Banking/Fintech. Dort dürfen ausschließlich proprietäre Lösungen zum Einsatz kommen, es werden jedoch DevOps-Praktiken angewendet.

Denis Romanenko, freiberuflicher Experte bei Mail.ru Cloud Solutions

Erfolgreiche DevOps-Teams automatisieren alles

Kontinuierliche Integration und Bereitstellung (CI/CD) ermöglicht es Ihnen, Dienste und Anwendungen mit geringeren Kosten und Risiken in die Produktion zu bringen sowie Support-Releases gemäß den Zielen der Organisation durchzuführen.

Erfolgreiches CI/CD bedeutet auch, dass Teams bei Bedarf Änderungen an der Produktion vornehmen können, sofortiges Feedback zur Qualität der Bereitstellung erhalten und schnell darauf reagieren können, um den nächsten Bereitstellungszyklus zu verbessern.

Der Bericht zeigt, dass erfolgreiche DevOps-Teams in eine breite Palette unterstützender Prozesse, Praktiken und Tools investieren:

  • 92 % nutzen automatisierte Montagewerkzeuge;
  • 87 % nutzen automatisierte Unit-Tests;
  • 57 % weiten die Automatisierung auf Abnahmetests aus;
  • 72 % automatisieren Bereitstellungen in Testumgebungen, 69 % tun dasselbe für die Bereitstellung in der Produktion;
  • 69 % integrieren Chatbots in den Bereitstellungsprozess;
  • 57 % integrieren Überwachungstools.

Es ist wichtig, die richtigen Tools und Technologien auszuwählen

Beim Aufbau komplexer Systeme und der Verwaltung geschäftskritischer Infrastrukturen ist es wichtig, Technologien auszuwählen:

  • die sowohl für den Erstanschluss als auch für den Dauereinsatz einfach zu verwenden sind;
  • die Ihnen helfen, Ihre Ziele zu erreichen.

Der Bericht untersuchte die Tools, die bei der Bereitstellung von Software über CI/CD und Testautomatisierungstools verwendet werden – das sind die Technologien, die DevOps zugrunde liegen.

Welche Technologien nutzen DevOps-Teams:

der Technik

Teams mit geringer Leistung

Durchschnittliche Teams

Teams mit guter Leistung

Hochleistungsteams

Eine Kombination aus proprietären, Open-Source- und kommerziellen Paketprodukten

30%

34%

32%

33%

Hauptsächlich Open Source und hochgradig maßgeschneiderte Paketlösungen

17%

8%

7%

10%

Hauptsächlich Open-Source- und Paketlösungen mit wenig Anpassungsmöglichkeiten

14%

21%

18%

20%

Hauptsächlich verpackte kommerzielle Lösungen

8%

12%

8%

4%

Interne Entwicklungen und proprietäre Lösungen für das Unternehmen

20%

6%

5%

6%

Hauptsächlich Open Source mit starker Anpassung

6%

7%

5%

12%

Hauptsächlich Open Source mit ein wenig Anpassung

5%

12%

24%

15%

Die Benutzerfreundlichkeit von Tools hat einen erheblichen Einfluss auf die Fähigkeit eines Teams, den Wert des von ihnen gewählten Technologie-Stacks zu maximieren: Ingenieure mit benutzerfreundlichen Technologien gehören mit 1,5-mal höherer Wahrscheinlichkeit zu leistungsstarken Teams.

Meiner Meinung nach vermittelt diese Tabelle den Eindruck, dass man, um ein erfolgreiches DevOps-Team zu sein, der Mode und nicht dem technischen Problem folgen muss.

Ein kompetenter Fachmann wählt Werkzeuge für die Aufgabe aus und nicht umgekehrt. Es gibt immer mehrere Tools und Ansätze, um jedes Problem zu lösen. Ein bestimmtes Werkzeug wird bestimmt durch: die Besonderheiten der Aufgabe; wie vertraut das Personal mit diesem Tool ist (wie hoch ist die Einstiegsschwelle, wenn das Tool neu ist); Finanzielle Komponente, sofern vorhanden.

Denis Romanenko, freiberuflicher Experte bei Mail.ru Cloud Solutions

Notfallwiederherstellung

Jede Organisation, deren Betrieb vom Betrieb von Software abhängt, muss über diese verfügen Notfallwiederherstellungsplan. Der Bericht zeigt, welche Arten von Katastrophenresilienztests verschiedene Unternehmen verwenden.

Welche Arten von Tests verwenden Unternehmen für die Notfallwiederherstellung?

Art der Prüfung

Teams mit geringer Leistung

Durchschnittliche Teams

Teams mit guter Leistung

Hochleistungsteams

Die durchschnittliche

Tests, die keine Auswirkungen auf reale Systeme haben

35%

26%

27%

30%

28%

Infrastruktur-Failover (einschließlich Rechenzentren)

27%

43%

34%

38%

38%

Anwendungsfehlertests

25%

46%

41%

49%

43%

Simulation von Vorfällen mit Störungen von Testsystemen

18%

22%

23%

29%

23%

Simulation von Vorfällen mit Störungen von Arbeitssystemen

18%

11%

12%

13%

12%

Automatisierung und Systeme schaffen, die stören
Produktionssysteme regelmäßig und kontinuierlich zu überprüfen

9%

8%

7%

9%

8%

Nur 40 % der Befragten führen jährlich Disaster-Recovery-Tests mit einer oder mehreren der aufgeführten Methoden durch. Gleichzeitig verfügen Unternehmen, die Disaster-Recovery-Tests durchführen, über eine höhere Serviceverfügbarkeit. Der Bericht zeigt, dass leistungsstarke DevOps-Teams mit 1.4-mal höherer Wahrscheinlichkeit Disaster-Recovery-Testdaten in ihre Softwareentwicklungs- und Bereitstellungsprozesse integrieren.

Es ist wichtig, DevOps-Teams Zugriff auf Informationen zu gewähren

Das einfache Auffinden von Informationen zur Lösung von Problemen kann dazu beitragen, die Produktivität von DevOps-Teams aufrechtzuerhalten. Dies gilt insbesondere im heutigen Technologieumfeld, das aus komplexen Systemen besteht.

Quellen solcher Informationen können in zwei Gruppen eingeteilt werden:

  1. Interne Quellen: Unternehmensdokumentation zur Erstellung und Pflege von Code, Unternehmenswissensdatenbanken, Repositorys und mehr. DevOps-Teams, die interne Wissensquellen nutzten, waren 1,73-mal produktiver.
  2. Externe Quellen: Suchmaschinen und Stacking. Ausgelagerte DevOps-Teams waren 1,67-mal produktiver. Externe Technologien bieten einen großen Vorteil für Lernen und Wachstum, insbesondere die Nutzung öffentlicher Clouds und Open-Source-Tools.

Für Unternehmen ist es wichtig, technische Schulden abzubauen

Technische Schulden umfassen Code oder Systeme mit bekannten, aber nicht behobenen Fehlern; unzureichende Testabdeckung; minderwertiger Code oder Design; Artefakte, die nicht verwendet, aber nicht gelöscht werden; Implementierungen, die das Team nicht effektiv unterstützen kann; veraltete Technologien; unvollständige oder veraltete Dokumentation.

Experten haben herausgefunden, dass sich technische Schulden negativ auf die Leistung von DevOps auswirken. Teams mit hoher technischer Verschuldung waren 1,6-mal weniger produktiv. Bei Teams mit hoher Leistung war die Wahrscheinlichkeit, dass sie eine geringe technische Verschuldung hatten, 1,4-mal höher.

Wichtigste Erkenntnisse aus der State of DevOps-Studie

  1. Der Anteil der DevOps-Teams mit hoher Leistung hat sich auf 20 % fast verdreifacht. Dies bedeutet, dass Unternehmen das Versprechen von Praktiken zur Verbesserung der Softwareentwicklung und -bereitstellung verstehen und DevOps aktiver in ihren IT-Abteilungen implementieren.
  2. Die schnelle Bereitstellung von Anwendungen und Diensten ist der Kern der Technologie- und Organisationstransformation. Die Geschwindigkeit und Konsistenz der Veröffentlichungen steigert den Gewinn und die Kundenzufriedenheit.
  3. Cloud-Technologien sind nach wie vor der Schlüssel zum Erreichen von Spitzenleistungen für DevOps-Teams. Durch den Einsatz von Clouds können Sie die Softwarebereitstellung mit der erforderlichen Geschwindigkeit organisieren und die Verfügbarkeit, Skalierbarkeit und Leistung der Infrastruktur sicherstellen.
  4. Die Effektivität von DevOps-Teams kann verbessert werden, indem man auf die Produktivität der Teammitglieder achtet, für eine angenehme psychologische Atmosphäre sorgt und praktische Tools verwendet.
  5. Die Beschleunigung der Einführung von Releases mit dem richtigen Ansatz hat keinen Einfluss auf die Stabilität der Dienste und Anwendungen des Unternehmens.

Source: habr.com

Kommentar hinzufügen