DevOps

DevOps: Was Sie über DevOps und den Einsatz des DevOps-Konzepts wissen sollten

Wenn Entwicklung und Betrieb im Spannungsverhältnis stehen, dann werden getrennte Teams mit je eigenem Selbstverständnis und unterschiedlichen Prinzipien, Konzepten und Tools zur grossen Herausforderung, und das nicht nur im IT-Bereich. Unweigerlich entstehen Konflikte oder Probleme, die einer schnellen, agilen Entwicklung und Bereitstellung neuer Anwendungen oder Software im Wege stehen. Mit DevOps können Unternehmen dieses Dilemma lösen und Entwicklung und Betrieb näher zusammenrücken lassen. Prozesse werden beschleunigt, ohne dass die Qualität der Arbeit darunter zu leiden hat.

Wir zeigen Ihnen, was sich hinter DevOps verbirgt, zeigen konkrete Technologien und Tools und Beispiele aus der Praxis.  

Was ist DevOps?

Das Wort DevOps setzt sich aus den Anfangsbuchstaben der beiden englischen Begriffe «Development» (Entwicklung) und «Operations» (Betrieb) zusammen. Es handelt sich um einen konzeptionellen Ansatz, der die Prozesse in der Softwareentwicklung und Systemadministration durch eine engere Verzahnung verbessert und beschleunigt. Es ist eine Antwort auf die Schwächen der traditionellen Softwareentwicklung, wie sie beispielsweise das klassische Wasserfallmodell aufweist. Entwicklung, Test und Betrieb sind um einiges enger miteinander vernetzt und durch kontinuierliche Rückmeldungen untereinander koordiniert. Ziele von DevOps sind die schnelle, agile Umsetzung neuer Anforderungen, kurze Releasezyklen und die Bereitstellung stabiler, hochwertiger Software.

Oft wird die Ausgestaltung des DevOps-Konzepts unterschiedlich interpretiert: Einige legen den Schwerpunkt mehr auf die Technologien, Tools und Arbeitsweisen, andere mehr auf Kultur, Management, Führung und Arbeitsphilosophie. Beide vereint, dass DevOps ein umfassendes Konzept ist und die Verzahnung verschiedener Bereiche betrifft. Soll DevOps im Unternehmen eingeführt werden, sind nicht nur Technologien, Tools und Arbeitsweisen anzupassen, sondern auch Unternehmenskultur, Führungsstil und Arbeitsphilosophie werden sich wandeln.

Zum Ende dieser Definition noch ein Hinweis: Mehr und mehr wird in den DevOps-Gedanken die IT-Security integriert. Das sogenannte DevSecOps erweitert das DevOps-Konzept um die Sicherheitsaspekte. DevSecOps ist eine konsequente Weiterführung des DevOps-Gedankens. 

Wie entstand das DevOps-Konzept?

In der Vergangenheit orientierte sich die klassische Softwareentwicklung an Modellen wie dem Wasserfallmodell. 

Beim Wasserfallmodell handelt es sich um ein lineares Modell mit den genau definierten, zeitlich aufeinander folgenden Entwicklungsschritten Anforderungsanalyse, Anwendungsdesign, Programmierung und Test. Nach dem Test erfolgt die Auslieferung an das Betriebsteam, welches die Anwendung in die Produktion überführt und für die Nutzung bereitstellt. Für jede neue Anforderung ist der gesamte Entwicklungsprozess neu zu durchlaufen. Zwischen Entwicklung und Betrieb gibt es nur die Auslieferungsschnittstelle und kaum Rückkopplungen. Aus diesen Gründen sind die Prozesse langsam und fehleranfällig. 

Für das moderne Anwendungsumfeld mit den sich rasant verändernden Anforderungen sind diese Kompromisse nicht mehr hinnehmbar. Um die Prozesse zu beschleunigen und die Produktqualität zu verbessern, ist eine engere Zusammenarbeit zwischen Softwareentwicklern und IT-Betrieb gefragt. Aus dem Wunsch einer agileren Softwareentwicklung ist der DevOps-Gedanke entstanden.

DevOps-Prinzipien und -Methoden

In gewisser Weise ähnelt DevOps dem Kaizen-Prinzip. Falls Ihnen Kaizen bisher nicht bekannt ist: Kaizen ist ein japanisches Wort und bedeutet im Deutschen "Verbesserung". Das Kaizen-Prinzip steht für ein Konzept, das zur kontinuierlichen Optimierung eines Prozesses alle beteiligten Funktionseinheiten und handelnden Personen einbezieht. Kaizen kommt in den unterschiedlichsten Branchen zum Einsatz. Entsteht beispielsweise in einem Produktionsprozess ein Problem, melden die am Prozess beteiligten Mitarbeiter dieses sofort und unterbrechen ihre Arbeit. Das Problem wird an Ort und Stelle analysiert und zusammen mit den Entwicklungs-, Kontroll- und Leitungsinstanzen behoben. Möchten Sie sich näher mit Kaizen beschäftigen, finden Sie beispielsweise bei Wikipedia weiterführende Informationen.

Übertragen auf den DevOps-Gedanken bedeutet Kaizen, dass sich die Entwicklungs- und Betriebsprozesse in einem kontinuierlichen Kreislauf bestehend aus den Aktivitäten Plan, Do, Check und Act befinden. Die beteiligten Teams und das Management müssen das Kaizen-Prinzip verinnerlichen. Lineare Modelle wie das beschriebene Wasserfallmodell werden durch einen zyklischen Prozess mit ständigem Feedback ersetzt. Dieser Kreislauf bezieht die Planungs-, Entwicklungs-, Bereitstellungs- und Betriebsphasen mit ein. Keine dieser Phasen ist einer spezifischen Rolle zugeordnet. Jede Rolle (Entwicklung, Test, Betrieb) ist in gewissem Umfang an allen Phasen beteiligt.

In unserem Beitrag «The Three Ways - die Prinzipien von DevOps und warum auch andere Teams eines Unternehmens davon profitieren können» haben wir die drei DevOps-Prinzipien - besser bekannt als «The Three Ways» bestehend aus 

  1. Flow-Prinzip
  2. Feedback-Prinzip 
  3. Prinzip des kontinuierlichen Lernens und Experimentierens 

näher beschrieben. 

Aus diesen Prinzipien leiten sich Methoden wie Continuous Integration und Continuous Delivery (CI/CD) ab. Sie spielen für DevOps eine wichtige Rolle. Der aus beiden Methoden kombinierte CI/CD-Prozess automatisiert alle Schritte der Integration und Bereitstellung neuen Programmcodes.

Was ist Continuous Integration (CI)?

Continuous Integration ist eine Methode, den neuen oder veränderten Programmcode kontinuierlich in kleinen Schritten in den Hauptcode einer Anwendung zu integrieren. Automatisierte Tests finden bei jeder Integration statt und sorgen dafür, dass die Hauptcode-Basis immer stabil bleibt. Zeitaufwendige Feedback- und Korrekturprozesse des kompletten Codes, die bei einer nicht stetigen (continuous) Integration eines fehlerhaften Codes notwendig würden, lassen sich vermeiden. Fehler werden deutlich früher als in klassischen Software-Entwicklungsprozessen entdeckt.

Was ist Continuous Delivery (CD)?

Continuous Delivery stellt neue Versionen einer Anwendung oder Software automatisiert in regelmässigen kurzen Intervallen in der Produktionsumgebung bereit. Die aktuelle Software lässt sich quasi zu beliebigen Zeitpunkten ausliefern. Der Anwender erhält eine zu jeder Zeit lauffähige aktuelle Version seiner Software. Automatisierte Tests sorgen für die Überprüfung der Anwendungen, unabhängig vom Entwicklungsstand. Durch die kontinuierlichen Updates reduziert sich im Vergleich zu grossen Softwaresprüngen das Risiko für Bereitstellungsfehler.

Was sind die Vorteile von DevOps?

Die meisten Vorteile entstehen durch die enge Verzahnung von Entwicklung und Betrieb, die eine bessere Kommunikation, schnellere Feedbackschleifen und agile Handlungen erst zulassen. Alle Aspekte im Lebenszyklus einer Anwendung sind in einem umfassenden Gesamtkonzept abgebildet. Software kann schneller, flexibler und agiler bereitgestellt werden, ohne dass die Qualität der Anwendung und die Stabilität des Betriebs darunter zu leiden haben. Die sich in immer kürzeren Zyklen verändernden Anforderungen an moderne Anwendungen lassen sich sowohl aus Entwicklungssicht als auch betrieblich besser abbilden. Hohe Qualität und schnelle Bereitstellung neuer oder angepasster Software stellen keine Widersprüche mehr dar. Die Vorteile von DevOps sind kurz zusammengefasst folgende:

  • schnelle, agile Umsetzung neuer Anforderungen
  • beschleunigte Bereitstellung qualitativ hochwertiger Software
  • beschleunigte Innovationszyklen
  • kürzere Time-to-Market
  • frühes Erkennen und Beseitigen von fehlerhaftem Code
  • zuverlässiger Betrieb der Anwendungen
  • engere Zusammenarbeit und bessere Abstimmung bisher isolierter Teams
  • effizienteres Management komplexer Systeme
  • Optimierung von Arbeitsabläufen und effizienterer Umgang mit Mitarbeitendenressourcen
  • Verbesserung der Kundenerfahrung

Welche Relevanz hat DevOps im heutigen Unternehmensumfeld?

In der heutigen Geschäftswelt spielt Software in allen Unternehmensbereichen eine entscheidende Rolle. Anwendungen unterstützen oder steuern nahezu alle Geschäftsprozesse. Die zunehmende Digitalisierung und die Industrie 4.0 steigern die Bedeutung von Software zusätzlich. Kaum ein Teilbereich der Wertschöpfungskette kommt ohne Softwareunterstützung aus. Um mit der sich schnell verändernden Geschäftswelt und der Konkurrenz Schritt zu halten, ist es entscheidend, dass sich Anwendungen schnell anpassen und in hoher Qualität und Zuverlässigkeit zur Verfügung stellen lassen. IT-Probleme oder zu spät entdeckte Fehler in der Software können zu Produktionsausfällen und enormen finanziellen Einbussen führen. Klassische Entwicklungs- und Betriebsprozesse sind mit der Geschwindigkeit der heutigen Geschäftswelt überfordert. DevOps liefert entsprechende Lösungen und ist für Unternehmen egal welcher Grösse und Branche von hoher Relevanz.

Mit DevOps lassen sich die benötigten Anwendungsfunktionen schnell und in hoher Qualität bereitstellen, IT-Architekturen verbessern und Arbeitsressourcen effizienter einsetzen. So liefern Unternehmen ihren Kunden einen exzellenten Service.

Welche Technologien und Tools sind typisch für DevOps?

Neben Arbeitsprinzipien, Methoden, Unternehmenskultur und Arbeitsphilosophie hat DevOps viel mit Technologien und Tools zu tun. In der Umsetzung des DevOps-Konzepts ist der Einsatz folgender Technologien typisch:

  • Cloud Computing
  • Container-Virtualisierung
  • Container-Orchestrierung
  • Micro-Service-Architekturen
  • Serverless Computing
  • Code Repositories

Cloud Computing mit seinen Servicemodellen Infrastructure as a Service (IaaS), Platform as a Service (PaaS) und Software as a Service (SaaS) bereitet den Weg zu abstrahierten IT-Umgebungen. So lässt sich beispielsweise die für den Anwendungsbetrieb benötigte Infrastruktur als Code abbilden, wie Software versionieren und On-Demand bereitstellen. Anbieter wie Google, Amazon oder Microsoft und viele weitere Unternehmen stellen entsprechende Cloud-Plattformen zur Verfügung. 

Die Containertechnik sorgt für die Virtualisierung der Anwendungen oder Services und trennt sie von den zugrundeliegenden Ressourcen. Als Defacto-Standards im Bereich der Containerisierung haben sich Container-Runtimes wie Docker oder containerd etabliert. Aus vielen einzelnen Containern lassen sich Micro-Service-basierte Architekturen für Cloud-native Anwendungen aufbauen. 

Die Verwaltung und das richtige Zusammenspiel der vielen verschiedenen Container übernimmt die Container-Orchestrierung. Das beliebteste und am häufigsten für die Container-Orchestrierung eingesetzte Tool ist Kubernetes. Kubernetes automatisiert das Erstellen und Bereitstellen der Container und ermöglicht die elegante Abbildung kompletter CI/CD-Pipelines. 

Code Repositories wie GitHub dienen im DevOps-Umfeld als zentrale Code-Versionsverwaltung. Eine Vielzahl verschiedener Entwickler kann gleichzeitig an einer Codebasis arbeiten, während andere den Code prüfen und weiterentwickeln. Die Konsistenz des Codes ist zu jeder Zeit sichergestellt.

Der konkrete Einsatz des DevOps-Konzepts: Zwei konkrete Beispiele für DevOps

Case 1: Neue Anwendung eines Startups, das sich an verändernde Anforderungen des Marktes schnell anpassen muss

Für den Erfolg eines Startups sind Geschwindigkeit und Effizienz entscheidend. Angenommen ein Startup stellt einen neue innovative Anwendung zur Verfügung. Anpassungen der Anwendung sind in kurzen Intervallen von oft nur wenigen Tagen bereitzustellen, um auf die Anforderungen des Marktes oder das Aufkommen eventueller Konkurrenz zu reagieren. Der klassische lineare Entwicklungsprozess eignet sich für eine solche Anwendung nicht, denn es ist schlicht keine Zeit, den Entwicklungsprozess für jedes neue Feature komplett zu durchlaufen und anschliessend erst die Software auszurollen. Zudem sind Geld und Arbeitsressourcen in einem Startup-Unternehmen knapp. Erfolgen die Software-Anpassungen nach dem DevOps-Konzept in einer CI/CD-Pipeline, lassen sich neue Funktionen in kurzen regelmässigen Zyklen implementieren und direkt für den Betrieb freigeben. Der komplette Prozess ist automatisiert, äusserst effizient und erfordert wenig Manpower. Aufwendige, zeitraubende und konfliktbehaftete Abstimmungs- und Übergabeprozesse zwischen Entwickler- und Betriebsteams, wie sie typisch für klassische Entwicklungsprozesse sind, werden vermieden. Kontinuierliches, automatisiertes Testen stellt die Qualität der Software sicher.

Case 2: Geschäftskritische Anwendungen im Spagat zwischen Zuverlässigkeit und neuen Features

Software, die zum Beispiel im Umfeld des Enterprise Resource Plannings (ERP) eingesetzt wird, stellt hohe Ansprüche an die Verfügbarkeit und Zuverlässigkeit. Die Anwendungen steuern kritische Unternehmensprozesse. Ausfälle der Anwendung kann sich ein Unternehmen schlicht nicht leisten. Gleichzeitig sollen stets die neuesten Funktionen bereitstehen, um alle relevanten Abläufe im Unternehmen auf effiziente Art abzubilden. Für einen IT-Dienstleister, der sich auf solche Software spezialisiert hat und sie seinen Kunden auf Basis des Cloud Computings bereitstellt, empfiehlt sich der Einsatz des DevOps-Konzepts. 

DevOps löst den Konflikt zwischen Zuverlässigkeit und Funktionsumfang. Neue Features lassen sich in einem kontinuierlichen Prozess schrittweise in kurzen Intervallen in die Software integrieren. Es ist kein «Big Bang» erforderlich, in dem die Software in einem halbjährlichen oder jährlichen Zyklus auf die neue Version gehoben wird. Nicht selten führt ein solch grosses Update zu erheblichen Störungen in den von der ERP-Software gesteuerten Betriebsprozessen. 

Die kontinuierlichen Updates haben für die Nutzer der Software den Vorteil, dass immer nur kleine Bereiche von den Änderungen betroffen sind, der Rest der Codebasis hat sich kaum verändert. Im Vorfeld automatisiert ausgeführte Feature-Tests sorgen für hohe Qualitätsstandards neu eingeführter Funktionen.

Fazit und was die nine cloud navigators in Sachen DevOps Ihnen bieten

Die nine cloud navigators beiten umfangreiche Unterstützung im bereich DevOps. Insbesondere kümmern wir uns um den Ops-Teil und verschaffen Ihnen mit unseren Managed Services mehr Zeit, sich auf Ihr Kerngeschäft Softwareentwicklung zu konzentrieren. 

Unsere Produkte wie die nine Managed GKE (Google Kubernetes Engine) stellen die optimale technische Basis zur Verfügung, um Entwicklung und Betrieb ihrer Anwendungen ganzheitlich zu managen. Wir bieten Ihnen direkten Support aus der Schweiz und tiefes Know-how im Bereich Container-Orchestrierung mit Kubernetes. Darüber hinaus betreiben wir zwei redundante Schweizer Rechenzentren mit eigenen Servern, auf denen sich Kundenapplikationen zuverlässig, hoch verfügbar, sicher und performant betreiben lassen.

Thomas Hug

Founder @ nine