In modernen Cloud-Umgebungen werden Anwendungen deutlich öfter gestoppt und gestartet, als in klassischen Deployment-Szenarien. Dies liegt zum einen an immer kürzer werdenden Release-Zyklen, aber auch daran, dass Cloud-Architekturen aus mehr Deployment-Einheiten bestehen, die unabhängig voneinander deployt werden. Noch mehr Anwendungsstopps und -starts lösen die Cloud-Plattformen selbst aus, da sie selbständig die Anwendung skalieren oder Last auf ihren Knoten umverteilen. Damit bei all dem die Verfügbarkeit des Gesamtsystems stets gewährleistet ist, müssen auch wir Entwickler verstehen, was passiert, wenn unsere Anwendung in der Cloud neu gestartet wird, sodass wir wo immer nötig exakt kontrollieren können, wie der Anwendungsneustart durchgeführt wird.

In unserer Session analysieren wir am Beispiel einer Spring-Boot-Anwendung, die in einem Kubernetes-Cluster betrieben wird, wie ein Deployment/Neustart einer Anwendung abläuft. Dabei zeigen wir insbesondere auf, welche Hindernisse für Zero Downtime – allen Einstellungen für Rolling Deployments zum Trotz – nicht nur in der Anwendung, sondern auch im Zusammenspiel mit Kubernetes und weiteren Komponenten, wie Loadbalancern, Ingress etc. lauern und wie ihr dennoch echte Zero Downtime Deployments erreicht.