nxt steht VSHN zur Seite
15.10.2021, Christian Mäder

VSHN pflegt mit nxt eine partnerschaftliche Beziehung bezüglich Softwareentwicklung. Zu Beginn des Jahres suchte VSHN dringend Verstärkung, um die eigenen Werkzeuge zur Automatisierung der angebotenen Clouddienste zu verbessern und die Entwicklung neuer Produkte in Angriff nehmen zu können. nxt konnte schnell aushelfen und sich einbringen. Es entstand eine erfolgreiche Zusammenarbeit, die das ganze erste Halbjahr 2021 überdauerte.

Ausgangslage

Nebst dem Angebot APPUiO Public bietet VSHN seinen Kunden auch dedizierte Kubernetes Cluster an, die teilweise in den Rechenzentren der Kunden betrieben werden. Ein Grossteil dieser Cluster wird direkt durch VSHN betreut und instand gehalten. Um den Aufwand der Wartung dieser Cluster in Grenzen zu halten, hat VSHN über die Zeit eigene Werkzeuge entwickelt, die ihnen die Wartungsarbeit erleichtern oder komplett automatisieren. Einige dieser Werkzeuge stellt VSHN sogar als Open Source Software allen Interessierten kostenlos zur Verfügung. Das wichtigste dieser Projekte ist K8up (ausgesprochen wie “kate-up” auf Englisch).

Vorgehen

nxt soll ein neu gegründetes internes Team der VSHN unterstützen, bis dieses genügend gewachsen ist, um die anfallenden Aufgaben komplett selber zu erledigen. Die erste Bedarfsabklärung hat ergeben, dass VSHN vor allem Know-How und Kapazitäten in der Programmiersprache Go benötigt, gekoppelt mit Wissen über die Funktionsweise von Kubernetes.

Sofort nachdem die Rahmenbedingungen geklärt waren, haben wir uns zwei bis dreimal pro Woche ins Dailymeeting eingeklinkt und gemeinsam mit dem Team an den anfallenden Aufgaben gearbeitet. Zudem haben wir bei den Software Reviews der jeweiligen Features unseren Rat angebracht und haben bei der Priorisierung der anstehenden Aufgaben in den Planungsmeetings geholfen.

Resultate

Nebst der Mitarbeit an vielen internen Tools lag der Hauptfokus des Auftrags auf der Stabilisierung und Weiterentwicklung des oben erwähnten K8up Werkzeugs. Mit dem Tool lassen sich auf einem Kubernetes Cluster automatisch Backups von Anwendungen und Diensten (wie Datenbanken) durchführen. Der Clou dabei ist, dass an den eigentlichen Kundenanwendungen keine Anpassungen gemacht werden müssen. Lediglich die Definitionen der jeweiligen Deployments in Kubernetes müssen unter Umständen minimal erweitert werden.

Für das K8up Projekt hat nxt im Auftrag von VSHN die existierenden Unittests um Integrationstests und Ende-zu-Ende (E2E) Tests erweitert. Die Integrationstest verifizieren die Interaktion mit einer massiv abgespeckten Kubernetes API. Diese Tests benötigen nur wenig Ausführungszeit und erlauben so, dass sie häufig und bereits während der Entwicklung regelmässig gestartet werden.

Die E2E Tests hingegen erstellen ein komplettes Kubernetes Cluster mit Kubernetes-in-Docker (KIND). Darin wird der S3-kompatiblen Dateiserver Minio gestartet, worauf die Backups abgelegt werden. Im Cluster wird eine Testapplikation gestartet, deren Daten es zu sichern gilt. Diese Sicherung wird durch K8up in diesem Testcluster durchgeführt und die Sicherung wird auch wieder zurückgespielt, also ein Restore gemacht. Ein kompletter Durchlauf der E2E Tests dauert deshalb zehn bis zwanzig Minuten. Deshalb werden diese Tests vor allem zum Ende der Entwicklung einer neuen Funktion ausgeführt.

Sämtliche Tests werden jedoch vor jeder Änderung, die in K8up einfliessen soll, automatisch ausgeführt. Damit ist der wesentliche Funktionsumfang von K8up jederzeit gewährleistet. Schon innert kurzer Zeit haben sich die Tests bewährt und potenzielle Fehler in nachfolgenden Anpassungen an K8up aufgedeckt.

Da das K8up Projekt bereits durch Kunden von VSHN und auch durch Dritte eingesetzt wird, hat VSHN beschlossen, K8up in eine eigene GitHub-Organisation zu überführen. Dies wurde zum Anlass genommen, die zwei Applikationen des Projektes in einer einzelnen zusammenzufassen. Zuvor war der Code dieser Applikationen unabhängig verwaltet worden, obwohl die Applikationen eine sehr enge Abhängigkeit zueinander hatten. Dies führte bei Anwendern zu Verwirrung und erschwerte im Fehlerfall die Ursachenbestimmung.

Heute wurde die Version 2 von K8up veröffentlicht, welche die Früchte all dieser Arbeit trägt. Ein grosser Teil davon wurde durch nxt im Auftrag von und in enger Zusammenarbeit mit VSHN durchgeführt.

Nächste Schritte

Nachdem das interne Team, welches durch nxt unterstützt wurde, nun genügend gewachsen ist und sich gut eingespielt hat, endet der Auftrag für nxt. Das Team hat jedoch Grosses vor. So hat VSHN vor wenigen Tagen angekündigt, dass es die nächste Version von APPUiO, die «APPUiO Cloud», demnächst bereitstellen möchte.