2021
April
27
2021

Wie wir unsere Infrastruktur aus Nutzersicht testen

Wer eine komplexe technische Lösung entwickeln lässt, möchte sichergehen, dass er auch erhält, was vereinbart wurde. Insbesondere in der IT-Branche ist es deshalb üblich, dass bei der Übergabe an den Kunden Abnahmetests erfolgen, um die Einhaltung der Spezifikation sicherzustellen. Bei einem standardisierten, kontinuierlichen Service, wie z.B. bei Cloud-Services, erfolgt diese Übergabe laufend. Genau deshalb haben wir bei cloudscale.ch eine "Acceptance Test Suite" entwickelt – und diese kürzlich auch auf GitHub veröffentlicht. Dadurch erhalten Sie Einblick in einen Teil unserer Qualitätssicherung und können sich selber davon überzeugen, welchen Anspruch wir an unsere Cloud-Infrastruktur stellen.

Was getestet wird

Wir haben die Acceptance Test Suite entwickelt, um ein möglichst vollständiges Bild unserer Cloud-Infrastruktur aus Kundensicht zu haben. Diese End-to-End-Tests berühren daher praktisch jeden Winkel unseres Cloud-Angebots: Dass ein einzelner Server tatsächlich bis zu 128 Volumes haben kann wird genauso geprüft wie das Skalieren von Servern zwischen Flex- und Plus-Flavors, das Verschieben einer Floating IP zwischen zwei Servern oder die Nutzung von Jumbo Frames in einem privaten Netz. Die Acceptance Tests simulieren dabei einen Power-User, der alle Features unseres Angebots nutzt. So haben wir die Gewissheit, dass unsere Infrastruktur auch im täglichen, vielseitigen Einsatz durch unsere Kunden einwandfrei funktioniert.

Die Acceptance Tests nutzen unsere öffentliche API und damit die gleiche technische Schnittstelle, auf die auch unser CLI und DevOps-Tools wie Ansible und Terraform zugreifen. Da die Acceptance Tests somit vollständig automatisiert werden können, eignen sie sich für die regelmässige Ausführung: wir lassen sie von GitHub aus täglich gegen unsere beiden Cloud-Standorte laufen, um permanent die "Aussensicht" unserer Kunden im Blick zu behalten. Ebenfalls täglich testen wir damit auch unsere Lab-Setups; dazu kommen gezielte Test-Runs vor und nach grösseren Updates. Als Ergänzung zu unseren manuellen Verifikationsschritten im Lab geben uns die Acceptance Tests damit eine zusätzliche Gewissheit, dass geplante Arbeiten an produktiven Systemen keine negativen Auswirkungen für unsere Kunden haben werden.

Komplett ausgeklammert aus unseren eigens entwickelten Acceptance Tests ist einzig der S3-kompatible Object Storage, der auf Ceph basiert. Dort nutzen wir die entsprechenden automatisierten Tests, die im Umfeld dieses Open-Source-Projekts bereits öffentlich zur Verfügung stehen.

Was die Acceptance Tests für unsere Kunden bedeuten

Um negative Auswirkungen von Einzelereignissen wie z.B. Hardware-Defekten auf unsere Kunden zu minimieren, setzen wir auf Redundanz und ein feinmaschiges Monitoring. Mit den Acceptance Tests, die von aussen eine Vielzahl von Nutzungsszenarien simulieren, erweitern wir dieses Monitoring und decken so auch Fälle ab, in denen zwar alle "Rädchen" für sich genommen funktionieren, aber dennoch aus irgendeinem Grund nicht korrekt ineinandergreifen. Typisch sind hier Konfigurationsfehler oder Versions-Updates, die ein leicht verändertes Verhalten von Systemen mit sich bringen. Dank der umfassenden Acceptance Tests bemerken wir auch Edge-Cases oft bereits im Lab; die regelmässigen Tests der produktiven Systeme bestätigen uns dann, dass unseren Kunden auch über die Zeit hinweg alle Features wie gewohnt zur Verfügung stehen.

Trotz allem kommt es vor, dass Probleme an unerwarteten Stellen auftauchen – ein vormals korrektes Verhalten eines Systems ist plötzlich nicht mehr gegeben. Einer der Wege, um solche "Regressions" in Zukunft zu verhindern, ist die Erweiterung unserer Acceptance Test Suite. Als Projekt, das gewachsen ist und weiter wächst, entwickeln sich die Acceptance Tests zusammen mit unserem Cloud-Angebot weiter. Von diesem institutionalisierten Lernprozess profitieren selbstverständlich alle Kunden – ganz automatisch.

cloudscale.ch Acceptance Tests auf GitHub

Wie Sie sich Ihr eigenes Bild machen

Das Hauptziel unserer Acceptance Tests ist natürlich, dass Sie sich in Ihrem Alltag auf die dokumentierten Features unserer Infrastruktur verlassen können. Wir gehen aber noch einen Schritt weiter: Auf GitHub können Sie die Test-Runs gegen unsere produktiven Cloud-Infrastrukturen inklusive der Resultate einsehen. Dabei gilt es zu beachten, dass im Internet immer mal etwas dazwischen kommen kann; Tests werden daher ggf. einmal wiederholt, bevor sie als "failed" ausgewiesen werden.

Für alle, die noch etwas genauer hinschauen möchten, haben wir den Quellcode unserer Acceptance Tests auf GitHub veröffentlicht. So können Sie im Detail nachvollziehen, was und wie wir testen. Falls gewünscht können Sie die Tests auch selbst gegen unsere Infrastruktur laufen lassen. Sie benötigen dafür lediglich ein Linux- oder macOS-System mit Python ab Version 3.6 sowie einen Account bei cloudscale.ch (wir empfehlen zur Sicherheit die Nutzung eines separaten Accounts, in welchem Sie keine produktiven Ressourcen betreiben).


Unsere Kunden zählen darauf, dass ihre Infrastruktur bei cloudscale.ch zuverlässig funktioniert. Regelmässige Tests sowohl in unserem Lab als auch auf der produktiven Infrastruktur sind dabei ein fixer Bestandteil unserer Qualitätssicherung. Indem wir unsere Acceptance Tests nun auf GitHub offenlegen, erhalten Sie einen direkten Einblick in dieses zentrale Werkzeug, an dem wir uns Tag für Tag messen.

Testet auf Herz und Nieren,
Ihr cloudscale.ch-Team

Zurück zur Übersicht