The Doppler Quarterly (DEUTSCHE) Frühjahr 2018 | Page 57

Das Team grenzte das Problem auf drei Aspekte ein, die bei dieser Anwen- dung fehlten: 1. Standardisierte CI/CD-Pipeline für die Automatisierung von Builds und Implementierung 2. Stabile und wiederholt ausführbare Implementierungen 3. Kleinere und häufigere Releases Beginn mit einem Basisimage Zunächst wollten wir den Umfang der Codeänderungen während der Containerisie- rung minimieren. Damit lässt sich die Komplexität reduzieren, während wir dennoch die Möglichkeit haben, einen Regressionstest vor und nach dem Plattformwechsel von VMs zu Containern durchzuführen. Sobald die Anwendung in Containern in der Produktionsumgebung ausgeführt wurde, wollten wir die Vorteile von Containern für das Refactoring und die Neugestaltung der Architektur der Anwendung nutzen. Da es sich hierbei um ein „Lift-and-shift“-Szenario handelte, wurden das Betriebssystem und die Bibliotheken von der vorhandenen Anwendung defi- niert. Unser Ziel bestand darin, die beste Vorgehensweise für die Integration dieser Abhängigkeiten in einen Container zu finden. Die Anwendung erfor- derte Linux und das Java Development Kit. Daher nutzten wir ein Open-Sour- ce-Image von Docker Hub, das auf Alpine Linux und OpenJDK basierte. Je nach Situation gibt es weitere Möglichkeiten, z. B. zertifizierte Images aus dem Docker Store, falls Sie Support benötigen, oder die Erstellung eines neuen benutzerdefinierten Images, um die Richtlinien und Tools des Unternehmens beizubehalten. Die zuletzt genannte Möglichkeit bietet die größte Flexibilität, erfordert jedoch zusätzlichen Aufwand für Support und Wartung. Wir erstellten eine Dockerfile aus einem Open-Source-Basisimage, kopierten die Anwendungs-JAR-Datei in das Dateisystem des Containers und führten dann die Anwendung aus, indem wir die JAR-Datei aus dem Befehl ausführten. FRÜHJAHR 2018 | THE DOPPLER | 55