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



Vor einigen Jahren betrachteten viele Unternehmen DevOps als vielversprechendes Experiment und nicht als grundlegenden Ansatz für die Softwareentwicklung. Jetzt ist DevOps eine bewährte und leistungsstarke Sammlung von Entwicklungs- und Bereitstellungsmethoden und -tools, die neue Produktversionen beschleunigen und die Produktivität steigern. Noch wichtiger ist, dass der DevOps-Effekt auf das Gesamtwachstum des Geschäfts und die Steigerung seiner Rentabilität abzielt.

Das Cloud Solutions- Team von Mail.ru übersetzte den interessantesten Bericht aus dem Accelerate State of DevOps-Bericht von 2019 , der von Experten von DevOps Research & Assessment (DORA) erstellt wurde. An der Studie nahmen 31.000 Fachleute aus der ganzen Welt teil. Schauen wir uns an, was sich in der Branche im Jahr 2019 geändert hat und wie ein Unternehmen die Effizienz der Softwarebereitstellung steigern kann.

Wie sich Industrie und Unternehmensgröße auf DevOps auswirken


In der Studie wurde kein Zusammenhang zwischen der Leistung von DevOps und der Branche des Unternehmens festgestellt, mit Ausnahme des Einzelhandels, in dem die Leistung etwas besser war. Dies liegt insbesondere daran, dass der Handel schnell auf Nachfrageschwankungen und Kundenbedürfnisse reagieren muss. Laut der Studie kann jedes Unternehmen, einschließlich des Finanzsektors und des öffentlichen Sektors, ein hohes Niveau bei DevOps erreichen.

Die DevOps-Leistungsindikatoren in Unternehmen mit mehr als 5.000 Mitarbeitern waren niedriger als in Unternehmen mit weniger als 5.000 Mitarbeitern. Dies ist höchstwahrscheinlich auf die Tatsache zurückzuführen, dass in großen Organisationen größere Prozesse, eine strengere Kontrolle und eine kompliziertere Architektur der IT-Systeme zu Verzögerungen bei der Entwicklung und Einführung von Code führen. Darüber hinaus sind Experten der Ansicht, dass die Größe des Unternehmens den Erfolg beim Aufbau von DevOps nicht beeinträchtigt. In einigen Fällen ist jedoch ein höherer Aufwand erforderlich.

Wie bewertet man das Level von DevOps in einem Unternehmen?


Experten verglichen DevOps-Prozesse mit einer Benchmark und teilten die Umfrageteilnehmer in vier Gruppen mit den besten, guten, mittleren und niedrigen Indikatoren ein.

Für den Bericht wurden vier Schlüsselkennzahlen zur Bewertung der Effektivität von DevOps herangezogen: die Zeit, die benötigt wurde, um die Änderungen während der Softwareentwicklung abzuschließen, die Häufigkeit der Bereitstellung, die Häufigkeit von Fehlern und die Wiederherstellungszeit.

Vier DevOps-Ebenen - Bewerten Sie, wo sich Ihr Unternehmen befindet:

Leistungsbewertungsmetrik für die Softwarebereitstellung für die wichtigsten Dienste und Anwendungen des Unternehmens
Top Score Mannschaften
Gute Mannschaften
Mittlere Teams
Low Score Mannschaften
Bereitstellungshäufigkeit
Wie oft stellt ein Unternehmen Code für die Produktion bereit oder gibt ihn für Endbenutzer frei.
Auf Anfrage mehrere Bereitstellungen pro Tag
Einmal am Tag bis einmal in der Woche
Von einmal pro Woche bis einmal im Monat
Einmal im Monat / mehrere Monate
Vorlaufzeit ändern
Wie lange dauert es, von einem Test zu einer Software zu wechseln, die in der Produktion erfolgreich funktioniert?
In weniger als einem Tag
Von einem Tag bis zu einer Woche
Von einer Woche bis zu einem Monat
Monat bis sechs Monate
Service-Wiederherstellungszeit
Wie lange dauert es, einen Dienst nach einem Vorfall oder einem Fehler, der Benutzer betrifft, wiederherzustellen?
Weniger als eine Stunde
Im Laufe des Tages
Innerhalb einer Woche
Von Woche zu Monat
Fehlerrate ändern
Welcher Prozentsatz von Updates oder neuen Releases zu einem schlechten Service führt und behoben werden muss.
0-15%
0-15%
0-15%
46-60%

Die Studie ergab den folgenden Trend: Die Anzahl der Teams mit einem hohen Indikatorenniveau hat sich nahezu verdreifacht und stieg von 7% aller Befragten im Jahr 2018 auf 20% im Jahr 2019.


Verteilung der Entwicklungsteams nach Leistungsstufen.

Im Vergleich zu Teams in der Low-Performance-Gruppe, High-Performance-DevOps-Teams:

  1. 208-mal mehr Code-Bereitstellungen abgeschlossen.
  2. 106-mal weniger Zeit für die Bereitstellung von Code.
  3. 7-mal weniger wahrscheinlich auf Ausfälle zu stoßen.
  4. 2.604 Mal schneller, um Software nach Fehlern wiederherzustellen.

Darüber hinaus erreichen oder übertreffen DevOps-Teams mit hohen Punktzahlen ihre organisatorischen Leistungskennzahlen doppelt so häufig wie Teams mit niedrigen Punktzahlen.

Viele Experten glauben, dass es unmöglich ist, alle Indikatoren gleichzeitig zu erhöhen, wir müssen Kompromisse eingehen. Einige sind daher der Ansicht, dass eine schnellere Einführung von Releases die Zuverlässigkeit des Software-Bereitstellungsprozesses und die Bereitstellung von Services beeinträchtigen kann. Studien haben jedoch gezeigt, dass sich Geschwindigkeit und Stabilität der Ergebnisse nicht ausschließen.

Bei der Zunahme der Anzahl der DevOps-Teams sehe ich nichts Überraschendes, das ist logisch: Die DevOps-Philosophie ist jetzt populär und die Anzahl der Startups wächst.

Meiner Meinung nach haben die Experten jedoch nicht ganz korrekte Parameter für die Bewertung der Wirksamkeit von DevOps ausgewählt.

Es ist zumindest seltsam, es anhand der Geschwindigkeit zu bewerten, mit der der Code ausgeliefert wird. Dies gilt nur für Start-ups, bei denen der Schlüsselparameter die Geschwindigkeit ist, mit der das Produkt auf den Markt gebracht wird, und häufig das Produkt in Rohform angezeigt wird. Unter solchen Umständen sind Mechanismen, die die Entwicklung und Lieferung der Produktion beschleunigen, von entscheidender Bedeutung. Bei etablierter Software, wie z. B. finanzieller oder medizinischer Art, ist der Parameter für die Häufigkeit von Fehlern möglicherweise nicht vorhanden - Fehler sind möglicherweise inakzeptabel.

Ähnlich verhält es sich mit der Wiederherstellungszeit eines Dienstes: Für jeden entwickelten Dienst sollte er in Sekunden berechnet werden, und für viele Dienste ist ein einfacher nicht akzeptabel. Dafür erfanden sie nahtlose Rolling-Technologien (zum Beispiel grün / blau).

Konzentrieren Sie sich auch nicht auf die Anzahl der Code-Bereitstellungen - dies hängt von den Anforderungen und Kompetenzen des Entwicklungsteams ab. Wenn die Bereitstellung das Hinzufügen neuer Funktionen umfasst, ist dies eine Sache, und wenn die Korrektur der Fehler, die bei früheren Bereitstellungen gemacht wurden, völlig anders ist.

Denis Romanenko, freiberuflicher Experte Mail.ru Cloud Solutions

So verbessern Sie DevOps-Prozesse


Der Bericht enthält zwei Bereiche, die zur Verbesserung von DevOps beitragen: Verbesserung der Effizienz der Softwareentwicklung und -bereitstellung sowie Verbesserung der Produktivität.


Jede der Richtungen enthält eigene Komponenten, mit denen Sie das gewünschte Ziel erreichen können.

Der Schlüssel zur digitalen Transformation ist laut Bericht die Unternehmenskultur. Hochwirksame DevOps-Teams brauchen eine Kultur des Vertrauens und der psychologischen Sicherheit, ein Verständnis für die Arbeitsergebnisse und klare Ziele. In einem solchen Umfeld können die Teammitglieder fundierte Entscheidungen treffen, ihre Meinung äußern und kreativer sein.

Cloud-Technologien, kontinuierliche Bereitstellung, Disaster Recovery-Tests und Änderungsmanagement werden auch dazu beitragen, die Effizienz der Softwareentwicklung und -bereitstellung zu verbessern. Die Arbeitsproduktivität kann verbessert werden, indem in benutzerfreundliche Tools investiert wird, die technische Verschuldung verringert wird, dh der Prozentsatz ineffizienter Codes und veralteter Technologien verringert wird, eine Wissensbasis für Unternehmen aufgebaut wird und auf externe Lösungen zugegriffen werden kann.

Ich denke, dass die Methodik und Ideologie von DevOps genau darin besteht, dass diese Prozesse nicht von externen Bedingungen wie einer Cloud oder Ihrer eigenen Hardware abhängig sind. Die Cloud selbst ist nichts anderes als ein Werkzeug, irgendwo wird sie helfen, irgendwo wird sie behindern oder wird nicht gefragt sein.

Denis Romanenko, freiberuflicher Experte Mail.ru Cloud Solutions

Im Folgenden werden einige Komponenten beschrieben, die die Leistung des DevOps-Teams verbessern.

Cloud-Technologie trägt zum Erfolg von DevOps bei


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


Welche Infrastrukturen verwenden DevOps-Befehle?

DORA stellte fest, dass 80% der Befragten Kernanwendungen oder -dienste auf einer Cloud-Plattform hosten. Dennoch implementierten nur 29% der Befragten alle fünf Hauptmerkmale des Cloud Computing am National Institute of Standards and Technology - dies ist der wichtigste Standard für die Bewertung des Werts der Cloud im Rahmen von DevOps.

Feature
Verwendeter Prozentsatz
Selbstversorgung auf Anfrage
Verbraucher können automatisch Rechenressourcen bereitstellen
nach Bedarf ohne Beteiligung des Anbieters.
57%
(+ 11% seit 2018)
Breiter Netzwerkzugriff
Cloud-Funktionen sind plattformübergreifend verfügbar.
wie Mobiltelefone, Tablets, Laptops und Workstations.
60%
(+ 14% seit 2018)
Ressourcenpool
Provider-Ressourcen werden zu einem mandantenfähigen Modell zusammengefasst, in dem physische und virtuelle Ressourcen bei Bedarf dynamisch zugewiesen werden.
58%
(+ 15% seit 2018)
Skalierbarkeit und Elastizität
Ressourcen werden bei Bedarf horizontal oder vertikal skaliert, sind praktisch unbegrenzt und können jederzeit in beliebiger Menge ausgegeben werden.
58%
(+135 seit 2018)
Transparenz
Cloud-Systeme steuern, optimieren und protokollieren automatisch die Ressourcennutzung in Abhängigkeit von der Art des Dienstes: Datenspeicherung und -verarbeitung, Verkehrsaufkommen,
Aktive Benutzerkonten
62%
(+ 14% seit 2018)

Platform as a Service (PaaS) entwickelt sich zunehmend zu einem Bereitstellungsmodell, das sich auf Container konzentriert. Cloud-Plattformen vereinfachen die Softwarebereitstellung, sodass Teams sich nur um die Ausführung des Anwendungscodes selbst kümmern müssen. Die Skalierung, Ressourcenplanung, Administration und Wartung der Infrastruktur obliegt ebenfalls den Anbietern.

Für Cloud-Anbieter ist der universelle Standard die Bereitstellung einer Vielzahl von Diensten: Netzwerke virtueller Maschinen, Identitäts- und Zugriffskontrolle (IAM), Speicher und Datenbanken, maschinelles Lernen, Internet der Dinge (IoT), Containerlösungen, Sicherheitslösungen und andere.

Kunden von Cloud-Anbietern zahlen nur die Ressourcen, die sie verwenden, was im Gegensatz zu herkömmlichen Rechenzentren, in denen Informationen zu den Entwicklungskosten nur schwer oder gar nicht erhältlich sind, Kostentransparenz gewährleistet. Die Befragten von Unternehmen, die die oben aufgeführten Cloud-Eigenschaften erfüllen, schätzen die Kosten für Software-Arbeit 2,6-mal genauer ein, verstehen 2-mal häufiger, welche Anwendungen mehr Ressourcen verbrauchen, und verbleiben 1,65-mal häufiger innerhalb des für die IT zugewiesenen Budgets.

Manchmal stellt sich heraus, dass es rentabler ist, einen kompetenten Spezialisten einzustellen und die zugewiesenen Kapazitäten im Rechenzentrum zu nutzen, als für die Cloud zu bezahlen. Welche Option besser ist, hängt vom Profil und der Größe des Unternehmens, der Verfügbarkeit der eigenen Mitarbeiter an IT-Spezialisten und dem Fachwissen ab. Zum Beispiel ist die Cloud am Anfang eines Unternehmens oder wenn das Unternehmen keine eigene IT-Abteilung hat, bequem zu verwenden. Bei der Skalierung kann es kostengünstiger sein, die gesamte oder einen Teil der lokalen Infrastruktur einzuschließen.

Denis Romanenko, freiberuflicher Experte Mail.ru Cloud Solutions

Technische Praktiken DevOps


Viele Organisationen, die DevOps implementieren möchten, suchen nach einer Reihe von Anweisungen oder Best Practices. Es gibt jedoch keine identischen Unternehmen. Welche Vorgehensweise zu wählen ist, hängt vom aktuellen Stand des Unternehmens und seinen Zielen ab.

Gleichzeitig gibt es allgemeine Richtlinien, die dazu beitragen, die Effizienz von DevOps zu verbessern: Einige von ihnen werden auf Teamebene entwickelt, andere erfordern Anstrengungen auf Organisationsebene.

Was sind die Wachstumsrichtungen für DevOps-Teams im Jahr 2019:

Organisationsebene
  • lose gekoppelte Architektur
  • Umsetzung von Änderungen
  • Code-Unterstützung
Teamebene
  • kontinuierliche Integration
  • Testautomatisierung
  • Deployment-Automatisierung
  • Überwachung
  • Entwicklungspipeline
Auf Team- und Organisationsebene
  • Nutzung von Cloud-Diensten
  • Disaster Recovery-Tests

Die Studie bestätigte den positiven Einfluss einer locker gekoppelten Architektur auf die Leistung von DevOps.

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

Dieser Ansatz ist nur für Startups und mit einigen Vorbehalten möglich. Andere Unternehmen haben möglicherweise eine andere Situation. Ein gutes Beispiel: Banking / Fintech. Dort können nur proprietäre Lösungen verwendet werden, DevOps-Praktiken werden jedoch angewendet.

Denis Romanenko, freiberuflicher Experte Mail.ru Cloud Solutions

Erfolgreiche DevOps-Teams automatisieren alles


Mit Continuous Integration and Delivery (CI / CD) können Sie Services und Anwendungen mit geringeren Kosten und Risiken zum Produkt bringen und Releases gemäß den Zielen der Organisation verwalten.

Ein erfolgreiches CI / CD bedeutet auch, dass Teams Änderungen an der Produktion bei Bedarf implementieren können, sofort Feedback zur Bereitstellungsqualität erhalten, sie schnell erarbeiten und den nächsten Bereitstellungszyklus verbessern können.

Der Bericht zeigt, dass erfolgreiche DevOps-Teams in eine Vielzahl von unterstützenden Prozessen, Praktiken und Tools investieren:

  • 92% verwenden automatisierte Montagewerkzeuge.
  • 87% verwenden automatisierte Komponententests.
  • 57% erweitern die Automatisierung auf Abnahmetests;
  • 72% automatisieren die Bereitstellung in Testumgebungen, 69% tun dies auch für die Bereitstellung in der Produktion.
  • 69% integrieren Chatbots in den Bereitstellungsprozess;
  • 57% integrieren mit Überwachungstools.

Es ist wichtig, die richtigen Werkzeuge und Technologien auszuwählen.


Bei der Erstellung komplexer Systeme und der Verwaltung geschäftskritischer Infrastrukturen ist es wichtig, die folgenden Technologien auszuwählen:

  • die sowohl beim ersten Anschließen als auch im Dauerbetrieb einfach zu bedienen sind;
  • die helfen, Ihre Ziele zu erreichen.

Der Bericht untersuchte die Tools, die zum Bereitstellen von Software über CI / CD verwendet werden, und testete Automatisierungstools - dies sind die Technologien, die DevOps zugrunde liegen.

Welche Technologien verwenden DevOps-Befehle:

Technologie
Low Score Mannschaften
Mittlere Teams
Gute Mannschaften
Highscore-Teams
Kombination von proprietären, Open Source- und kommerziellen Box-Produkten
30%
34%
32%
33%
Meist Open Source und hochgradig maßgeschneiderte Boxed-Lösungen
17%
8%
7%
10%
Meist Open Source- und Box-basierte Lösungen mit nur geringen Anpassungen
14%
21%
18%
20%
Primär verpackte kommerzielle Lösungen
8%
12%
8%
4%
Interne Entwicklung und proprietäre Lösungen für das Unternehmen
20%
6%
5%
6%
Zunächst Open Source mit starker Anpassung
6%
7%
5%
12%
Erste Open Source-Version mit kleinen Optimierungen
5%
12%
24%
15%

Die Bequemlichkeit der Tools wirkt sich erheblich auf die Fähigkeit des Teams aus, den Wert des ausgewählten Technologiestapels zu maximieren: Ingenieure mit benutzerfreundlichen Technologien gehören mit 1,5-facher Wahrscheinlichkeit Teams mit hohen Raten an.

Meiner Meinung nach vermittelt diese Tabelle das Gefühl, dass man, um ein erfolgreiches DevOps-Team zu sein, dem Mod und nicht der technischen Aufgabe folgen muss.

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

Denis Romanenko, freiberuflicher Experte Mail.ru Cloud Solutions

Notfallwiederherstellung


Jede Organisation, deren Arbeit vom Betrieb der Software abhängt, muss über einen Notfallplan verfügen. Der Bericht zeigt, welche Arten von Katastrophentoleranztests von verschiedenen Unternehmen verwendet werden.

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

Testtyp
Low Score Mannschaften
Mittlere Teams
Gute Mannschaften
Highscore-Teams
Im mittleren
Tests, die sich nicht auf reale Systeme auswirken
35%
26%
27%
30%
28%
Infrastruktur-Failover (einschließlich Rechenzentrum)
27%
43%
34%
38%
38%
Testen von Anwendungsfehlern
25%
46%
41%
49%
43%
Simulation von Vorfällen mit fehlerhaften Testsystemen
18%
22%
23%
29%
23%
Modellierung von Vorfällen mit fehlerhaften Arbeitssystemen
18%
11%
12%
13%
12%
Automatisierung und Systeme schaffen, die stören
Produktionssysteme regelmäßig und kontinuierlich
9%
8%
7%
9%
8%

Nur 40% der Befragten führen jährlich Disaster Recovery-Tests mit einer oder mehreren dieser Methoden durch. Gleichzeitig haben Unternehmen, die Disaster Recovery-Tests durchführen, eine höhere Serviceverfügbarkeit. Der Bericht zeigt, dass DevOps-Teams mit hoher Leistung bei Softwareentwicklungs- und -bereitstellungsprozessen mit 1,4-facher Wahrscheinlichkeit Daten von Disaster Recovery-Tests berücksichtigen.

Es ist wichtig, dass DevOps-Teams Zugriff auf Informationen haben


Wenn Sie die Leistung von DevOps-Befehlen auf einem hohen Niveau halten, können Sie auf einfache Weise Informationen abrufen, um Probleme zu lösen. Dies gilt insbesondere in einem modernen technologischen Umfeld, das aus komplexen Systemen besteht.

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

  1. Interne Quellen : Unternehmensdokumentation zum Erstellen und Verwalten von Code, Wissensdatenbanken, Repositorys und mehr. Diejenigen DevOps-Teams, die interne Wissensquellen verwendeten, waren 1,73-mal produktiver.
  2. Externe Quellen : Suchmaschinen und Stapelauffüllung. Externe DevOps-Teams waren 1,67-mal produktiver. Externe Technologien bieten einen großen Vorteil für Lernen und Wachstum, insbesondere die Verwendung von Public Clouds und Open Source-Tools.

Für Unternehmen ist es wichtig, die technische Verschuldung zu reduzieren


Technische Schulden schließen Code oder Systeme mit bekannten, aber nicht behobenen Fehlern ein; unzureichende Testabdeckung; Code oder Design von geringer Qualität; Artefakte, die nicht verwendet, aber nicht gelöscht werden; Implementierungen, die das Team nicht effektiv unterstützen kann; veraltete Technologie; unvollständige oder veraltete Dokumentation.

Experten haben festgestellt, dass die technische Verschuldung die Leistung von DevOps nachteilig beeinflusst. Teams mit hoher technischer Verschuldung waren 1,6-mal weniger produktiv. Teams mit hohen Quoten hatten mit 1,4-facher Wahrscheinlichkeit eine geringe technische Verschuldung.

Wichtigste Erkenntnisse aus der DevOps-Forschung


  1. Der Anteil der leistungsstarken DevOps-Teams hat sich mit 20% fast verdreifacht. Dies bedeutet, dass Unternehmen das Versprechen von Vorgehensweisen zur Verbesserung der Softwareentwicklung und -bereitstellung verstehen. Unternehmen führen DevOps aktiv in ihren IT-Abteilungen ein.
  2. Schnelle Anwendungs- und Servicebereitstellung ist das Herzstück der technologischen und organisatorischen Transformation. Die Geschwindigkeit und Stabilität der Einführung von Releases erhöht den Gewinn und die Kundenzufriedenheit.
  3. Die Cloud-Technologie ist nach wie vor der Schlüssel zur Erreichung leistungsfähiger DevOps-Teams. Mithilfe von Clouds können Sie die Bereitstellung von Software mit der richtigen Geschwindigkeit organisieren und Verfügbarkeit, Skalierbarkeit und Produktivität der Infrastruktur gewährleisten.
  4. Die Effektivität von DevOps-Teams kann verbessert werden, wenn Sie auf die Produktivität der Teammitglieder achten, für eine angenehme psychologische Atmosphäre sorgen und praktische Tools verwenden.
  5. Eine schnellere Einführung von Releases mit dem richtigen Ansatz wirkt sich nicht auf die Stabilität der Dienste und Anwendungen des Unternehmens aus.

Source: https://habr.com/ru/post/de483444/


All Articles