Ein Leitfaden für Anfänger zu DevOps

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



Bild



Es ist viel passiert, seit sich der Begriff DevOps in der IT-Welt festgesetzt hat. Bei so viel Open Source des Ökosystems ist es wichtig zu überdenken, warum es 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 Interaktion zwischen Entwicklungsteams und Betriebsteams ermöglicht, um Code schneller in Produktionsumgebungen bereitzustellen, mit Wiederholbarkeit und Automatisierung. Wir werden den Rest des Artikels damit verbringen, diese Aussage auszupacken.



Das Wort "DevOps" ist eine Verkettung der Wörter "Entwicklung" und "Operationen". DevOps beschleunigt die Bereitstellung von Anwendungen und Diensten. Dies ermöglicht es Unternehmen, ihre Kunden effektiv zu bedienen und auf dem Markt wettbewerbsfähiger zu werden. Kurz gesagt, bei DevOps geht es um die Konsistenz zwischen Entwicklung und IT-Betrieb mit einer effektiveren Kommunikation und Zusammenarbeit.



DevOps stellt sich eine Kultur vor, in der die Zusammenarbeit zwischen Entwicklungsteams, Betreibern und Geschäftsteams als kritischer Aspekt angesehen wird. Es geht nicht nur um Tools, denn DevOps in einem Unternehmen kommt auch den Kunden kontinuierlich zugute. Werkzeuge sind neben Menschen und Prozessen eine der Säulen. Mit DevOps können Unternehmen in kürzester Zeit qualitativ hochwertige Lösungen liefern. DevOps automatisiert auch alle Prozesse, vom Build bis zur Bereitstellung, Anwendung oder dem Produkt.



Die DevOps-Diskussion konzentriert sich auf die Beziehung zwischen Entwicklern, den Menschen, die Software fürs Leben schreiben, und den Betreibern, die für die Wartung dieser Software verantwortlich sind.



Herausforderungen für das Entwicklungsteam



Entwickler sind in der Regel begeistert und bereit, neue Ansätze und Technologien zur Lösung organisatorischer Probleme einzuführen. Sie stehen jedoch auch vor bestimmten Herausforderungen:



  • Der Wettbewerbsmarkt erzeugt einen großen Druck, das Produkt pünktlich zu liefern.
  • Sie sollten sich um die Verwaltung von produktionsbereitem Code und die Einführung neuer Funktionen kümmern.
  • Der Release-Zyklus kann lang sein, daher muss das Entwicklungsteam vor der Bereitstellung von Anwendungen mehrere Annahmen treffen. In einem solchen Szenario wird mehr Zeit benötigt, um die Probleme zu lösen, die während der Bereitstellung in einer Produktions- oder Testumgebung auftreten.


Herausforderungen für das Betriebsteam



Die Betriebsteams haben sich in der Vergangenheit auf die Stabilität und Zuverlässigkeit von IT-Services konzentriert. Aus diesem Grund bemühen sich die Betriebsteams um Stabilität durch Änderungen der Ressourcen, Technologien oder Ansätze. Ihre Aufgaben umfassen:



  • Verwalten der Ressourcenzuweisung bei steigender Nachfrage.
  • Behandeln Sie Design- oder Anpassungsänderungen, die in einer Produktionsumgebung angewendet werden müssen.
  • Diagnose und Behebung produktionsbedingter Probleme nach der Selbstbereitstellung von Anwendungen.


Wie DevOps Entwicklungs- und Betriebsherausforderungen löst



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



  • Reduzieren Sie die Absprungrate für Neuerscheinungen
  • Erhöhen Sie die Bereitstellungshäufigkeit
  • Erzielen Sie im Falle einer neuen Version der Anwendung eine schnellere durchschnittliche Wiederherstellungszeit.
  • Reduzieren Sie die Fixierzeit


DevOps erfüllt all diese Aufgaben und sorgt für eine unterbrechungsfreie Versorgung. Unternehmen verwenden DevOps, um Leistungsniveaus zu erreichen, die noch vor wenigen Jahren undenkbar waren. Sie führen Dutzende, Hunderte und sogar Tausende von Bereitstellungen pro Tag durch und bieten gleichzeitig erstklassige Zuverlässigkeit, Stabilität und Sicherheit. (Weitere Informationen zu Chargengrößen und deren Auswirkungen auf die Softwarebereitstellung).



DevOps versucht, eine Vielzahl von Problemen zu lösen, die sich aus früheren Methoden ergeben, darunter:



  • Isolierung von Entwicklungsteams und Betreibern
  • Testen und Bereitstellen in separaten Phasen, die nach dem Entwurf und der Erstellung durchgeführt werden und länger dauern als die Erstellungszyklen.
  • , -
  • ,
  • ,


Bild



DevOps, Agile IT



DevOps wird häufig im Zusammenhang mit anderen IT-Praktiken diskutiert, insbesondere einer flexiblen IT-Infrastruktur mit Wasserfall.



Agile ist eine Reihe von Prinzipien, Werten und Methoden der Softwareproduktion. Wenn Sie beispielsweise eine Idee haben, die Sie in Software umwandeln möchten, können Sie agile Prinzipien und Werte verwenden. Diese Software kann jedoch nur in einer Entwicklungs- oder Testumgebung ausgeführt werden. Sie benötigen eine einfache und sichere Methode, um Software schnell und wiederholt in die Produktion zu verlagern. Der Weg erfolgt über DevOps-Tools und -Techniken. Die agile Softwareentwicklung konzentriert sich auf Entwicklungsprozesse, während DevOps für die sicherste und zuverlässigste Entwicklung und Bereitstellung verantwortlich ist.



Der Vergleich des traditionellen Wasserfallmodells mit DevOps ist ein guter Weg, um die Vorteile von DevOps zu verstehen. Im folgenden Beispiel wird davon ausgegangen, dass die Anwendung in vier Wochen betriebsbereit sein wird, die Entwicklung zu 85% abgeschlossen ist, die Anwendung betriebsbereit ist und der Prozess des Kaufs von Servern zum Senden von Code gerade erst begonnen hat.



Traditionelle Prozesse Prozesse in DevOps
Nach der Bestellung neuer Server arbeitet das Entwicklungsteam an Tests. Die Task Force arbeitet an der umfassenden Dokumentation, die Unternehmen für die Bereitstellung der Infrastruktur benötigen. Nach der Bestellung neuer Server arbeiten Entwicklungs- und Bedienerteams gemeinsam an den Prozessen und dem Workflow für die Installation der neuen Server. Dies ermöglicht ein besseres Verständnis der Infrastrukturanforderungen.

, , , , . , , , .
. .

Das operative Team ist sich der Fortschritte des Entwicklungsteams voll bewusst. Sie interagiert auch mit dem Entwicklungsteam und sie entwickeln gemeinsam einen Überwachungsplan, der die IT- und Geschäftsanforderungen erfüllt. Sie verwenden auch APM-Tools (Application Performance Monitoring).

Ein Stresstest vor dem Starten einer Anwendung führt zum Absturz der Anwendung, wodurch der Start verzögert wird. Ein Stresstest, der vor dem Starten einer Anwendung durchgeführt wird, beeinträchtigt die Leistung. Das Entwicklungsteam beseitigt Engpässe schnell und die App wird pünktlich gestartet.




DevOps Lebenszyklus



DevOps beinhaltet die Übernahme bestimmter allgemein anerkannter Praktiken.



Kontinuierliche Planung



Kontinuierliche Planung basiert auf schlanken Prinzipien, um klein anzufangen, indem die Ressourcen und Ergebnisse ermittelt werden, die zur Validierung des Unternehmenswerts oder der Unternehmensvision erforderlich sind, kontinuierlich angepasst, Fortschritte gemessen, aus Kundenbedürfnissen gelernt, die Richtung nach Bedarf für Agilität geändert und erneuert werden. Geschäftsplan.



Gemeinsame Entwicklung



Der kollaborative Entwicklungsprozess ermöglicht es Unternehmen, Entwicklungsteams und Testteams in mehreren Zeitzonen, kontinuierlich hochwertige Software bereitzustellen. Dies umfasst plattformübergreifende Entwicklung, Unterstützung für mehrsprachige Programmierung, User Storytelling, Ideenentwicklung und Lebenszyklusmanagement. Die gemeinsame Entwicklung umfasst einen kontinuierlichen Integrationsprozess und eine kontinuierliche Integrationspraxis, die eine häufige Code-Integration und automatisierte Builds ermöglichen. Durch häufiges Einfügen von Code werden Integrationsprobleme früh im Lebenszyklus erkannt (wenn sie leichter zu beheben sind), und der Gesamtintegrationsaufwand wird durch kontinuierliches Feedback reduziert, da das Projekt einen kontinuierlichen und sichtbaren Fortschritt zeigt.



Kontinuierliche Prüfung



Kontinuierliche Tests reduzieren die Testkosten und helfen den Entwicklungsteams, ein Gleichgewicht zwischen Geschwindigkeit und Qualität herzustellen. Außerdem werden Testengpässe durch Servicevirtualisierung beseitigt und es wird einfach, virtualisierte Testumgebungen zu erstellen, die bei Systemänderungen problemlos freigegeben, bereitgestellt und aktualisiert werden können. Diese Funktionen reduzieren die Kosten für die Initialisierung und Wartung von Testumgebungen und verkürzen auch die Testzykluszeiten, indem Integrationstests früh im Lebenszyklus ermöglicht werden.



Kontinuierliche Freigabe und Bereitstellung



Diese Techniken bringen eine der Kernpraktiken mit sich: kontinuierliche Freigabe und Bereitstellung. Dies bietet einen kontinuierlichen Förderer, der wichtige Prozesse automatisiert. Es reduziert manuelle Schritte, Ressourcenlatenz und Nacharbeiten, indem Bereitstellungen auf Knopfdruck aktiviert werden, was zu mehr Releases, weniger Fehlern und vollständiger Transparenz führt.



Die Automatisierung spielt eine Schlüsselrolle bei der Gewährleistung einer stabilen und zuverlässigen Softwarebereitstellung. Eine der größten Herausforderungen besteht darin, manuelle Prozesse wie Build, Regression, Bereitstellung und Infrastruktur zu übernehmen und zu automatisieren. Dies erfordert eine Versionskontrolle des Quellcodes. Test- und Bereitstellungsskripte; Infrastruktur- und Anwendungskonfigurationsdaten; 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 liefert Berichte für Unternehmen, mit denen Entwicklungsteams die Verfügbarkeit und Leistung von Anwendungen in einer Produktionsumgebung verstehen können, bevor sie für die Produktion bereitgestellt werden. Frühzeitiges Feedback durch kontinuierliche Überwachung ist entscheidend, um die Kosten für Fehler zu senken und Projekte in die richtige Richtung zu lenken. Diese Vorgehensweise umfasst häufig Überwachungstools, die in der Regel Kennzahlen zur Anwendungsleistung anzeigen.



Ständiges Feedback und Optimierung



Kontinuierliches Feedback und Optimierung bieten eine visuelle Darstellung des Kundenflusses und eine genaue Identifizierung von Problembereichen. Feedback kann sowohl in der Vorverkaufs- als auch in der Nachproduktionsphase einbezogen werden, um den Wert zu maximieren und den erfolgreichen Abschluss von noch mehr Transaktionen sicherzustellen. All dies bietet eine sofortige Visualisierung der Hauptursache von Kundenproblemen, die sich auf deren Verhalten und Auswirkungen auf das Geschäft auswirken.



Bild



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 der kontinuierlichen Integration und kontinuierlichen Bereitstellung (CI / CD). Mit diesen Techniken können Teams Software mit weniger Fehlern schnell auf den Markt bringen.



Wichtige Vorteile von DevOps sind:



  • Vorhersagbarkeit: DevOps bietet deutlich niedrigere Ausfallraten für neue Versionen.
  • Wartbarkeit: DevOps bietet eine einfache Wiederherstellung im Falle eines neuen Release-Fehlers oder eines Anwendungsausfalls.
  • Reproduzierbarkeit: Mit einem Assembly- oder Code-Revisionskontrollsystem können Sie frühere Versionen nach Bedarf wiederherstellen.
  • Höhere Qualität: Die Lösung von Infrastrukturproblemen verbessert die Anwendungsentwicklung.
  • : 50%.
  • : .
  • : .
  • : , , .
  • : DevOps , .


DevOps



Die Einführung von DevOps hat mehrere Prinzipien hervorgebracht, die sich weiterentwickelt haben (und weiterentwickeln). Die meisten Lösungsanbieter haben ihre eigenen Modifikationen verschiedener Techniken entwickelt. Alle diese Prinzipien basieren auf einem ganzheitlichen Ansatz für DevOps, und Organisationen jeder Größe können sie verwenden.



Entwickeln und testen Sie in einer produktionsähnlichen Umgebung



Unter dem Strich können Entwicklungs- und Qualitätssicherungsteams Systeme entwerfen und testen, die sich wie Produktionssysteme verhalten, damit sie sehen können, wie sich die Anwendung verhält und funktioniert, lange bevor sie zur Bereitstellung bereit ist. ...



Eine Anwendung muss so früh wie möglich während ihres Lebenszyklus mit Produktionssystemen verbunden werden, um drei potenzielle Hauptprobleme zu lösen. Erstens können Sie Ihre Anwendung in einer Umgebung testen, die der realen Umgebung ähnelt. Zweitens können Sie die Anwendungsbereitstellungsprozesse im Voraus testen und überprüfen. Drittens kann das Betriebsteam auf diese Weise frühzeitig im Lebenszyklus überprüfen, wie sich die Umgebung bei der Bereitstellung von Anwendungen verhält, und so eine genau abgestimmte, anwendungsorientierte Umgebung erstellen.



Bereitstellung mit reproduzierbaren, zuverlässigen Prozessen



Dieses Prinzip ermöglicht es Entwicklungs- und Betreiberteams, agile Softwareentwicklungsprozesse über den gesamten Lebenszyklus aufrechtzuerhalten. Die Automatisierung ist entscheidend für die Erstellung iterativer, zuverlässiger und reproduzierbarer Prozesse. Daher muss die Organisation eine Bereitstellungspipeline erstellen, die eine kontinuierliche automatisierte Bereitstellung und Prüfung ermöglicht. Durch häufige Bereitstellungen können Teams auch Bereitstellungsprozesse testen, wodurch das Risiko von Bereitstellungsfehlern während realer Releases verringert wird.



Überwachung und Qualitätskontrolle der Arbeit



Unternehmen können Anwendungen in der Produktion gut überwachen, da sie über Tools verfügen, mit denen Metriken und Key Performance Indicators (KPIs) in Echtzeit erfasst werden. Dieses Prinzip ermöglicht eine frühzeitige Überwachung im Lebenszyklus und stellt sicher, dass automatisierte Tests die funktionalen und nicht funktionalen Attribute einer Anwendung frühzeitig im Prozess verfolgen. Jedes Mal, wenn eine Anwendung getestet und bereitgestellt wird, müssen Qualitätsmetriken überprüft und analysiert werden. Überwachungstools warnen frühzeitig vor Betriebs- und Qualitätsproblemen, die während der Produktion auftreten können. Diese Indikatoren sollten in einem Format gesammelt werden, das für alle Beteiligten zugänglich und verständlich ist.



Rückkopplungsschleifen verbessern



Eines der Ziele von DevOps-Prozessen ist es, Unternehmen zu ermöglichen, schneller zu reagieren und Änderungen schneller vorzunehmen. Bei der Softwarebereitstellung erfordert dieses Ziel, dass die Organisation frühzeitig Feedback erhält und dann schnell aus jeder ergriffenen Maßnahme lernt. Nach diesem Prinzip müssen Organisationen Kommunikationskanäle erstellen, über die Stakeholder auf der Grundlage von Feedback zugreifen und interagieren können. Die Entwicklung kann durch Anpassung der Projektpläne oder Prioritäten erfolgen. Die Fertigung kann durch Verbesserung des Arbeitsumfelds handeln.



Dev



  • Zeitplanung: Kanboard, Wekan und andere Trello-Alternativen GitLab, Tuleap, Redmine und andere JIRA-Alternativen; Mattermost, Roit.im, IRC und andere Slack-Alternativen.
  • : Git, Gerrit, Bugzilla; Jenkins CI/CD
  • : Apache Maven, Gradle, Apache Ant, Packer
  • : JUnit, Cucumber, Selenium, Apache JMeter




Ops



  • , , : Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform
  • : Grafana, Prometheus, Nagios, InfluxDB, Fluentd, ,


(* , . .)





DevOps ist eine zunehmend beliebte Methode, die Entwickler und Betreiber zu einem zusammenhängenden Ganzen zusammenführen soll. Es ist einzigartig, unterscheidet sich von herkömmlichen IT-Abläufen und ergänzt Agile (aber nicht so flexibel).



Bild



In den kostenpflichtigen Online-Kursen von SkillFactory erfahren Sie, wie Sie einen hochkarätigen Beruf von Grund auf neu aufbauen oder Ihre Fähigkeiten und Ihr Gehalt verbessern können:





mehr Kurse


Nützlich






All Articles