DevOps für Software und Hardware

Was ist DevOps?

Es gibt verschiedene Interpretationen von DevOps (development and operations). Im Grunde existieren bereits viele Merkmale dieses Konzepts in den meisten gut funktionierenden Cloud-Organisationen. Unter diesem Gesichtspunkt ist DevOps eher eine Evolution, denn eine Revolution in der Funktionsweise des IT-Sektors eines Unternehmens.

DevOps kann aus drei Blickwinkeln betrachtet werden – Menschen, Prozesse und Technologien. Durch das Prisma der menschlichen Beziehungen gesehen, ist DevOps eine Philosophie, die traditionelle organisatorische Silos aufbrechen will, insbesondere die strikte Trennung von Teams, die sich mit Anwendungsentwicklung und Infrastrukturmanagement befassen. Es ist üblich, Entwicklungsteams als Boten des Wandels und Verwaltungsteams als Hüter der Stabilität, eben als zwei Teams mit entgegengesetzten Zielen zu sehen, was zu Ineffizienz führt. Der DevOps-Ansatz ändert das. Wenn es um Prozesse geht, integriert DevOps agile Entwicklungsprinzipien in den Modus. Standardmäßig werden agile Prinzipien verwendet, um kontinuierlich den Code für die Produktionsumgebung zu erstellen, aber bei DevOps wird dieses Denken auf die Verwaltung der gesamten Infrastruktur übertragen.

Letztlich geht es bei DevOps um die Anwendung einer Vielzahl von Technologien, die einen effizienteren Betrieb und eine Automatisierung ermöglichen, wann immer sie verfügbar sind. Daher wird Git zur Verwaltung des Quellcodes, zur Anzeige von Gerrit-Code und zur Verwaltung von Konfigurationswerkzeugen wie Puppet, Shef, Ansible und SaltStack verwendet. Die technologische Basis für den DevOps-Modus umfasst VMware vRealize Code-Stream-Tools für die Veröffentlichung von Anwendungen sowie vRealize Automation und vRealize Operations für die Ressourcenzuweisung und die Überwachung der Infrastruktur.

Warum benötigen Unternehmen DevOps?

Durch die ständigen und sich ändernden technologischen Trends gibt es einen starken Wettbewerb, und jedes Unternehmen möchte vorankommen und seine Konkurrenten übertreffen. Unternehmen wollen ihre neuen Funktionen so schnell wie möglich veröffentlichen. Dies kann durch DevOps schnell erreicht werden. DevOps beinhaltet agile Praktiken und eliminiert Engpässe, wodurch die Software-Bereitstellung so einfach und unkompliziert wie möglich ist. Daher sollte jedes softwarebasierte Unternehmen heute DevOps einsetzen.

Von DevOps verwendete übliche Praktiken

Im Folgenden sind einige der wichtigsten Praktiken aufgeführt, die DevOps anwendet.

Automatisierung

DevOps verlässt sich vollständig auf die Automatisierung und die Werkzeuge, mit denen es implementiert werden kann. Wenn es Aufgaben gibt, die häufig auf die gleiche Weise ausgeführt werden und identische Ergebnisse liefern, gibt es keinen Grund, Zeit zu verschwenden und sie jedes Mal manuell auszuführen. Das spart nicht nur Zeit, es vermeidet auch mögliche menschliche Fehler. Wenn es um die Entwicklung geht, ist die Automatisierung sehr wichtig. Eines der am häufigsten verwendeten Werkzeuge ist Vagrant. Mit diesem Werkzeug kann die Entwicklungsumgebung schnell und einfach optimiert werden. Es ist von größter Wichtigkeit für jeden Entwickler, ein fertiges Bild mit einem vorinstallierten System und allen notwendigen Komponenten zu erhalten, welches es ihm ermöglicht, sich innerhalb von 15 Minuten auf die Entwicklung zu konzentrieren. Darüber hinaus ist eines der Werkzeuge, das bei den Ingenieuren von DevOps zum Standard gehört, Jenkins – ein Werkzeug, das die Schaffung so genannter Jobs für die kontinuierliche Integration, kontinuierliche Lieferung, kontinuierliche Tests und ähnliches ermöglicht.

Wasserfall Entwicklung

Vor der eigentlichen Integration würden die Entwicklungsteams über drei bis vier Monate hinweg einen riesigen Satz Codes schreiben. Anschließend setzten diese Teams ihren Code zusammen, um ihn zu veröffentlichen. Die verschiedenen Versionen des Codes wären so unterschiedlich und hätten so viele Änderungen, dass der eigentliche Integrationsschritt Monate dauern könnte. Dieser Prozess ist sehr unproduktiv, deshalb wird die Wasserfall-Entwicklung verwendet, um die Projektaktivitäten in linear aufeinander folgende Phasen zu unterteilen, wobei jede Phase von den Ergebnissen der vorhergehenden abhängt und der Aufgabenspezialisierung entspricht.

Kontinuierliche Integration

Dies ist eine der wichtigsten Praktiken bei DevOps, was im Wesentlichen bedeutet: so oft wie möglich den Code, an dem gearbeitet wird festzuschreiben, zu übertragen und zusammenzuführen. Für jede Aufgabe erstellt der Entwickler einen separaten, so genannten Feature-Zweig, der nach den gewünschten Änderungen und den grundlegendsten Tests seinerseits zunächst in das entfernte Repository geschoben wird, um den Zweig für andere sichtbar zu machen, aber auch in eine größere Codebasis einzubinden. Dieser Zyklus in der agilen Entwicklung wird natürlich mehrmals täglich wiederholt – je nach Arbeitsvolumen einer bestimmten Aufgabe. Das bedeutet eigentlich, dass jeder Entwickler aktiv überwachen muss, was der Rest des Teams tut, um seinen Code nahtlos in andere zu integrieren, aber andererseits verbessert dieser Ansatz die Kommunikation im Team erheblich und ermöglicht es, einen fehlerhaften Code so früh wie möglich zu identifizieren und zu korrigieren.

Kontinuierliche Tests

Wie es Scrum vorschreibt, ist für die Vorabveröffentlichung immer mindestens eine Woche zum Testen aktiver Funktionen vorgesehen. Wie auch beim früheren Arbeiten sollte das Testen jedoch eine kontinuierliche Zusammenarbeit zwischen dem Entwickler und dem QA-Ingenieur darstellen. Außerdem bedeutet das Testen im DevOps-Kontext nicht das klassische Click-to-Click-Testen – die Automatisierung ist der Schlüssel. Natürlich ist daran nichts auszusetzen, jedes Team muss über QA-Mitarbeiter verfügen, die die Anwendung kontinuierlich durchlaufen und feststellen, dass sie sich entsprechend den Anforderungen verhält. Zu den neueren Praktiken gehört jedoch auch die testgetriebene Entwicklung, automatisierte Tests also, die ebenfalls durch ein Tool wie Jenkins laufen, normalerweise nach jedem Aufbau. Auf diese Weise ist es einfacher kritische Merkmale sofort zu identifizieren und aus der Codebasis zu entfernen, bevor ein größerer Schaden entsteht. Auf der anderen Seite werden nicht nur neue Funktionen getestet. Es gibt auch Belastungs-, Stress- und einige andere Tests, die automatisch zeigen, wie sich eine Anwendung unter bestimmten Umständen verhält.

Kontinuierliche Bereitstellung

Diese Praxis baut auf den beiden vorherigen auf und stellt die Bereitstellung von stabilem und vollständig getestetem Produktionscode dar, mit dem Ziel, diesen so kurz wie möglich zu halten. Die Zeitspanne sollte zwischen den beiden Entwicklungen liegen, was in der Regel von der Veröffentlichung des individuellen Produktplans abhängt. Grundsätzlich erfolgt die Auslieferung am Ende jedes Sprints, was bedeutet, dass sie einmal pro Monat oder einmal in anderthalb Monaten erfolgt.

Monitoring

Nach der Einrichtung und Inbetriebnahme ist der nächste Schritt die Überwachung. Hierbei geht es natürlich um die Automatisierung und die Tools, eigene Tools, Open-Source-Tools, proprietäre Tools. Im Endeffekt muss man die Produktionsarbeit ständig überwachen und messbare Ergebnisse erzielen, mit denen man viele unerwünschte Dinge verhindern oder die Umgebung im nächsten Zyklus verbessern kann. Allerdings erfolgt die Überwachung nicht nur seitens des Ops-Teams – jedes Teammitglied könnte die Produktionsumgebung überwachen und auf der Grundlage der gezeigten Informationen schließen, wie sich die Umgebung verhält und was sie in diesem Moment tut. Wenn es sich beispielsweise um eine Webanwendung handelt, können Sie die Leistung aller derzeit aktiven Server leicht überwachen und, falls erforderlich, ein Scale-up / -down durchführen, um die gewünschte Reaktionsfähigkeit bei minimalen Kosten aufrechtzuerhalten. Andererseits sollten immer Alarmsysteme vorgesehen werden, die das Ops-Team benachrichtigen, wenn es zu Ausfallzeiten oder Problemen an Schlüsselpunkten in Ihrem System kommt (z.B. Erkennung von Deadlocks usw.).

Was ist das Ziel von DevOps?

DevOps ist dazu da, die Zusammenarbeit zwischen allen Beteiligten von der Planung, Lieferung und Automatisierung des Lieferprozesses zu verbessern, bis hin zu:

  • Verbesserung der durchschnittlichen Zeit bis zur Wiederherstellung
  • Verbesserung der Einsatzfrequenz
  • geringerer Ausfallrate bei Neuveröffentlichungen
  • Verkürzung der Vorlaufzeit zwischen den Korrekturen
  • schnellerem Erreichen der Markteinführung

Vorteile von DevOps

Sicherheit
Schnell handeln und gleichzeitig die Kontrolle und Einhaltung der Vorschriften gewährleisten. Ein Unternehmen kann das DevOps-Modell ohne Sicherheitseinbußen einführen, indem es automatisierte Compliance-Richtlinien, Feinkontrollen und Konfigurationsmanagementtechniken einsetzt. Mit Infrastruktur als Code und Richtlinie als Code kann die Konformität definiert und überwacht werden.

Geschwindigkeit
Unternehmen müssen Sie sich schneller bewegen und denken als ihre Konkurrenten, um Kunden zu begeistern, sich besser an sich verändernde Märkte anzupassen und effizienter zu wachsen, um beste Geschäftsergebnisse zu erzielen. Das DevOps-Modell ermöglicht es Entwicklern und Betriebsteams, diese Ergebnisse zu erreichen. Beispielsweise ermöglichen Mikrodienste und kontinuierliche Bereitstellung den Teams, sich die Dienste zu eigen zu machen und dann schneller Aktualisierungen zu veröffentlichen.

Zuverlässigkeit
Die Qualität der Anwendungsaktualisierungen und schnellere Änderungen der Infrastruktur werden sichergestellt, damit die Anwendungen zuverlässig und schneller bereitstehen und gleichzeitig eine positive Endbenutzererfahrung bieten können. Mit den Verfahren zur Nachverfolgung und Protokollierung bleibt man über die Echtzeit-Performance auf dem Laufenden. Verfahren wie die kontinuierliche Bereitstellung und die kontinuierliche Integration überprüfen, ob jede Änderung funktional und sicher ist.

Express-Lieferung
Die Häufigkeit und das Tempo der Veröffentlichungen wird erhöht, damit das Produkt schneller entwickelt und verbessert werden kann. Kontinuierliche Integration und kontinuierliche Lieferung sind sehr wichtige Praktiken, die den Software-Release-Prozess automatisieren. Umso schneller kann auf die Bedürfnisse der Kunden reagiert und ein Wettbewerbsvorteil erreicht werden.

Verbesserung der Zusammenarbeit
Eine verbesserte Zusammenarbeit nach dem DevOps-Modell bildet effizientere Teams. Werte wie Eigenverantwortung und Verantwortung werden gefördert. Entwickler und Betriebsteams arbeiten eng zusammen, teilen sich viele Verantwortlichkeiten und kombinieren ihre Arbeitsabläufe. Dies reduziert Ineffizienz und spart Zeit.

Meistgenutzte DevOps Technologien & Tools

Um all diese Vorteile zu erzielen, verwendet DevOs spezielle Werkzeuge:

  • GitHub
  • Docker
  • Jenkins
  • Consul
  • Curl
  • Samba
  • Cifs
  • Nfs
  • Zookeeper
  • Bash
  • Netstat
  • Htop
  • Iotop
  • Telnet
  • Ngrep
  • Ping

Unterschiede zwischen Hardware und Software DevOps

  • Software ist leichter zu ändern als Hardware. Die Kosten für Änderungen sind bei Hardware viel höher als bei Software.
  • Software-Produkte werden in mehreren Versionen entwickelt, indem neue Funktionen hinzugefügt und bestehende Logik neu geschrieben wird, um die neuen Funktionen zu unterstützen. Hardware-Produkte bestehen aus physischen Komponenten, die nach der Produktion nicht “umgebaut” werden können. Neue Funktionen können nicht hinzufügt werden und erfordern Hardware-Änderungen.
  • Entwürfe für neue Hardware basieren oft auf Produkten früherer Generationen, stützen sich aber in der Regel auf Komponenten neuer Generationen, die noch nicht vorhanden sind.
  • Hardware-Designs sind durch die Notwendigkeit der Installation von Standardteilen begrenzt.
  • Spezialisierte Hardwarekomponenten können eine viel längere Erwerbszeit haben als Software.
  • Das Hardware-Design bestimmt die architektonischen Entscheidungen. Im Vergleich zu Softwareprodukten muss im Vorfeld mehr architektonische Arbeit geleistet werden.
  • Die Kosten für die Entwicklung von Software sind im Laufe der Zeit relativ gering. Allerdings steigen die Kosten für die Entwicklung von Hardware am Ende des Entwicklungszyklus rasch an. Das Testen von Software erfordert in der Regel die Entwicklung von tausenden von Testfällen. Beim Testen von Hardware sind weit weniger Tests erforderlich.
  • Software-Tests werden von spezialisierten Qualitätssicherungs-Ingenieuren (KA) durchgeführt, während Hardware-Tests in der Regel von Ingenieuren für die Produktgestaltung durchgeführt werden.
  • Die Hardware muss so entworfen und getestet werden, dass sie in einer bestimmten Zeit und Umgebung funktioniert, was bei Software dagegen nicht der Fall ist.

Author: Miloš Denić

Ü: Annette Rühle

Neueste Beiträge

Beginnen Sie mit der Eingabe und drücken Sie Enter, um zu suchen