Continuous Deployment

Definition

Continuous Deployment ist eine spezifische Softwareentwicklungs- und Veröffentlichungsmethode, die gerade in den letzten Jahren an Popularität zugenommen hat und Ähnlichkeiten mit agilen Softwareentwicklungsmethoden besitzt. 
Continuous Deployment wird häufig synonym mit Continuous Delivery verwendet. Beide Methoden unterscheiden sich aber darin, dass Continuous Deployment auf eine automatische Auslieferung der Software setzt, während diese bei Continuous Delivery manuell erfolgen kann. 

Wie funktioniert es?

Beim Continuous Deployment werden anstelle großer Releases mit vielen Funktionen, die nur in großen Abständen veröffentlicht werden, kleine Verbesserungen und Neuerungen entwickelt, die es erlauben, dass die Software in kurzen Zeitabständen regelmäßig verbessert oder erweitert werden kann. Diese Neuerungen werden am Ende der Entwicklungskette in die Software implementiert. Da es sich in der Regel um eher wenige kleine Änderungen handelt, ist es einfacher, Fehler direkt zu entdecken. Das Ziel ist es, auf diese Weise eine kontinuierliche Verbesserung der Software zu erreichen. Diese Art der Entwicklung setzt eine automatisierte Testumgebung voraus, in der die neuen Elemente durch Computerroutinen getestet werden. Hier werden automatisiert explizite Marktsituationen oder bestimmte Nutzerverhalten reproduziert und überprüft – es handelt sich also um weitaus mehr als simple Funktionstests. Sollten diese Tests scheitern, muss der Entwickler noch einmal Hand an den Code anlegen. Sollten alle Tests bestanden worden sein, wird automatisch eine neue Software-Version kompiliert, die automatisch ausgeliefert wird. 

Eine entscheidende Hürde muss bereits vor dem Einstieg in das Continuous Deployment genommen werden: Die entsprechenden Testroutinen müssen im vorhin angelegt werden. Dies ist mitunter mit einem höheren Entwicklungsaufwand verbunden, als man dies aus der klassischen Softwareentwicklung gewohnt ist. 

Vor- und Nachteile des Continuous Deployment

Ein entscheidender Vorteil besteht aus den kürzeren Entwicklungszyklen im Gegensatz zu monolithischen Softwareentwicklungsmethoden. So kann auf neue Anforderungen oder den Bedarf an neuen Features schneller reagiert werden. Durch den Entwicklungsweg mit kleinen aber vielen Schritten fallen bei der Softwareentwicklung im Idealfall etwaige Fehler weitaus schneller auf und können direkt oder in kurzer Zeit behoben werden. 
Dem gegenüber steht die Herausforderung, dass die Team- und Entwicklungssteuerung weitaus genauer betrieben werden muss. Schnell kann sich das Ziel, eine kontinuierliche Weiterentwicklung zu ermöglichen, aber auch verselbstständigen und dazu führen, dass man nur kürzeren Entwicklungszyklen hinterherhechelt. Darüber hinaus lassen sich tiefgreifende Änderungen der Software häufig nur umständlicher implementieren, da für solche Schritte die Testumgebung entsprechend angepasst werden muss.

Continuous Deployment in der Energiewirtschaft

In der Energiewirtschaft lassen sich unterschiedliche Bereiche ausmachen, in denen es sinnvoll sein kann, auf Continuous Deployment zu setzen. So profitieren etwa Handelsanwendungen von dieser Entwicklungsform wie  Trading Bots oder die Weiterverarbeitung von Wetter- und Marktdaten, die automatisch von zahlreichen Schnittstellen aus auflaufen, weiterverarbeitet werden müssen. Gerade auch in der Erschließung neuer Märkte und Länder kann sich ein Continuous Deployment anbieten. Schrittweise kann sich so der neuen Marktumgebung genähert werden, ohne dass man schon von vornherein alle Parameter festgelegt haben muss. Auch bei sich ändernden Rahmenbedingungen oder Handelsstrategien wie etwa der aktuellen Einführung des Mischpreisverfahrens hilft ein Continuous Deployment mit den kurzfristigen Neuerungen Schritt zu halten. Darüber hinaus bietet auch der Einsatz im Leitsystem eines Virtuellen Kraftwerks sinnvolle Anwendungsbereiche. Angefangen bei der Optimierung der Steuerungsalgorithmen für die einzelnen Anlagen bis hin zur Verbesserungen der Kommunikation zu verschiedenen Schnittstellen gibt es hier unterschiedliche Szenarien, in denen permanente, kleinteilige Optimierungen zu einer besseren Ausnutzung der vorhandenen Kapazitäten im Virtuellen Kraftwerk führen. Auch im Bereich Software-as-a-Service wie es bei der VPP-Lösung NEMOCS der Fall ist, ergeben sich Vorteile in der Entwicklung mit Continuous Deployment. Kurzfristige, individuelle Kundenwünsche können schneller umgesetzt werden, da aufwendige manuelle Testroutinen entfallen. Hier greift auch die agile Softwareentwicklung, die ebenfalls auf eine schnelle Auslieferung von kurzen Software-Iterationsstufen setzt.