2018
Mai
17
2018

Continuous Integration (CI) bei cloudscale.ch

Bei cloudscale.ch sind wir stets bestrebt, nicht nur unsere Produkte, sondern auch unsere Prozesse zu verbessern. Eine Sache, auf die wir uns in letzter Zeit konzentriert haben, ist das automatisierte Testen. Um zu vermeiden, dass wir bei der täglichen Arbeit aus Versehen etwas kaputt machen, haben wir eine wachsende Reihe von Tests entwickelt, die vor jeder Änderung am Live-System durchlaufen werden. In diesem kurzen Beitrag erfahren Sie:

Wie Continuous Integration bei cloudscale.ch aussieht

Obwohl wir natürlich ein "Infrastruktur-Unternehmen" sind, schreiben wir auch eigene Software, z.B. für unser Cloud-Control-Panel. So wie viele unserer Kunden verwenden auch wir Git zur Verwaltung des Quellcodes, der den Grundstein für unser einzigartiges Benutzererlebnis legt. Hier kommt nun GitLab CI ins Spiel: GitLab CI erkennt, wenn neue Commits gepusht werden. Bei jedem neuen Commit startet es eine "Pipeline" aus mehreren Test-Jobs.

Im Falle unseres Cloud-Control-Panels haben wir zwei verschiedene Typen von Tests: Unit-Tests und Integration-Tests. Unit-Tests werden isoliert gegen ein kleines Stück Code ausgeführt und erfordern keine Interaktion mit anderen Services. Integration-Tests hingegen testen wirklich die Gesamt-Infrastruktur. So haben wir beispielsweise Tests, die effektiv Server in unserer OpenStack-basierten Cloud starten, oder Buckets im Object Storage erstellen, welcher auf unserem Ceph-Cluster aufbaut. Ein positives Testergebnis ist für uns ein starkes Indiz, dass der geänderte Code weiterhin alle Anwendungsfälle abdeckt, auf welche sich unsere Kunden verlassen.

Wo Continuous Integration bei unserer Qualitätssicherung hilft

Um sicherzugehen, dass alle unsere Dienste nach wie vor funktionieren, führen wir neben der permanenten Überwachung aller Systeme und Einzelkomponenten auch jede Nacht unsere Tests aus. Auf diese Weise können wir potenzielle Probleme in unserer Infrastruktur frühzeitig erkennen und Massnahmen treffen, um den bestmöglichen Service zu gewährleisten.

Darüber hinaus wird unsere Terraform-Implementierung ebenfalls täglich mit einem speziellen Set von Akzeptanztests getestet. Auf diese Weise stellen wir sicher, dass unser Terraform-Provider problemlos mit unserer API interagiert.

Eine gute Testsuite ist das Herzstück jeder guten Software und sollte sich über die Zeit weiterentwickeln und verbessern. Während wir unsere Software ständig optimieren und erweitern, können wir uns darauf verlassen, dass unsere umfangreiche und wachsende Reihe von Tests uns dabei hilft, nichts kaputt zu machen. Automatisiertes Testen ermöglicht es uns nicht nur, Code schneller zu entwickeln, sondern erlaubt auch eine breitere Testabdeckung und damit eine höhere Produktqualität.

Warum wir weitergehen in Richtung Continuous Delivery (CD)

Während uns automatisierte Integration-Tests eine grosse Menge mühsamer, manueller Arbeit abnehmen, besteht weiteres Verbesserungspotenzial: Wir planen auch den Einsatz von Continuous Delivery mit GitLab CI. Continuous Delivery wird es uns ermöglichen, in den Produktions-Branch zu pushen und einfach dabei zuzuschauen, wie der Commit ausgerollt wird.

Wir wissen, dass Sie die neusten Funktionen und Optimierungen so schnell wie möglich nutzen möchten – wer schon nicht? Deshalb bieten wir unseren Entwicklern die nötigen Werkzeuge, um Wiederholung zu vermeiden. Schliesslich sind es nicht die repetitiven Hintergrundaufgaben, welche einen Mehrwert für unsere Nutzer schaffen, sondern die Entwicklung konkreter Lösungen – und, natürlich, deren Lieferung.


Wir testen und liefern,
Ihr cloudscale.ch-Team

Zurück zur Übersicht