© best_vector/Shutterstock.com
Teil 3: Echtes Continuous Delivery realisieren

DevOps - organisiert und nutzerfreundlich


In den beiden ersten Artikeln dieser Serie haben wir gesehen, warum kurze Releasezyklen für die Softwareentwicklung relevant sind. An dieser Stelle wollen wir nun näher betrachten, welche Voraussetzungen zusätzlich zu den organisatorischen Aspekten auf der technischen Ebene geschaffen werden müssen. Um neue Funktionalität oder Fehlerbehebung schnell und häufig auszuliefern, ist Automatisierung zwingend erforderlich, und dafür brauchen wir geeignete Tools.

Man spricht hier häufig von einer so genannten Release­pipeline (Abb. 1), die den Weg vom Check-in einer Codeänderung bis zum Produktivsystem beschreibt. Die einzelnen Stufen dieses Beispiels sollen kurz erläutert werden:

  • Check-in: Der Entwickler checkt eine Codeänderung in Master/Mainline/Trunk ein. Dabei ist es unerheblich, ob diese Änderung über einen Pull Request, einen Merge von einem anderen Branch oder direkt eingecheckt wird.

  • Build: Jeder Check-in triggert direkt einen Build, der den aktuellen Stand des Sourcecodes baut und dabei ggf. verschiedene Codeprüfungen ausführt.

  • Unit-Tests: Auf dem Build-Server werden dann Unit-Tests ausgeführt, die prüfen, ob der aktuelle Stand diese Tests besteht. Diese Unit-Tests sind in der Regel Tests, die keine weiteren Systemabhängigkeiten haben und schnell im Speicher ausgeführt werden können.

  • Deploy auf Testumgebung: Werden alle Unit-Tests erfolgreich durchlaufen, wird dieser Softwarestand auf eine Testumgebung installiert.

  • Tests auf Testumgebung: Auf der Testumgebung werden nun weitere Tests ausgeführt, die vor allem auch Systemtests beinhalten. Diese können automatisiert oder auch manuell sein.

  • Deploy auf Produktivumgebung: Nachdem die Tests auf der Testumgebung erfolgreich waren, erfolgt eine Installation auf der Produktivumgebung.

  • Tests auf Produktivumgebung: Auf dem Produktivsystem werden dann noch finale Tests ausgeführt, um Probleme möglichst frühzeitig zu erkennen.

baumann_schissler_devops_1.tif_fmt1.jpgAbb. 1: Beispiel für eine Releasepipeline

Je mehr von dieser Releasepipeline automatisiert ist, desto schneller sind die damit möglichen Releasezyklen. Je nachdem, wie weit die Pipeline automatisiert ist, spricht man von Continuous Integration, Continuous Deployment oder Continuous Delivery. Continuous Integration prüft automatisch, ob die Codeänderung noch sauber kompiliert und die Unit-Tests erfolgreich ausgeführt werden. Bei Continuous Deployment wird der so erfolgreich erstellte Softwarestand auch automatisch, ohne manuellen Zwischenschritt, auf die Testumgebung installiert. Wenn dann von der Testumgebung ohne manuelle Tests oder manuelle Freigabe direkt auf das Produktivsystem deployt wird, spricht man von Continuous Delivery.

Natürlich geht es dabei nicht nur darum, die Auslieferung von Codeänderungen schnell, sondern vor allem auch sicher zu machen. Durch die Automatisierung des Deployments kann dieses mit getestet und individuelle Fehler können bereits weitgehend ausgeschlossen werden. Und natürlich hängt die Verlässlichkeit einer solchen Releasepipeline auch sehr von den automatisierten Tests ab. Darauf werdem wir im vierten Teil der Artikelserie noch ausführlicher eingehen.

Im Folgenden wollen wir in einem Beispiel vorstellen, wie eine solche Releasepipeline mit einem konkreten Tool umgesetzt werden kann. Wir haben uns hierbei für Visual Studio Team Services (VSTS) entschieden. Es gibt inzwischen aber auch eine Vielzahl anderer leistungsfähiger Tools am Markt und viele weitere Techniken, um diesen Prozess zu unterstützen, z. B. Container, Blue-Green-Deployment und vieles mehr.

So könnte ein Szenario mit VSTS aussehen

„Feedback Manager“ ist eine kleine, aber feine Website: Besucher von Veranstaltungen können – man ahnt es schon – mithilfe eines einfachen Webformulars Kommentare abgeben. Dabei müssen die Besucher unter anderem auch das Geburtsdatum angeben.

baumann_schissler_devops_2.tif_fmt1.jpgAbb. 2: Der Feedback Manager akzepti...

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

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang