DevOps-Leitfaden für Anfänger

Welche Bedeutung hat DevOps, was bedeutet es für IT-Experten, Beschreibung von Methoden, Frameworks und Tools.

DevOps-Leitfaden für Anfänger

Seit sich der Begriff DevOps in der IT-Welt durchgesetzt hat, hat sich viel getan. Da ein Großteil des Ökosystems Open Source ist, ist es wichtig, noch einmal darüber nachzudenken, warum dies begann und was es für eine Karriere in der IT bedeutet.

Was ist DevOps?

Obwohl es keine einheitliche Definition gibt, glaube ich, dass DevOps ein Technologie-Framework ist, das die Zusammenarbeit zwischen Entwicklungsteams und Betriebsteams ermöglicht, um Code schneller in Produktionsumgebungen bereitzustellen und ihn zu replizieren und zu automatisieren. Wir werden den Rest des Artikels damit verbringen, diese Aussage näher zu erläutern.

Das Wort „DevOps“ ist eine Kombination aus den Wörtern „Development“ (Entwicklung) und „Operations“ (Operationen). DevOps trägt dazu bei, die Bereitstellung von Anwendungen und Diensten zu beschleunigen. Dies ermöglicht es Unternehmen, ihre Kunden effektiv zu bedienen und auf dem Markt wettbewerbsfähiger zu werden. Einfach ausgedrückt geht es bei DevOps um die Abstimmung zwischen Entwicklung und IT-Betrieb mit besserer Kommunikation und Zusammenarbeit.

DevOps stellt sich eine Kultur vor, in der die Zusammenarbeit zwischen Entwicklungsteams, Betreibern und Geschäftsteams als entscheidend erachtet wird. Es geht nicht nur um Tools, denn DevOps in einem Unternehmen liefert auch kontinuierlich Mehrwert für die Kunden. Werkzeuge sind neben Menschen und Prozessen eine ihrer Säulen. DevOps erhöht die Fähigkeit von Organisationen, qualitativ hochwertige Lösungen in kürzester Zeit bereitzustellen. DevOps automatisiert außerdem alle Prozesse, vom Build bis zur Bereitstellung, Anwendung oder Produkt.

Die DevOps-Diskussion konzentriert sich auf die Beziehung zwischen Entwicklern, den Menschen, die ihren Lebensunterhalt mit dem Schreiben von Software verdienen, und den Betreibern, die für die Wartung dieser Software verantwortlich sind.

Herausforderungen für das Entwicklungsteam

Entwickler neigen dazu, enthusiastisch und bereit zu sein, neue Ansätze und Technologien zur Lösung organisatorischer Probleme zu implementieren. Allerdings stehen sie auch vor bestimmten Problemen:

  • Der Wettbewerbsmarkt erzeugt großen Druck, das Produkt pünktlich zu liefern.
  • Sie müssen sich um die Verwaltung von produktionsreifem Code und die Implementierung neuer Funktionen kümmern.
  • Der Veröffentlichungszyklus kann lang sein, daher muss das Entwicklungsteam vor der Bereitstellung von Anwendungen mehrere Annahmen treffen. In diesem Szenario wird mehr Zeit benötigt, um Probleme zu lösen, die während der Bereitstellung in einer Produktions- oder Testumgebung auftreten.

Herausforderungen für die Betriebsgruppe

Betriebsgruppen haben sich in der Vergangenheit auf die Stabilität und Zuverlässigkeit von IT-Diensten konzentriert. Aus diesem Grund suchen Betriebsteams nach Stabilität durch Änderungen bei Ressourcen, Technologien oder Ansätzen. Zu ihren Aufgaben gehören:

  • Verwalten Sie die Ressourcenzuteilung, wenn die Nachfrage steigt.
  • Umgang mit Designänderungen oder Anpassungen, die für die Anwendung in einer Produktionsumgebung erforderlich sind.
  • Diagnostizieren und lösen Sie produktionsbezogene Probleme nach der Selbstbereitstellung von Anwendungen.

Wie DevOps Entwicklungs- und Betriebsprobleme löst

Anstatt eine große Anzahl von Anwendungsfunktionen auf einmal bereitzustellen, versuchen Unternehmen herauszufinden, ob sie ihren Kunden über eine Reihe von Release-Iterationen eine kleine Anzahl von Funktionen bereitstellen können. Dieser Ansatz hat eine Reihe von Vorteilen wie bessere Softwarequalität, schnelleres Kundenfeedback usw. Dies wiederum sorgt für ein hohes Maß an Kundenzufriedenheit. Um diese Ziele zu erreichen, müssen Unternehmen:

  • Reduzieren Sie die Fehlerquote bei Neuveröffentlichungen
  • Erhöhen Sie die Bereitstellungshäufigkeit
  • Erzielen Sie im Falle einer neuen Anwendungsversion eine kürzere mittlere Wiederherstellungszeit.
  • Reduzieren Sie die Zeit für Korrekturen

DevOps kümmert sich um all diese Aufgaben und sorgt für eine reibungslose Bereitstellung. Unternehmen nutzen DevOps, um Leistungsniveaus zu erreichen, die noch vor wenigen Jahren undenkbar waren. Sie führen täglich Dutzende, Hunderte oder sogar Tausende von Bereitstellungen durch und bieten dabei erstklassige Zuverlässigkeit, Stabilität und Sicherheit. (Erfahren Sie mehr über Losgrößen und ihre Auswirkungen auf die Softwarebereitstellung).

DevOps versucht, verschiedene Probleme anzugehen, die sich aus früheren Methoden ergeben, darunter:

  • Isolierung der Arbeit von Entwicklungsteams und Betreibern
  • Testen und Bereitstellen als separate Phasen nach Design und Build, die länger dauern als Build-Zyklen.
  • Es wird zu viel Zeit für das Testen, Bereitstellen und Entwerfen aufgewendet, anstatt sich auf den Aufbau zentraler Geschäftsdienste zu konzentrieren
  • Manuelle Codebereitstellung führt zu Fehlern in der Produktion
  • Unterschiede in den Zeitplänen der Entwicklungs- und Betriebsteams führen zu zusätzlichen Verzögerungen

DevOps-Leitfaden für Anfänger

Konfrontation von DevOps, Agile und traditioneller IT

DevOps wird oft im Zusammenhang mit anderen IT-Praktiken diskutiert, insbesondere mit agiler und Wasserfall-IT-Infrastruktur.

Agile ist eine Reihe von Prinzipien, Werten und Methoden zur Erstellung von Software. Wenn Sie also beispielsweise eine Idee haben, die Sie in Software umsetzen möchten, können Sie auf agile Prinzipien und Werte zurückgreifen. Diese Software kann jedoch nur in einer Entwicklungs- oder Testumgebung ausgeführt werden. Sie möchten eine einfache, sichere Möglichkeit, Software schnell und wiederholbar in die Produktion zu bringen, und der Weg führt über DevOps-Tools und -Praktiken. Die agile Softwareentwicklung konzentriert sich auf Entwicklungsprozesse, wobei DevOps für die Entwicklung und Bereitstellung auf die sicherste und zuverlässigste Art und Weise verantwortlich ist.

Der Vergleich des traditionellen Wasserfallmodells mit DevOps ist eine gute Möglichkeit, die Vorteile von DevOps zu verstehen. Im folgenden Beispiel wird davon ausgegangen, dass die Anwendung in vier Wochen gestartet wird, die Entwicklung zu 85 % abgeschlossen ist, die Anwendung live ist und der Prozess des Kaufs von Servern für die Codeübermittlung gerade erst begonnen hat.

Traditionelle Prozesse
Prozesse in DevOps

Nachdem eine Bestellung für neue Server aufgegeben wurde, arbeitet das Entwicklungsteam an den Tests. Die Fokusgruppe arbeitet an der umfangreichen Dokumentation, die Unternehmen für die Bereitstellung der Infrastruktur benötigen.
Nach der Bestellung neuer Server arbeiten die Entwicklungs- und Betriebsteams gemeinsam an den Prozessen und Arbeitsabläufen für die Installation neuer Server. Dadurch können Sie die Infrastrukturanforderungen besser verstehen.

Verzerrte Informationen zu Failover, Redundanz, Standort des Rechenzentrums und Speicheranforderungen fehlen. Ein Entwicklungsteam, das über fundierte Kenntnisse der Anwendung verfügt, fehlt.
Dank des Beitrags des Entwicklungsteams sind detaillierte Informationen zu Failover, Redundanz, Notfallwiederherstellung, Rechenzentrumsstandorten und Speicheranforderungen bekannt und korrekt.

Die Task Force hat keine Ahnung vom Fortschritt des Entwicklungsteams. Sie entwickelt außerdem einen Überwachungsplan basierend auf ihren eigenen Vorstellungen.

Die Task Force ist sich der Fortschritte des Entwicklungsteams voll bewusst. Sie interagiert auch mit dem Entwicklungsteam und sie entwickeln gemeinsam einen Überwachungsplan, der den IT- und Geschäftsanforderungen gerecht wird. Sie verwenden auch Tools zur Anwendungsleistungsüberwachung (APM).

Ein vor dem Start einer Anwendung durchgeführter Lasttest führt zum Absturz der Anwendung und verzögert den Start.
Ein vor dem Start der Anwendung durchgeführter Lasttest führt zu Leistungseinbußen. Das Entwicklungsteam beseitigt schnell Engpässe und die Anwendung startet pünktlich.

DevOps-Lebenszyklus

DevOps beinhaltet die Übernahme bestimmter allgemein anerkannter Praktiken.

Kontinuierliche Planung

Kontinuierliche Planung basiert auf den Lean-Prinzipien, um im Kleinen anzufangen, indem die Ressourcen und Ergebnisse ermittelt werden, die erforderlich sind, um den Wert des Unternehmens oder der Vision zu testen, sich kontinuierlich anzupassen, den Fortschritt zu messen, aus Kundenbedürfnissen zu lernen, bei Bedarf die Richtung zu ändern, um Agilität zu ermöglichen, und das Geschäft zu aktualisieren planen.

Gemeinsame Entwicklung

Der kollaborative Entwicklungsprozess ermöglicht es Unternehmen, Entwicklungsteams und Testteams über mehrere Zeitzonen hinweg, kontinuierlich hochwertige Software zu liefern. Dazu gehören die plattformübergreifende Entwicklung, die Unterstützung mehrsprachiger Programmierung, die Erstellung von User Storys, die Ideenfindung und das Lebenszyklusmanagement. Die kollaborative Entwicklung umfasst den Prozess und die Praxis der kontinuierlichen Integration, die eine häufige Codeintegration und automatisierte Builds fördert. Durch das häufige Einfügen von Code in eine Anwendung werden Integrationsprobleme frühzeitig im Lebenszyklus erkannt (wenn sie einfacher zu beheben sind) und der Gesamtintegrationsaufwand wird durch kontinuierliches Feedback reduziert, da das Projekt kontinuierliche und nachweisbare Fortschritte zeigt.

Kontinuierliche Tests

Kontinuierliches Testen reduziert die Testkosten, indem es Entwicklungsteams hilft, Geschwindigkeit und Qualität in Einklang zu bringen. Darüber hinaus beseitigt es Testengpässe durch Servicevirtualisierung und erleichtert die Erstellung virtualisierter Testumgebungen, die problemlos gemeinsam genutzt, bereitgestellt und aktualisiert werden können, wenn sich Systeme ändern. Diese Funktionen reduzieren die Kosten für die Bereitstellung und Wartung von Testumgebungen und verkürzen die Testzykluszeit, sodass Integrationstests früh im Lebenszyklus durchgeführt werden können.

Kontinuierliche Veröffentlichung und Bereitstellung

Diese Methoden bringen eine der Kernpraktiken mit sich: kontinuierliche Veröffentlichung und Bereitstellung. Dadurch entsteht eine kontinuierliche Pipeline, die wichtige Prozesse automatisiert. Es reduziert manuelle Schritte, Ressourcenwartezeiten und Nacharbeit, indem es die Bereitstellung auf Knopfdruck für mehr Releases, weniger Fehler und vollständige Transparenz ermöglicht.

Automatisierung spielt eine Schlüsselrolle bei der Gewährleistung einer stabilen und zuverlässigen Softwareversion. Eine der größten Herausforderungen besteht darin, manuelle Prozesse wie Build, Regression, Bereitstellung und Infrastruktur zu automatisieren. Dies erfordert eine Versionskontrolle des Quellcodes; Test- und Bereitstellungsszenarien; Anwendungsinfrastruktur und Konfigurationsdaten; sowie die Bibliotheken und Pakete, von denen die Anwendung abhängt. Ein weiterer wichtiger Faktor ist die Möglichkeit, den Status aller Umgebungen abzufragen.

Kontinuierliche Überwachung

Die kontinuierliche Überwachung bietet unternehmensgerechte Berichte, die Entwicklungsteams helfen, die Verfügbarkeit und Leistung von Anwendungen in einer Produktionsumgebung zu verstehen, bevor sie in der Produktion bereitgestellt werden. Das frühzeitige Feedback durch kontinuierliche Überwachung ist entscheidend, um die Kosten von Fehlern zu reduzieren und Projekte in die richtige Richtung zu halten. Zu dieser Praxis gehören häufig Überwachungstools, die tendenziell Metriken zur Anwendungsleistung offenlegen.

Ständiges Feedback und Optimierung

Kontinuierliches Feedback und Optimierung sorgen für eine visuelle Darstellung des Kundenflusses und lokalisieren Problembereiche. Feedback kann sowohl in der Vorverkaufs- als auch in der Postproduktionsphase einbezogen werden, um den Wert zu maximieren und sicherzustellen, dass noch mehr Transaktionen erfolgreich abgeschlossen werden. All dies bietet einen sofortigen Einblick in die Grundursache von Kundenproblemen, die sich auf ihr Verhalten und ihre Auswirkungen auf das Unternehmen auswirken.

DevOps-Leitfaden für Anfänger

Vorteile von DevOps

DevOps kann dabei helfen, eine Umgebung zu schaffen, in der Entwickler und Betreiber als Team zusammenarbeiten, um gemeinsame Ziele zu erreichen. Ein wichtiger Meilenstein in diesem Prozess ist die Einführung von Continuous Integration und Continuous Delivery (CI/CD). Diese Techniken werden es Teams ermöglichen, Software schneller und mit weniger Fehlern auf den Markt zu bringen.

Die wichtigsten Vorteile von DevOps sind:

  • Vorhersehbarkeit: DevOps bietet deutlich geringere Fehlerraten bei neuen Releases.
  • Wartbarkeit: DevOps ermöglicht eine einfache Wiederherstellung im Falle von Fehlern in einer neuen Version oder beim Herunterfahren einer Anwendung.
  • Reproduzierbarkeit: Mit einem Versionskontrollsystem für eine Assembly oder einen Code können Sie bei Bedarf frühere Versionen wiederherstellen.
  • Höhere Qualität: Die Lösung von Infrastrukturproblemen verbessert die Qualität der Anwendungsentwicklung.
  • Time-to-Market: Die Optimierung der Softwarebereitstellung verkürzt die Time-to-Market um 50 %.
  • Risikominderung: Durch die Gewährleistung der Sicherheit im Software-Lebenszyklus wird die Anzahl der Fehler im gesamten Lebenszyklus reduziert.
  • Kosteneffizienz: Das Streben nach Kosteneffizienz in der Softwareentwicklung ist für die Geschäftsleitung attraktiv.
  • Stabilität: Das Softwaresystem ist stabiler, sicherer und Änderungen können getestet werden.
  • Eine größere Codebasis wird in überschaubare Teile zerlegt: DevOps basiert auf agilen Entwicklungspraktiken, die es Ihnen ermöglichen, eine große Codebasis in kleinere, überschaubare Teile zu zerlegen.

DevOps-Prinzipien

Die Einführung von DevOps hat mehrere Prinzipien hervorgebracht, die sich weiterentwickelt haben (und weiterhin weiterentwickeln). Die meisten Lösungsanbieter haben ihre eigenen Modifikationen der verschiedenen Methoden entwickelt. Alle diese Prinzipien basieren auf einem ganzheitlichen DevOps-Ansatz und können von Unternehmen jeder Größe genutzt werden.

Entwickeln und testen Sie in einer produktionsähnlichen Umgebung

Der Sinn besteht darin, Entwicklungs- und Qualitätssicherungsteams (QA) die Möglichkeit zu geben, Systeme zu entwickeln und zu testen, die sich wie Produktionssysteme verhalten, damit sie sehen können, wie sich die Anwendung verhält und gut leistet, bevor sie für die Bereitstellung bereit ist.

Die Anwendung sollte so früh wie möglich im Lebenszyklus mit Produktionssystemen verbunden werden, um drei potenzielle Hauptprobleme zu lösen. Erstens ermöglicht es Ihnen, die Anwendung in einer Umgebung zu testen, die der realen Umgebung nahe kommt. Zweitens ermöglicht es Ihnen, Anwendungsbereitstellungsprozesse im Voraus zu testen und zu validieren. Drittens ermöglicht es dem Betriebsteam, früh im Lebenszyklus zu testen, wie sich seine Umgebung verhält, wenn Anwendungen bereitgestellt werden, und so eine hochgradig anpassbare, anwendungsorientierte Umgebung zu erstellen.

Bereitstellung mit reproduzierbaren, zuverlässigen Prozessen

Dieses Prinzip ermöglicht es Entwicklungs- und Betriebsteams, agile Softwareentwicklungsprozesse über den gesamten Lebenszyklus hinweg aufrechtzuerhalten. Automatisierung ist entscheidend für die Schaffung iterativer, zuverlässiger und reproduzierbarer Prozesse. Daher muss die Organisation eine Lieferpipeline erstellen, die eine kontinuierliche, automatisierte Bereitstellung und Prüfung ermöglicht. Durch die häufige Bereitstellung können Teams außerdem Bereitstellungsprozesse testen und so das Risiko von Bereitstellungsfehlern während tatsächlicher Releases verringern.

Überwachung und Überprüfung der Arbeitsqualität

Unternehmen können Produktionsanwendungen gut überwachen, weil sie über Tools verfügen, die Metriken und Key Performance Indicators (KPIs) in Echtzeit erfassen. Dieses Prinzip verschiebt die Überwachung früh im Lebenszyklus und stellt sicher, dass automatisierte Tests die funktionalen und nichtfunktionalen Attribute einer Anwendung frühzeitig im Prozess verfolgen. Immer wenn eine Anwendung getestet und bereitgestellt wird, müssen die Qualitätsmetriken untersucht und analysiert werden. Überwachungstools warnen frühzeitig vor Leistungs- und Qualitätsproblemen, die während der Produktion auftreten können. Diese Indikatoren sollten in einem Format erfasst werden, das für alle Beteiligten zugänglich und verständlich ist.

Feedbackschleifen verbessern

Eines der Ziele von DevOps-Prozessen besteht darin, Unternehmen in die Lage zu versetzen, schneller zu reagieren und Änderungen vorzunehmen. Bei der Bereitstellung von Software erfordert dieses Ziel, dass die Organisation frühzeitig Feedback erhält und dann schnell aus jeder ergriffenen Maßnahme lernt. Dieses Prinzip verlangt von Organisationen, Kommunikationskanäle zu schaffen, die es Stakeholdern ermöglichen, auf Feedback zuzugreifen und zu interagieren. Die Entwicklung kann durch Anpassung ihrer Projektpläne oder Prioritäten erfolgen. Die Fertigung kann durch die Verbesserung der Arbeitsumgebung etwas bewirken.

Entwickler

  • Planung: Kanboard, Wekan und andere Trello-Alternativen GitLab, Tuleap, Redmine und andere JIRA-Alternativen Mattermost, Roit.im, IRC und andere Alternativen zu Slack.
  • Code schreiben: Git, Gerrit, Bugzilla; Jenkins und andere Open-Source-CI/CD-Tools
  • Montage: Apache Maven, Gradle, Apache Ant, Packer
  • Prüfungen: JUnit, Gurke, Selenium, Apache JMeter

Ops

  • Release, Bereitstellung, Betrieb: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper usw., Netflix Archaius, Terraform
  • Überwachung: Grafana, Prometheus, Nagios, InfluxDB, Fluentd und mehr werden in diesem Handbuch behandelt

(* Die Tools für Vorgänge wurden in der Reihenfolge ihrer Verwendung durch die Betriebsbefehle nummeriert, ihre Tools überschneiden sich jedoch mit den Lebenszyklusphasen der Release- und Bereitstellungstools. Die Nummerierung wurde zur besseren Lesbarkeit entfernt.)

Abschließend

DevOps ist eine immer beliebter werdende Methodik, die darauf abzielt, Entwickler und Betreiber zusammenzubringen. Es ist einzigartig, unterscheidet sich vom herkömmlichen IT-Betrieb und ergänzt Agile (aber nicht so flexibel).

DevOps-Leitfaden für Anfänger

Erfahren Sie Einzelheiten darüber, wie Sie einen begehrten Beruf von Grund auf erlernen oder in Bezug auf Fähigkeiten und Gehalt aufsteigen können, indem Sie kostenpflichtige Online-Kurse von SkillFactory absolvieren:

weitere Kurse

nützlich

Source: habr.com

Kommentar hinzufügen