Thema: Digitale Transformation – Evolution, Innovation, Disruption

14:40 - 16:00 Uhr

Testsetup und Continuous Deployment mit Jenkins und Docker (Vortragssprache: Deutsch)

Heiko Kracker
Reinhold Schmidt
codemanufaktur GmbH

Testsetup und Continuous Deployment mit Jenkins und Docker

Die digitale Transformation stellt durch die immer höher werdende Vielfalt an zu testenden Systemen immer höhere Anforderungen an ein schnell aufzusetzendes und zuverlässiges Testsystem. Die Testobjekte müssen mit vielen unterschiedlichen Drittkomponenten in unterschiedlichen Versionen zuverlässig zusammenarbeiten. Diese Komponenten- und Versionsvielfalt ist auf klassischem Wege ohne Virtualisierung nur mit großem Aufwand zu stemmen. Virtuelle Maschinen stellen erhebliche Anforderungen an die Hardware und die Organisation der Testumgebung sowie die Verwaltung der verschiedenen Betriebssysteme und Sicherungspunkte.

Container hingegen sind leichtgewichtig, stellen deutlich weniger Anforderungen an die  Hardware und lassen sich relativ einfach automatisiert erstellen. Sie bieten eine einfache Möglichkeit verschiedene Kombinationen des Testobjekts mit Drittkomponenten aufzusetzen und durchzutesten. Als weiterer Performanceboost wird einem quasi die Möglichkeit geschenkt den Zustand des Systems im Fehlerfall oder nach Testende einzufrieren, um ihn dem Tester oder Entwickler zur Fehlersuche an die Hand zu geben. Im Zusammenspiel mit einer Continous Integration Plattform wie z. B. Jenkins können die Buildartefakte in Container verpackt werden, die direkt im Test nutzbar sind. Werden zudem Container für die Produktivumgebungen erstellt kann mit dieser Technik echtes Continous Deployment für viele Projekte verwirklicht werden. Im Tutorial zeigen wir auf wie der Einsatz von Docker im Testalltag aussehen kann. Wir zeigen die Integration in ein Testframework im Zusammenspiel mit Jenkins als Continous Integration Plattform sowie Nexus als firmeninterner Docker Registry.

Hintergrundinformation/Projektsituation
Die vorgestellte Lösung wurde für eine Anwendung im Bereich Gesundheitsmanagement entwickelt. Beim Initialprojekt Foodcoach, mit der da:nova GmbH als Auftraggeber, wurde ein nach persönlichen Benutzeraspekten abgestimmter Ernährungsplan sowie ein ernährungszentriertes Präventionsprogramm nach §20 SGB implementiert. Das Projekt hat bisher (Stand April 2017) einen Umfang von ca. 2 Mannjahren und wurde mit durchschnittlich 15 Personen spezifiziert, entwickelt und getestet. Das Projekt wird im Rahmen eines Forschungsprojekts in Zusammenarbeit mit der da:nova GmbH und der Uni Erlangen weiter entwickelt.

Lösungsansatz und Übertragbarkeit
Für die codemanufaktur als relativ junges Unternehmen stellte sich die prinzipielle Frage nach der Ausgestaltung der Testumgebung auch im Hinblick auf zukünftige Projekte. Nach einigen Vorüberlegungen und einer Evaluierungsphase wurde entschieden die hier vorgestellte Lösung mit Docker zu entwickeln. Maßgeblich dafür war die mögliche Integration in den Buildprozess, die Möglichkeit der Nutzung der Images im Produktivbetrieb, das einfache Setup in der Testumgebung sowie die Möglichkeiten die Abhängigkeiten von Betriebssystemen und anderer Software auf ein absolutes Minimum zu beschränken. Im Rahmen der Entwicklung der schlüsselwortbasierten Testfälle wurde den Testern die Applikation mit allen Abhängigkeiten (MariaDB, MongoDB) in Containern zur Verfügung gestellt. Dadurch war es möglich auf den einzelnen Testermaschinen das Testsystem völlig transparent zu starten ohne andere Anwendungen oder Testsysteme zu beeinflussen. Sofern notwendig, war es problemlos möglich mehrmals täglich auf neuere Versionen aus der Continous Integration Umgebung zurückzugreifen ohne das lange Installationsprozeduren in Kauf genommen werden mussten. Auch für die Unittests im Rahmen des Buildprozesses mit Jenkins wurden virtualisierte Anwendungsinstanzen benutzt. Der Lösungsansatz ist generisch und wird innerhalb der codemanufaktur, soweit technisch möglich, für alle Server- und Infrastrukturkomponenten eingesetzt. Limitiert sind derzeit noch Projekte im Windowsumfeld, da Docker for Windows noch keine Produktionsreife besitzt.

Heiko Kracker, codemanufaktur GmbH

Dipl. Wirt-Inf. Heiko Kracker ist der Leiter Qualitätssicherung bei der codemanufaktur GmbH Erlangen. Nach seinem Studium der Diplom Wirtschaftsinformatik an der FH Karlsruhe arbeitete Herr Kracker einige Jahre als Softwareentwickler u. a. in den Bereichen Telekommunikation (Glasfaser Backbones), Automotive und Geschäftsprozesssoftware/Ticketing-Systeme. Seit 2012 ist er als Testmanager tätig und verantwortet seit 2015 bei der codemanufaktur GmbH den Testbereich als Leiter der Qualitätssicherung. Hier sind die Anforderungen weit gefächert, z. B. Auswertungssoftware für Daten von Fahrzeugbussystemen oder interaktive Ernährungsberatung mit Gesundheitspräventionsanwendung.

Die besondere Expertise von Herrn Kracker liegt im Bereich des Keyword Driven Testing sowie der Automatisierung von GUI Tests mit unterschiedlichen Techniken. Aufgrund aktueller, neuer Projekte ist das Thema Container Virtualisierung mit besonderem Augenmerk auf den Testbereich zu seinem Aufgabengebiet hinzugekommen.

Reinhold Schmidt, codemanufaktur GmbH

Reinhold Schmidt ist seit 16 Jahren in der IT-Branche tätig, davon 12 Jahre als Softwareentwickler. Neben seiner eigentlichen Entwicklertätigkeit u. a. im Umfeld von Softwareverteilsystemen übernahm er auch immer wieder "fachfremde" Aufgaben wie die Administration von Servern und Serveranwendungen im Entwicklungsumfeld wie z.B. Softwareversionierungsserver, Ticket- und Wiki-Systeme uvm.. Der dabei gewonnene Erfahrungsschatz ließ ihn mit der Zeit verstehen, wie man mit dem gezielten Einsatz diverser Tools das Entwicklungsteam effektiv unterstützen kann, so dass dieses ein Endprodukt mit höchstmöglicher Qualität herstellen kann - lange bevor der modische Begriff "Devops" in der IT etabliert war.

Diese duale Rolle führt er nun seit 2014 bei der Codemanufaktur GmbH fort. Zusammen mit Heiko Kracker baute er eine CI-/CD-Umgebung auf Basis u.a. von Jenkins, Atlassian Bitbucket und Sonatype Nexus auf, die je nach Projekt innerhalb weniger Minuten ein vollautomatisches Deployment neuer Versionsstände auf Test- und Integrationsservern ermöglicht. Da er als C#-Entwickler mit Schwerpunkt "Automotive" auch jetzt noch stark in das "Development" involviert ist, kennt er somit die Anforderungen an die "DevOps"-Prozessphilosophie nicht nur von der "Operations"-Seite her.