In the Code: DevOps kann viele Probleme lösen

Marc Mazzariol
Die Zusammenführung zweier Ansätze mit unterschiedlichen Zielen ist nie einfach. DevOps vereint agile Softwareentwicklung mit dem auf Stabilität ausgerichteten Softwarebetrieb. Dies kann für alle Parteien ein Vorteil sein: Entwickler können den Bedarf frühzeitig erkennen, der Betrieb kann die Stabilität der Anwendung sicherstellen, das Unternehmen kann kurzfristig auf Kundenbedürfnisse reagieren und der Kunde bekommt, was er sucht oder erwartet. Eine Win-win-Situation also.
 
Was ist DevOps? Laut Wikipedia ist DevOps ein Ansatz, der sich auf die Zusammenarbeit und Kommunikation von Softwareentwicklern sowie anderen Fachleuten der Informatik konzentriert und dadurch die Prozesse "Softwarebereitstellung" und "Infrastrukturänderungen" verbindet und automatisiert. Ziel ist die Schaffung einer Umgebung, in der die Entwicklung, Prüfung und Veröffentlichung von Software schnell, häufig und zuverlässig erfolgen kann.
 
Die vernetzte Welt schläft nie
Eine vernetzte Welt schläft niemals und verbindet Millionen und Abermillionen von Informationen und Benutzern. Ein System für die Implementierung einer neuen Version herunterfahren? Undenkbar - irgendwo auf der Welt sind immer Facebook-, Google- oder Instagram-Benutzer aktiv oder es wird getraded. DevOps, grob gesagt die Implementierung des Betriebs durch Entwicklungspraktiken (auch als "Infrastructure as Code" bezeichnet), ist die Lösung dieses Problems.
 
Beim traditionellen Ansatz werden Softwareentwicklung und Betrieb getrennt betrachtet. Zwei separate Bereiche mit unterschiedlichen und oft gegensätzlichen Zielen. Die Softwareentwicklung konzentriert sich auf die Erstellung von Software, die Umsetzung von Änderungen und Verbesserungen am System, während für den Betrieb die Stabilität der Anwendungen oberste Priorität hat. Das DevOps-Konzept bringt diese beiden Welten zusammen: Beide Teams arbeiten gemeinsam an der kontinuierlichen Weiterentwicklung des Systems und stellen gleichzeitig ein hohes Mass an Qualitätskontrolle und damit Verfügbarkeit sicher. Dieser Ansatz wird bereits in der Designphase angewandt, wenn die Softwarearchitekten und das Betriebsteam versuchen, den Launch neuer Technologien vorzudenken; die Entwicklungs- und Testumgebungen werden vom selben Betriebsteam verwaltet wie die Produktion, der Prozess verläuft über Fehleranalysen und -beseitigung durch das Entwicklungsteam in der Produktionsumgebung.
 
Entwickler und Nutzer näher zusammen bringen
Nutzer bemerken oft beim Einsatz der Anwendung Probleme (zum Beispiel bei der Bedienung eines Programms), fehlende Features, Ineffizienzen oder Irritationen. Diese sind in der Regel auf bestimmte Details der Software zurückzuführen und häufig zu klein, um in traditionellen Releasezyklen Berücksichtigung zu finden. Durch das DevOps-Konzept haben Endbenutzer die Möglichkeit, frühzeitig mit dem System zu interagieren, so dass diese Aspekte gesammelt und dank der schnellen Entwicklungszyklen "auf natürliche Weise" behoben werden können. Ein weiterer Vorteil: die Benutzer können ihre Anliegen oder Probleme in "natürlicher Sprache" äussern. DevOps bindet die Entwickler direkt in diesen Informationsfluss ein, sie können die Problempunkte nachvollziehen und ohne weiteres aufgreifen
 
Kurze Zyklen
Einzelne Module des Codes werden in das Programm implementiert und in kurzen Zyklen (Sprints) bereitgestellt. Dies ermöglicht ausserdem die sukzessive Bearbeitung der wichtigsten Kundenanliegen durch schrittweise Anpassung und Verbesserung der Software ohne disruptive oder hochriskante Veränderungen. Kurze Zeiträume sind ein enormer Vorteil des DevOps-Konzepts. Längere Zeiträume (wie bei der traditionellen Softwareaktualisierung) erfordern lange Planungsphasen - neue Kundenbedürfnisse können nicht rechtzeitig aufgegriffen werden. Die schnelle und umfassende Berücksichtigung von Kundenanforderungen oder veränderten Prioritäten innerhalb kürzester Zeit ist heute aber geschäftskritisch.
 
Nach jedem Sprint (in der Regel 2 bis 3 Wochen) ist das System verfügbar und für alle Beteiligten zugänglich. Diese erhöhte Transparenz hilft, mögliche Probleme und Projektrisiken frühzeitig zu erkennen. Solche Iterationen und kontinuierlichen Veränderungen sind ein Teil des natürlichen Governance-Prozesses von DevOps. Ebenso wie eine verdichtete Projekt- und Problemüberwachung.
 
SaaS-Lösungen sind komplex
Software-as-a-Service(SaaS)-Lösungen sind Cloud-basiert und unterliegen damit Cloud-spezifischen Besonderheiten und Problematiken, wie zum Beispiel der Mandantenfähigkeit. Jede Mandantenanforderung trägt zur Roadmap der Softwareentwicklung bei, die dadurch schnell an Komplexität gewinnt und sich ständig verändert. Das DevOps-Konzept eignet sich besonders gut zur Lösung dieser Problematik. Da die Markteinführungszeit für SaaS-Produkte oftmals entscheidend ist, bildet die Flexibilität des DevOps-Ansatzes einen wichtigen Aspekt des Erfolges.
 
Voraussetzungen für DevOps
Die Vorteile liegen klar auf der Hand, aber kann jedes Unternehmen Devops wie einen Zauberstab, der alle Probleme einfach verschwinden lässt, einsetzen? Leider nicht.
 
Es gibt einige wichtige Voraussetzungen für Unternehmen, wollen sie DevOps erfolgreich einsetzen. Automatisierung etwa ist von wesentlicher Bedeutung. Um Qualitätsmängel frühzeitig erkennen zu können, müssen kontinuierlich Tests durchgeführt werden. Ein DevOps-System wird mehrmals pro Tag automatisch vollständig getestet und bereitgestellt. Diese "Industrialisierung" des Prozesses und der Aufgaben erfordert eine Agile Software-Factory, bestehend aus Tools und automatisierten Prozessen, deren ständige Wiederholung für Stabilität sorgt. Wenn ein Entwickler sukzessive einen Teil des Codes in die Software-Factory einbringt, übergibt diese die Daten in mehreren Schritten (jeweils mit einer Qualitätsprüfung) an den jeweils nächsten Prozess - vergleichbar mit einem Förderband. Wenn der Code dann in die Software eingebettet ist, wird die Produktion angestossen. Dabei ist es durchaus nicht ungewöhnlich, ein bestimmtes Modul jährlich mehr als 100-mal für die Produktion bereitzustellen - selbstverständlich ohne Unterbrechung des Dienstes aus Sicht des Benutzers.
 
Diese Arbeitsweise erfordert eine gewisse Haltung und nicht selten kulturelle Veränderungen im Unternehmen. Festgefahrene Praktiken und Gewohnheiten müssen aufgebrochen werden, nicht nur in Bezug auf Entwicklung und Betrieb, sondern auch im Hinblick auf abteilungsübergreifende Prozesse. Die aktive Unterstützung durch die Geschäftsleitung ist für den Erfolg entscheidend.
 
Am Ende ist ein Unternehmen "DevOps-ready", wenn die Geschäftsleitung den kontinuierlichen Wandel akzeptiert, wenn kontinuierliche Tests durchgeführt werden und wenn eine kontinuierliche Bereitstellung der Software stattfindet.
 
Marc Mazzariol
 
Über den Autor: Marc Mazzariol ist Vice President bei SecuTix und verantwortlich für Produktstrategie und Entwicklung. Er schloss das Studium in Computer Science an der EPFL mit einem PhD ab und ist Experte in Agile DevOps. Secutix ist eine 100-Prozent-Tochter der Elca Holding in Lausanne.