Kanarische Tests
Table of Contents
Was ist Canary Testing?
Canary Testing ist eine Möglichkeit, Risiken zu reduzieren und neue Software zu validieren, indem man sie nur einem kleinen Prozentsatz von Nutzern zur Verfügung stellt. Mit Canary Testing kannst du die Software nur für bestimmte Gruppen von Nutzern gleichzeitig bereitstellen. Canary Releases sind eine Erfolgsmethode(n) in der Devops- und Softwareentwicklung und werden auch als "Canary Deployment", "Incremental", "Staged" oder "Phased Rollout" bezeichnet.
Der Begriff leitet sich von der Redewendung "Canary in the coal mine" (Kanarienvogel in der Kohlemine) ab, bei der Bergleute einen Kanarienvogel in den Käfig setzten, um festzustellen, ob die Giftgaskonzentration zu hoch war. Da Vögel eine geringere Toleranz gegenüber giftigen Gasen haben als Menschen, war der Tod des Vogels eine frühe Warnung für die Bergleute, das Bergwerk zu evakuieren. Bei der Softwareentwicklung ist das Ergebnis nicht so grausam, aber als Softwareentwickler ist es das Ziel, ein Problem mit einer neuen Software schnell zu erkennen und zu beheben, bevor es das Erlebnis für alle beeinträchtigt.
Wie man Canary-Tests durchführt
Canary-Tests können mit Hilfe von Blue-Green Deployments durchgeführt werden, um den Datenverkehr auf Serverebene aufzuteilen und langsam von einer Version einer Anwendung auf eine neuere Version einer Anwendung umzustellen, indem ein Traffic-Router auf Serverebene verwendet wird.
Datenverkehr nach Anwendungsversion aufteilen
Die Aufteilung des Datenverkehrs nach Anwendungsversion kann auch auf Feature-Ebene erfolgen, indem ein bestimmter Prozentsatz der Endnutzer/innen auf die neue Version des Erlebnisses umgestellt wird (Feature Flags).
1% der Nutzer/innen mit Feature Flag auf das neue Erlebnis umleiten
Wie man Canary-Tests durchführt
Bei Canary-Tests wird neuer Code oder neue Funktionen für eine kleine Gruppe von Nutzern freigegeben, um zu prüfen, ob es Probleme mit dem Code gibt, bevor er für ein größeres Publikum freigegeben wird. Durch die Beschränkung der Veröffentlichung auf einen ausgewählten Personenkreis, um den Aktionsradius neuer Versionen zu minimieren, können Teams die Funktionalität und Leistung überprüfen, bevor sie sie an alle Benutzer/innen ausrollen.
Ein weiterer Grund für Canary-Tests und Produktexperimente ist, dass die Entwicklungs- oder Staging-Umgebungen oft nicht vollständig mit den Produktionsumgebungen übereinstimmen. Durch das Testen mit einem kleinen Prozentsatz von Produktionsnutzern (oft als " Testen in der Produktion" bezeichnet) können Probleme aufgedeckt werden, die in den Staging- oder Entwicklungsumgebungen möglicherweise nicht gefunden wurden.
Canary-Tests und Feature Flags
Mit Hilfe von Feature Flags können Teams die Codefreigabe von der Funktionsfreigabe trennen und Funktionen für bestimmte Gruppen, einen bestimmten Prozentsatz von Nutzern oder für alle Nutzer aus der Ferne ein- und ausschalten. Mit Feature Flags können Teams die Freigabe auf nur 1% der Nutzer/innen beschränken und wichtige Kennzahlen wie Fehlerraten, Latenzzeiten und Geschäftskennzahlen überwachen, um sicherzustellen, dass die neue Funktion keine negativen Auswirkungen hat.
Wenn der Canary-Test während des Einsatzes ein Problem entdeckt, kann die neue Funktion oder der neue Code einfach deaktiviert werden, indem das Feature Flag ausgeschaltet wird. Canary-Releases können dazu beitragen, größere Ausfälle, Umsatzeinbußen oder eine negative Kundenstimmung zu verhindern, indem sie schnelle Erkenntnisse über die Leistung einer neuen Funktion liefern und gleichzeitig die Zahl der Betroffenen begrenzen.
Canary-Tests und kontinuierliche Bereitstellung
Continuous Delivery wurde von dem einflussreichen Softwareentwickler Martin Fowler ins Leben gerufen und ist eine Disziplin der Softwareentwicklung, bei der Software jederzeit für die Produktion freigegeben werden kann. Sie wurde von führenden Softwareunternehmen auf der ganzen Welt übernommen, von deren Teams nun erwartet wird, dass sie ihrer Benutzerbasis schnell stabile und fehlerfreie Software liefern.
Canary Testing passt zu den Methoden der kontinuierlichen Bereitstellung und der kontinuierlichen Integration. Die besten Continuous-Delivery-Systeme, wie z.B. die von Facebook, integrieren tiefgreifendes Monitoring und automatisierte Tests in ihre Canary-Tests. Wenn eine Funktion nach der Bereitstellung als Canary für einen bestimmten Prozentsatz der Nutzer/innen eine Überwachungsprüfung nicht besteht, wird sie automatisch zurückgesetzt. Mit Continuous Deployment und Canary-Tests kann ein Team neue Funktionen und Code-Änderungen sicherer in großem Umfang veröffentlichen.
Canary-Tests in der Intelligence Cloud
Softwareentwicklungsteams können jetzt die kostenlosen Feature Flags von Optimizely nutzen, um Feature Flags für Canary-Tests zu implementieren.
Teams können die Praktiken der kontinuierlichen Integration und der kontinuierlichen Auslieferung übernehmen, die von den fortschrittlichen Entwicklungsteams von heute eingesetzt werden. Beide Teams - und ganze Unternehmen - können von den schnelleren Entwicklungszyklen und Feature-Management-Praktiken wie Canary-Tests zur Risikominderung profitieren.
Optimizely-Kunden, die serverseitige Experimente durchführen, können in die Fußstapfen der weltweit führenden Softwareunternehmen (wie Amazon, Google und Facebook) treten, die ihre Funktionen nur an einem kleinen Prozentsatz von Nutzern testen, bevor sie sie auf breiter Basis einführen.
Optimizely bietet mit Optimizely Server-side Experimentation auch Feature-Management und A/B-Tests auf Unternehmensniveau an, eine leistungsstarke Lösung für Canary-Tests, kontrollierte Feature-Releases und Feature-Tests in deinem Produkt oder deiner App.