Software-Updates, regelmäßig und automatisiert: Continuous Delivery mit Kubernetes
02.12.2019
Software-Zyklen, sprich das Bereitstellen neuer Funktionen und Beheben von Fehlern, drehen sich immer schneller im Kreis. Und das gerade im Cloud-Umfeld, in dem Anwender eine möglichst perfekt funktionierende Anwendung erwarten.
Mit herkömmlichen Software-Entwicklungsprozessen ist das allerdings im gewünschten Tempo nicht mehr zu bewerkstelligen. Daher kommt verstärkt eine Methode zum Einsatz, die sich Continuous Delivery nennt. Damit erfolgt das Implementieren von neuen und verbesserten Software-Funktionen sehr viel regelmäßiger und nicht mehr einmal oder seltener im Quartal oder Monat. So oft eben, wie es die Anwender oder Kunden wünschen. Damit können auch unnötige oder selten genutzte Funktionen schneller aufgespürt werden.
Damit dies problemlos und zuverlässig geschehen kann, setzen immer mehr Software-Entwickler (so also auch Sandro Koll von x-cellent technologies) auf besagtes "Continuous Delivery". Doch nicht nur das regelmäßige Bereitstellen spricht für diese Arbeitsweise, sondern auch die Fehlersuche wird damit erheblich verbessert und beschleunigt. Denn wenn zwischen zwei Updates eine relativ kurze Zeitspanne liegt, gelingt das Aufspüren eines Bugs deutlich schneller.
Damit Continuous Delivery auch funktionieren kann
Doch was ist für Continuous Delivery überhaupt vonnöten? Nun, neben der passenden Entwicklungsumgebung ist eine sogenannte Continuous Integration-Plattform notwendig, die eine Art automatisierte Pipeline darstellt. Hierfür setzt x-cellent Git und GitLab ein, weil beide laut Sandro einen hohen Funktionsumfang aufweisen und relativ einfach zu handhaben sind.
Darüber hinaus sind Tools wie Docker oder Kubernetes für ein problemloses Rollback erforderlich. Falls also einmal ein Software-Update unvorhersehbare Schwierigkeiten bereitet und man den vorherigen Status Quo wiederherstellen will.
Daneben sind auch organisatorische Bedingungen für Continuous Delivery erforderlich. So müssen den Software-Entwicklern genügend Freiräume für diese Art des Arbeiten ermöglicht werden. Wie mir Sandro im Gespräch versicherte, sind viele Unternehmen hierfür bereits vorbereitet. Es ist also selbstredend, dass bei den Software-Projekten, die von x-cellent betreut werden, Continuous Delivery ein fester Bestandteil ist.
Continuous Delivery und Kubernetes, ein gutes Gespann
Jedes Software-Update, das mithilfe von Continuous Delivery erfolgt, benötigt eine funktionierende Automatisierungsmethode. Hierfür kommt in vielen x-cellent-Projekten Kubernetes zum Einsatz. Denn damit erfolgt das Einspielen neuer Funktionen völlig geräuschlos und sehr sicher. Denn während die neue Software-Version automatisch eingespielt wird, funktioniert die alte noch solange im Hintergrund, bis das Update erfolgreich abgeschlossen wurde. Damit bekommen die Anwender das Einspielen der neuer Software gar nicht mit. Das geht sogar soweit, dass zwei Versionen gleichzeitig verfügbar sind, was ein Höchstmaß an Verfügbarkeit sicherstellt. Und am Ende dieses Vorgangs werden sämtliche alten, nicht mehr benötigten Container vom Server entfernt - natürlich wieder vollautomatisch.
Praktisch an Kubernetes in diesem Kontext ist auch die Möglichkeit, neue Software-Versionen erst einmal nur einer fest definierten Anwenderschar bereitzustellen, weil diese in einem geschäftsunkritischen Bereich arbeiten. Sollte sich dann ein Fehler bemerkbar machen, lässt sich dieser beheben, bevor die neue Version in größerem Stil installiert wird. Dies geschieht ohne größeren Aufwand, da Kubernetes mithilfe einer einzigen Anweisung eingestellt wird.