NetApp.com

In diesen Browsern funktioniert unsere Website am optimalsten: Google Chrome, Microsoft Edge, Mozilla FireFox und Apple Safari.

1

Was ist DevOps?

DevOps ist eine eine neue Philosophie und ein Konzept für eine schnellere und bessere Applikationsentwicklung sowie eine schnellere Freigabe neuer bzw. überarbeiteter Softwarefunktionen oder -produkte.

DevOps fördert die reibungslose, kontinuierliche Kommunikation, Zusammenarbeit, Integration sowie Sichtbarkeit und Transparenz zwischen Applikationsentwicklungsteams (dem Development – Dev) und den zugehörigen IT-Betriebsteams (Operations – Ops).

Diese engere Arbeitsbeziehung zwischen „Dev“ und „Ops“ durchdringt jede Phase des DevOps-Lebenszyklus von der anfänglichen Softwareplanung über das Codieren, Entwickeln, Testen und Freigeben bis hin zu den Phasen Bereitstellung, Betrieb und laufende Überwachung. Rückmeldungen von Kunden fließen kontinuierlich in Abläufe zur Optimierung, Entwicklung, Überprüfung und Implementierung ein. Eines der Ergebnisse ist die schnellere, kontinuierliche Bereitstellung der notwendigen Funktionsänderungen oder -ergänzungen.

Die DevOps-Ziele lassen sich in vier Kategorien unterteilen: Kultur, Automatisierung, Messung und Weitergabe (Culture, Automation, Measurement, Sharing – CAMS). In all diesen Bereichen können DevOps-Tools sinnvoll eingesetzt werden. Durch die Tools werden Effizienz und Zusammenarbeit bei Softwareentwicklung und -betrieb gefördert; zeitaufwendige manuelle oder statische Aufgaben im Zusammenhang mit Integration, Entwicklung, Tests, Implementierung und Monitoring werden automatisiert.

So fördert Code Infrastrukturinvestitionen

Bedeutung von DevOps

Im Wesentlichen geht es bei DevOps darum, die Kundenzufriedenheit zu steigern und einen schnelleren Nutzen zu erzielen. Dazu sollen Kommunikations- und Kooperationsbarrieren zwischen den für Entwicklung und IT-Betrieb zuständigen Teams überwunden werden. DevOps ist außerdem darauf ausgelegt, geschäftliche Innovationen und kontinuierliche Prozessverbesserungen zu fördern.

DevOps-Verfahren ermöglichen eine schnellere, bessere und sicherere Wertschöpfung für die Endkunden von Unternehmen. Diese Wertschöpfung kann sich beispielsweise aus einer häufigeren Veröffentlichung neuer Produktversionen, Funktionen oder Updates ergeben. Neue Produktversionen bzw. -funktionen sind für Kunden dann schneller nutzbar – immer mit angemessener Qualität und Sicherheit. Der Schwerpunkt kann auch darauf liegen, Probleme oder Fehler schneller zu erkennen und zu beheben.

Die zugrunde liegende Infrastruktur unterstützt DevOps mit nahtloser Performance, Verfügbarkeit und Zuverlässigkeit der Software von der Entwicklung über die Testphase bis hin zur Produktionsfreigabe.

DevOps-Methoden

Unternehmen können einige gängige DevOps-Methoden einsetzen, um die Entwicklung und Produktfreigabe zu beschleunigen und zu verbessern. Beispiele dafür sind die beliebten Verfahren Scrum, Kanban und Agile:

  • Scrum: Scrum legt fest, wie Teammitglieder zusammenarbeiten, um Entwicklungs- und Qualitätssicherungsprojekte zu beschleunigen. Zu Scrum gehören wichtige Workflows und spezifische Begriffe (Sprints, Timeboxen, Daily Scrum) ebenso wie bestimmte Rollen (Scrum Master, Product Owner).
  • Kanban: Kanban hat seinen Ursprung in den Effizienzsteigerungen, die bei der Toyota-Produktion erzielt wurden. Kanban sieht vor, dass der jeweils aktuelle Status eines Softwareprojekts auf einer Kanban-Tafel erfasst und nachverfolgt wird.
  • Agile: Frühere agile Softwareentwicklungsmethoden haben einen starken Einfluss auf DevOps-Verfahren und -Tools. Viele DevOps-Methoden, auch Scrum und Kanban, enthalten Elemente der agilen Programmierung. Einige agile Verfahren führen zu einer schnelleren Reaktion auf veränderten Bedarf – mit Dokumentierung der Anforderungen in Form von Benutzerberichten, mit täglichen Meetings und der kontinuierlichen Einbindung von Kundenrückmeldungen. Agile schreibt zudem kürzere Softwareentwicklungszyklen vor, die langwierige herkömmliche „Wasserfall“-Entwicklungsmethoden ersetzen.

DevOps-Toolchain

Nutzer von DevOps-Verfahren setzen im Rahmen ihrer DevOps-Toolchain oft bestimmte DevOps-freundliche Tools ein. Ziel dieser Tools ist es, die verschiedenen Phasen des Workflows zur Softwarebereitstellung (auch als Pipeline bezeichnet) noch stärker zu straffen, zu verkürzen und zu automatisieren. Viele derartige Tools sind auch an wesentlichen DevOps-Grundsätzen wie Automatisierung, Zusammenarbeit und Integration zwischen Entwicklungs- und Betriebsteam ausgerichtet. Hier einige Beispiele für Tools, die in unterschiedlichen Phasen des DevOps-Lebenszyklus genutzt werden.

  • Planen: In dieser Phase werden der geschäftliche Nutzen und die geschäftlichen Anforderungen festgelegt. Tools wie Jira oder Git helfen dabei, bekannte Probleme nachzuverfolgen, und unterstützen das Projektmanagement.
  • Codieren: In dieser Phase stehen das Softwaredesign und die Erstellung von Softwarecode im Mittelpunkt. Tools dafür sind beispielsweise GitHub, GitLab, Bitbucket oder Stash.
  • Entwickeln: In dieser Phase werden Softwarebuilds und -versionen verwaltet. Automatisierte Tools unterstützen das Kompilieren und Packen von Code für künftige Produktionsfreigaben. Mithilfe von Quellcode-Repositorys oder Paket-Repositorys wird außerdem die zur Produktfreigabe benötigte Infrastruktur „verpackt“. Beispiel-Tools sind Docker, Ansible, Puppet, Chef, Gradle, Maven und JFrog Artifactory.
  • Testen: In dieser Phase wird durch kontinuierliches Testen (manuell oder automatisiert) eine optimale Codequalität gesichert. Beispiel-Tools sind JUnit, Codeception, Selenium, Vagrant, TestNG und BlazeMeter.
  • Implementieren: In dieser Phase können Tools genutzt werden, die das Managen, Koordinieren, Planen und Automatisieren von Produktversionen für die Produktion unterstützen. Beispiel-Tools sind Puppet, Chef, Ansible, Jenkins, Kubernetes, OpenShift, OpenStack, Docker und Jira.
  • Betrieb: In dieser Phase geht es um das Management der Software während der Produktion. Beispiel-Tools sind Ansible, Puppet, PowerShell, Chef, Salt und Otter.
  • Überwachung: In dieser Phase werden Informationen über Probleme mit bestimmten Softwareversionen in der Produktion erkannt und erfasst. Beispiel-Tools sind New Relic, Datadog, Grafana, Wireshark, Splunk, Nagios und Slack.

DevOps-Verfahren

DevOps ist ein Konzept zur kontinuierlichen Optimierung und Automatisierung. Bei zahlreichen dieser Verfahren stehen eine oder mehrere Phasen des Entwicklungszyklus im Mittelpunkt. Hier einige Beispiele:

  • Kontinuierliche Weiterentwicklung: Hiermit werden die Planungs- und Codierungsphase im DevOps-Lebenszyklus abgedeckt. Auch Mechanismen zur Versionskontrolle können dazugehören.
  • Kontinuierliche Tests: Während des Schreibens bzw. Aktualisierens von Applikationscode werden automatisierte, vorgeplante, dauerhafte Codetests durchgeführt. Mit diesen Tests wird die Überführung von Code in die Produktion beschleunigt.
  • Kontinuierliche Integration: Hier werden Konfigurationsmanagement-Tools mit anderen Tools für Test und Entwicklung kombiniert, um nachzuvollziehen, in welchem Umfang der entwickelte Code produktionsbereit ist. Zwischen Test und Entwicklung gibt es dabei schnelle Rückmeldungen, damit Codeprobleme rasch erkannt und behoben werden.
  • Kontinuierliche Bereitstellung: Hierdurch wird im Anschluss an Tests die Bereitstellung von Codeänderungen in einer Vorproduktions- oder einer Staging-Umgebung automatisiert. Danach kann ein Mitarbeiter über die Weitergabe der Codeänderungen an die Produktion entscheiden.
  • Kontinuierliche Implementierung: Ähnlich wie bei der kontinuierlichen Bereitstellung wird auch hier die Freigabe von neuem oder verändertem Code für die Produktion automatisiert. Unter Umständen werden Codeelemente bzw. Codeänderungen mehrmals täglich freigegeben. Container technologien wie Docker und Kubernetes können eine kontinuierliche Implementierung ermöglichen, da sie die Konsistenz des Codes über verschiedene Implementierungsplattformen und -umgebungen hinweg unterstützen.
  • Kontinuierliche Überwachung: Hierbei werden sowohl der eingesetzte Code als auch die zugrunde liegende Infrastruktur laufend überwacht. Fehler und Probleme gelangen in einer Feedback-Schleife zurück zum Entwicklungsteam.
  • Infrastruktur als Code: Dieses Verfahren kann in verschiedenen DevOps-Phasen zum Einsatz kommen, um die für die Softwarefreigabe erforderliche Provisionierung von Infrastruktur zu automatisieren. Entwickler fügen Infrastruktur-„Code“ aus ihren vorhandenen Entwicklungstools hinzu. Beispielsweise könnte so nach Bedarf ein Storage-Volume aus Docker, Kubernetes oder OpenShift erstellt werden. Betriebsteams haben durch dieses Verfahren die Möglichkeit, Umgebungskonfigurationen zu überwachen, Änderungen nachzuverfolgen und Rollbacks von Konfigurationen zu vereinfachen.

Vorteile von DevOps

Verfechter von DevOps führen verschiedene geschäftliche und technische Vorteile an, die die Kundenzufriedenheit steigern. Hier einige Beispiele:

  • Schnellere und bessere Produktbereitstellung
  • Schnellere Problemlösung und geringere Komplexität
  • Höhere Skalierbarkeit und Verfügbarkeit
  • Stabilere Betriebsumgebungen
  • Bessere Ressourcenauslastung
  • Stärkere Automatisierung
  • Besserer Einblick in Systemergebnisse
  • Mehr Innovationen

Geschichte von DevOps

Viele DevOps-Methoden für eine effizientere Softwareentwicklung und -bereitstellung basieren auf der agilen Softwareentwicklung und schlanken Programmierung. Allerdings entwickelte sich DevOps ursprünglich aus unterschiedlichen Basisbewegungen zur Harmonisierung der Aktivitäten von Entwicklern und ihren Kollegen im Betriebsteam.

In den frühen 2000er-Jahren wurde es notwendig, die Verfügbarkeit beliebter Websites wie Google und Flickr bei massiven Zugriffen sicherzustellen. So kam es zum Einsatz von Software Reliability Engineers (SREs) – im Softwarebetrieb tätigen Mitarbeitern, die in enger Zusammenarbeit mit Entwicklern dafür sorgen, dass die Websites nach der Produktionsfreigabe von Code einsatzbereit bleiben.

Im Jahr 2009 präsentierten die Flickr-Techniker John Allspaw und Paul Hammond ihre DevOps-artige Methodik auf einer Konferenz. Der Titel: „10+ Deploys per Day: Dev and Ops Cooperation at Flickr“ (Mehr als zehn Bereitstellungen pro Tag: Kooperation zwischen Dev und Ops bei Flickr). Im gleichen Jahr veranstaltete Patrick Debois den ersten „DevOps Day“ in Belgien. Das Hashtag #DevOps entstand, und rund um den Globus fanden weitere DevOps Days statt.

In den folgenden Jahren wurden branchenspezifische Tools und Frameworks (auch in Open-Source-Form) entwickelt und vorgeschlagen, um die DevOps-Ziele zu unterstützen.

NetApp und DevOps

NetApp fördert bessere Geschäftsergebnisse durch DevOps: Betriebsteams stellen mit weniger technischem Aufwand eine automatisierte Infrastruktur bereit, und Entwickler arbeiten reibungsloser in einer zuverlässigen Umgebung. Mit NetApp-Technologie können die im Unternehmen benötigten Services und Funktionen problemlos bereitgestellt werden, um die Entwicklerproduktivität in On-Premises- und Cloud-Umgebungen zu maximieren.

NetApp erleichtert Entwicklern, Testern, Qualitätsprüfern und Betriebsteams die Nutzung von Infrastrukturressourcen (etwa persistentem Storage) als Code, immer über vertraute Tools in der DevOps-Pipeline. Beispiele dafür sind NetApp Storage-APIs und IaC-Integrationen in Kombination mit Tools wie Puppet, Ansible, Docker, Kubernetes und OpenShift.

NetApp macht es aber nicht nur für Entwickler einfach, Storage als Code einzusetzen. Technologie von NetApp sorgt auch dafür, dass Betriebsteams problemlos Ressourcen für Mitarbeiter im Entwicklungs- und Testbereich provisionieren und bereitstellen können. Entwickler und Tester haben dann die Möglichkeit, die Codierungs- und Testzyklen durch Selbstprovisionierung schneller, zeitsparender Storage-Funktionen wie Snapshots oder Cloning zu beschleunigen. Mit derartigen Funktionen können Kopien von Echtzeit-Produktionsdaten oder Codesets binnen weniger Sekunden oder Minuten als Code provisioniert werden, sodass die Entwicklung und der Qualitätssicherungsworkflow schneller werden.

Das Engagement von NetApp erstreckt sich auch auf thePub. Diese Entwickler-Community fördert die Zusammenarbeit und bietet Tipps, Tricks sowie Ideen rund um die neuesten DevOps-Praktiken und -Protokolle.

Weitere Informationen zu DevOps