Software-Entwicklung mit Tempo-Check

Continuous Delivery in der Praxis

16.09.2015
Von 


Andreas Grabner hat mehr als 15 Jahre Berufserfahrung als Architekt, Entwickler und DevOps Advokat. In seiner derzeitigen Funktion als Technology Strategist bei Dynatrace ist er Teil des Innovation Labs.
Unternehmen sind heutzutage durch die fortschreitende Digitalisierung gezwungen, ihre Angebote und Anwendungen schnell und fehlerfrei auf den Markt zu bringen und jederzeit kurzfristig zu modifizieren. Um das zu gewährleisten hat sich der Continuous Delivery-Ansatz als logische Weiterentwicklung agiler Vorgehensmodelle der Softwareentwicklung etabliert

Continuous Delivery bietet zahlreiche Möglichkeiten zur automatisierten Auslieferung von Software in Test- und Produktionsumgebungen in verschiedenen Stufen des Software-Lieferungsprozesses. Dabei schließt es manuelle Tätigkeiten weitgehend aus, denn diese sind:

  • langsam, nicht wiederholbar und unzuverlässig

  • nicht konsistent über die verschiedenen Umgebungen hinweg

  • aufwändig durch extensive Dokumentation, die jedoch selten in aktueller Form vorliegt

  • intransparent, da sie von einem Experten durchgeführt werden.

Auslieferung neuer Anwendungen durch Continuous Delivery und DevOps.
Auslieferung neuer Anwendungen durch Continuous Delivery und DevOps.
Foto: Dynatrace

Ergänzt wird dieser konkrete Ansatz durch DevOps, entstanden aus den englischen Begriffen Development und Operations. DevOps steht für kulturelle, organisatorische Veränderung innerhalb der Unternehmen und bedeutet, dass die Abteilungen Entwicklung und Betrieb - die bisher meist getrennt voneinander arbeiteten - bei der Erstellung und dem erfolgreichen Einsatz von Software eng zusammenarbeiten. Somit wird vermieden, dass Software ohne Berücksichtigung der praktischen Anforderungen des Betriebs entwickelt und getestet wird und Performance-Probleme oder Instabilitäten erst viel zu spät in der praktischen Anwendung entdeckt werden.

DevOps bedeutet nicht nur, dass Mitarbeiter in Entwicklung und Betrieb über alle Änderungen gegenseitig informiert sind, sondern auch, dass neue Versionen automatisch getestet und installiert werden. Der Ansatz umfasst auch, dass alle Schritte messbar und somit überprüfbar sind.

Wegen der kürzeren Feedbackschleifen zwischen Entwicklung und Betrieb gibt es deutliches Einsparpotenzial. Der Hauptteil der Zeit- und Kostenreduktion geht aber auf den hohen Grad der Automatisierung zurück. Zudem wird schon frühzeitig die Qualität und Performance einer Software konkret gemessen, so dass Fehler oder Probleme vorab erkannt und behoben werden.

Durch ein auf DevOps basierendes Continuous Delivery-Modell hat zum Beispiel Amazon nun 75 Prozent weniger Ausfälle und 90 Prozent weniger Ausfallminuten. Der Anbieter führt im Schnitt alle 11,6 Sekunden ein neues Deployment durch. Nur jedes Tausendste hat noch ein Problem, das mit einem schnellen Roll-Back sofort wieder behoben werden kann. Dies ist natürlich ein extremes Beispiel und soll nicht heissen das hunderte Deployments pro Tag anzustreben sind - es zeigt jedoch, was alles durch Automatisierung sowohl im Deployment als auch in der Qualitätskontrolle möglich ist.

Es gibt jedoch bei Cintuous Delivery auch einige Herausforderungen: Üblicherweise werden Last- und Performance-Tests unmittelbar vor der Auslieferung der Software durchgeführt, bei Continuous Delivery werden die Zyklen dazwischen aber immer kürzer. Wie lässt sich also kontinuierlich die Performance sichern?
Und auf welcher Basis trifft das Unternehmen die Entscheidung, ob der Stand der Software releasefähig ist oder nicht?