© Excellent backgrounds/Shutterstock.com
Agil trifft DevOps

Best Practices für die Cloud-Entwicklung


Was ändert sich, wenn ein bereits agiles und nach dem DevOps-Ansatz arbeitendes Team damit beginnt, für die Cloud serverless zu entwickeln? Wir beleuchten diese Frage anhand der Erfahrungen aus einem realen Projekt, in dem das Team einen Serverless-Cloud-Technologiestack entwickelt hat. Fazit: Es bleibt (fast) alles beim Alten. Nur anders.

Video: DevOps is not enough – Embedding DevOps in a broader Context

Warum spielt DevOps oder genauer gesagt, die Kombination von DevOps und Agile, gerade für die Cloud-Entwicklung eine Rolle? Ganz lapidar gesagt, weil es bei DevOps darum geht, kontinuierlich auszuliefern, seien es Produkte, Releases oder Funktionalitäten. DevOps konzentriert sich auf den direkten Zusammenhang zwischen Kundenwert und kontinuierlicher Auslieferung. Auch die agile Softwareentwicklung zielt letztendlich darauf ab, in kurzen Intervallen lieferfähig zu sein. Genau das erwarten viele Unternehmen und deren Kunden von einer Cloud-Lösung: Schnelle Verfügbarkeit. Schwergewichtige und lange Entwicklungszyklen wollen oder können sich viele Unternehmen nicht mehr leisten.

Wenn Wert in dem Moment entsteht, in dem etwas ausgeliefert wird, dann reicht es nicht, sich auf einzelne Stationen der Wertschöpfungskette zu konzentrieren. Deshalb ist es nicht überraschend, dass agile Softwareentwicklung und DevOps eine gemeinsame Basis haben: Kern ist bei beiden die Betrachtung der gesamten Wertschöpfungskette von der Idee oder Anforderung bis zum Feedback des Markts. Unsere Definition von DevOps geht daher nicht in die Richtung „DevOps beleuchtet den Prozess ab erfolgreichen Tests bis Kundenfeedback“. Wenn es um den Kundennutzen geht, dann ist unserer Meinung nach nur die ganzheitliche Betrachtung sinnvoll. Dabei ergänzen sich DevOps und agile Softwareentwicklung sehr gut.

Serverless in die Cloud: wo weniger mehr ist

Bleibt die Frage, warum ein Produkt in der Cloud laufen oder serverless entwickelt werden soll, wenn das primär noch kürzere Releasezyklen und damit zusätzliche Komplexität in der Entwicklung bedeutet. Hier seien nur zwei der Vorteile genannt: Bei kommerziellen Cloud-Lösungen besteht ein Vorteil in den – je nach Anwendungsfall – oft niedrigeren Kosten im Vergleich zu einer Vollversion. Serverless-Modelle sehen in der Regel vor, nach der tatsächlichen Laufzeit der Funktionen zu bezahlen. Außerdem nimmt der Cloud-Dienstleister den Kunden viele zeitraubende Dinge ab. Das beschleunigt häufig die Umsetzung und damit die Time-to-Market. Man könnte also sagen, dass die Serverless-Entwicklung für die Cloud das, was sie fordert – kurze Lieferfristen – auch selbst ermöglicht.

Serverless: eine Definition

Serverless bezeichnet hier die vollständige prozess- und maschinenlose Entwicklung eines Softwareprodukts. Anders gesagt sind die Entwickler davon befreit, spezielle Rahmenbedingungen wie das installierte Betriebssystem oder Skalierungsvorgaben einzuhalten, da diese Faktoren in der Verantwortung der Cloud-Betreiber liegen. In der aktuellen Praxis funktioniert Serverless über die Verwendung diverser Plattformen (PaaS) oder Dienste (SaaS) gängiger Cloud-Betreiber. Letztere bieten mittlerweile ein reiches Spektrum an Frameworks an, z. B. Cognito von AWS zur Synchronisierung der Daten zwischen Cloud und mobilen Endgeräten. Nachteilig finden wir die explizite Bindung an den jeweiligen Cloud-Dienstleister. Die Open-Source-Lösungen weisen nach unserer Erfahrung aktuell geringere Funktionsumfänge auf.

Um ein potenzielles Missverständnis auszuräumen: Gerade im Sinne kontinuierlicher Auslieferungen ist Dev­Ops eine wichtige Ergänzung zur agilen Softwareentwicklung, kein Ersatz dafür. DevOps konzentriert sich auf die kontinuierliche Auslieferung immer neuer, für den Kunden wertvoller Funktionen. Agile Softwareentwicklung schafft die handwerklichen und prozessorganisatorischen Voraussetzungen, die notwendig sind, damit überhaupt auslieferfähige Inkremente erzeugt werden können.

Nach unserer Beobachtung haben einige Firmen und Teams leider die Herausforderung agiler Softwareentwicklung (noch) nicht gemeistert. Tatsächlich arbeiten sie nur in Teilen wirklich agil. Auch die agile Denkweise hat sich nicht überall durchgesetzt, wo formal nach agilen Prinzipien gearbeitet wird. Typisch für diese Praxis ist beispielsweise eine kleinteilige Aufteilung der Arbeit auf einzelne Köpfe und die Kommunikation mithilfe von Dokumenten. Damit sind wichtige qualitätsbezogene Voraussetzungen nicht erfüllt. Das kann es schwer bis unmöglich machen, am Ende jedes Sprints ein hochwertiges Inkrement zu liefern. In diesen Fällen ist es eher unwahrscheinlich, dass es den Betroffenen gelingen wird, DevOps gewinnbringend für den Kunden umzusetzen. „Shipping shit faster“ ist definitiv nicht das Ziel von DevOps. Solange die Methoden der agilen Softwareentwicklung nicht etabliert sind, empfehlen wir, sich zuerst darauf zu konzentrieren, bevor DevOps zum Thema wird...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang