Canary Testing: Was ist das und wie können Sie davon profitieren?
Veröffentlicht: 2022-08-20Wenn Sie kein Programmierer sind, haben Sie wahrscheinlich noch nie von Canary-Tests gehört. Das ist in Ordnung, aber Sie fragen sich wahrscheinlich, was es ist und warum es Canary-Tests heißt?
Der Begriff leitet sich von der Redewendung „Kanarienvogel in der Kohlemine“ ab. Sie sehen, Kohlebergleute brachten früher einen eingesperrten Kanarienvogel mit in die Kohlemine, da Kanarienvögel eine geringere Toleranz gegenüber giftigen Gasen haben.
Daher wussten die Arbeiter, dass sie die Mine verlassen sollten, wenn der Kanarienvogel starb. In Bezug auf die Softwareentwicklung besteht das Ziel bei der Erstellung neuer Software darin, Probleme so schnell wie möglich zu erkennen und zu lösen, bevor sie zu einem Problem für die Benutzer werden.
Was ist Canary-Testing?
Canary-Testing ist die Methode zum Ausprobieren neuer Funktionalitäten und Features mit hoffentlich minimalen negativen Auswirkungen auf die Seite des Benutzers. Diese Art des Testens wird normalerweise mit einer kleinen Gruppe von Benutzern verwendet, für die die Anwendung mit kleinen Änderungen präsentiert wird. Auf diese Weise wird die Mehrheit der Benutzer immer noch die aktuelle Version der Software verwenden, während die ausgewählte, kleinere Gruppe von Benutzern eine leicht aktualisierte Version verwendet.
Der Zweck dieser Übung besteht darin, der Mehrheit der Benutzer der Software zu ermöglichen, ohne Probleme weiter damit zu arbeiten, während Änderungen nur für einen kleinen Prozentsatz der Benutzer durchgeführt werden.
All dies geschieht, während sowohl die vorhandene als auch die neue Version der Anwendung gleichzeitig ausgeführt werden. Wenn der Canary-Test dann keine Fehler zurückgibt, können Sie ihn weiter auf größere Prozentsätze von Benutzern ausdehnen.
Den Lesern gefällt auch : Was ist Rapid Application Development? 4 Phasen der RAD-Methodik – DevriX
Wie führe ich einen Canary-Test durch?
Der erste Schritt in einem Canary-Test besteht darin, eine Reihe von Back-End-Servern oder Containern zu starten, um den neuen Code auszuführen. Sobald es neue Benutzer gibt, sendet Ihr Load Balancer einen Prozentsatz von ihnen an den „Canary-Cluster“.
Die DevOps-Spezialisten überwachen dann die Server, um potenzielle Probleme wie die Rechenlast oder höhere E/A-Raten zu identifizieren. Und denken Sie daran, dass es selbst bei schwerwiegenden Problemen einfach ist, den ursprünglichen Zustand wiederherzustellen, da der Vorgang nicht alle Benutzer der Software betrifft.
Andernfalls können Sie Canary-Tests einfach implementieren und automatisieren, indem Sie Tools wie Spinnaker verwenden, um die Anzahl der Benutzer festzulegen, die den neuen Code verwenden.
Dieser Prozentsatz liegt normalerweise bei etwa 5 %, und sobald das zugewiesene DevOps-Team feststellt, dass keine Probleme vorliegen, kann es diesen Prozentsatz kontinuierlich erhöhen, bis alle die neue Codeversion der Anwendung verwenden.
Darüber hinaus sind Canary-Tests in Situationen von Vorteil, in denen Entwicklungs- oder Staging-Umgebungen nicht vollständig mit der Produktionsumgebung übereinstimmen. Durch die Verwendung einer kleinen Testgruppe von Benutzern können alle Probleme aufgedeckt werden, die während der Staging- oder Entwicklungsumgebungen nicht erkannt wurden.
Den Lesern gefällt auch : A/B-Testing mit WordPress: The Definitive Guide – DevriX
Vor- und Nachteile von Canary-Tests
Lassen Sie uns das Gute und das Schlechte beim Testen anhand der Canary-Methode definieren.
Vorteile von Canary-Tests
- Tests in der realen Welt . Das Testen in geschlossenen, internen Umgebungen ist großartig, aber die Möglichkeit, Software an echten Benutzern zu testen, bringt Sie einen Schritt weiter. Mit Canary-Bereitstellungen können Sie genau das tun – testen Sie Ihre Anwendung in einem kleinen Publikum, ohne das Risiko einzugehen, eine komplett neue Anwendung zu veröffentlichen.
- Besseres Risikomanagement . Durch die schrittweise Veröffentlichung neuer Funktionen und die Sicherstellung, dass sie ordnungsgemäß funktionieren, werden signifikante Fehler und die Gesamtkosten von Ausfällen erheblich reduziert.
Durch die Verwendung der Canary-Testmethode entfällt im Grunde die Notwendigkeit, größere Updates rückgängig zu machen oder große Mengen an Code neu zu schreiben. - Eher geschäftsorientiert . Müssen Sie Geschäftsdaten Managern und Marketing-/Vertriebsmitarbeitern präsentieren? Mit Canary können Sie sehr schnell Ergebnisse anzeigen. Wenn Sie beispielsweise eine neue Softwarefunktion testen möchten, können Sie eine neue Funktion für eine kleine Gruppe von Benutzern bereitstellen und dann abwarten, ob die Funktion gut ankommt oder nicht. Sie können diese Daten dann verwenden, um das Engagement für zu steigern Ihr Produkt.
Nachteile von Canary-Tests
- Softwareprobleme . Es gibt immer noch ungetesteten Code, also sind natürlich Risiken damit verbunden. Falls auch nur wenige Benutzer erhebliche Probleme mit einer bestimmten Funktion haben, ist es am besten, Canary-Tests zugunsten strengerer interner Tests zu überspringen.
- Größere Ausgaben . Wenn Sie beabsichtigen, einen Load Balancer zum Partitionieren von Benutzern zu verwenden, benötigen Sie zusätzliche Infrastruktur und mehr Verwaltung. Das bedeutet, dass Sie zwei separate Produktionsumgebungen und Backends erstellen müssen, um den Test auszuführen. Also zwei Anwendungsserver, zwei Codezeilen, zwei Webserver und eine zu wartende Netzwerkinfrastruktur.
- Schlechte Benutzererfahrung . Einige Benutzer sind möglicherweise nicht sehr begeistert von der Idee, als Testpersonen verwendet zu werden. Wenn Sie offen darüber sprechen möchten, was vor sich geht, können Sie die Benutzer wissen lassen, dass sie als „Kanarienvögel“ missbraucht werden, durch ein „Early Adoption“-Programm oder etwas Ähnliches.
Wann sollten Canary-Tests nicht verwendet werden?
Canary-Tests sind in vielen Fällen von Vorteil, aber es ist keine todsichere Antwort auf alles (das sind 42).
Hier ist, wann Sie den Canary-Ansatz definitiv nicht verwenden sollten:
- In Umgebungen, die nicht für Continuous Deployment geeignet sind.
- Beim Umgang mit kritischer Software wie lebenserhaltenden Systemen oder Kernreaktoren.
- Finanzsysteme, bei denen ein Ausfall erhebliche wirtschaftliche Auswirkungen haben kann.
Wenn Sie Software nicht remote aktualisieren können.
Wie führt man eine Canary-Bereitstellung durch?
Sehen wir uns nun die notwendigen Schritte an, die Sie unternehmen müssen, um eine Canary-Bereitstellung durchzuführen.
- Bereiten Sie die Bereitstellung auf dem Staging-Server vor.
- Schließen Sie Canary-Knoten durch Lastenausgleich aus.
- Stellen Sie die neue Version auf Canary-Knoten bereit.
- Testen Sie die neue Version mit automatisierten Testskripten.
- Verbinden Sie Canary-Knoten mit dem Datenverkehr mit Load-Balancing.
- Rollout des Updates auf die verbleibenden Produktionsknoten.
In der Praxis beginnt die Bereitstellung mit der Vorbereitung des Staging-Servers. Überprüfen Sie die Konfigurationsdateien, Testskripts, Buildartefakte usw. Danach können Sie entweder automatisierte oder manuelle Tests durchführen oder den Server live lassen und sehen, ob alles gut läuft oder ob er abstürzt.
Wann sollte Canary in die Produktion gehen?
Sobald Sie Ihr Canary-Update bei 5 oder 10 % der Benutzer getestet haben und alles ordnungsgemäß funktioniert, können Sie den Prozentsatz der Testbenutzer verdoppeln oder verdreifachen.
Testen Sie dann erneut, sammeln Sie Feedback von Metriken, und sobald Sie festgestellt haben, dass alles einwandfrei funktioniert, können Sie noch einmal 70 % der Produktionsumgebung aktualisieren.
Wiederholen Sie schließlich das Testverfahren, und wenn alles in Ordnung ist, stellen Sie die neue Version der Software für 100 % der Benutzer bereit und führen Sie natürlich die Überwachung fort.
Unternehmen, die Canary Deployment implementiert haben
Um Ihnen zu zeigen, dass Canary Deployment eine beliebte Implementierungsmethode ist, werfen wir einen Blick auf einige Unternehmen, die Canary Deployment verwenden.
Netflix
Seit 2018 nutzt der Streamingdienst-Riese mit Kayenta die automatisierte Canary-Analyse. Diese ermöglicht extrem schnelle Updates der Produktionsumgebung von Netflix. Das Unternehmen gibt an, dass diese Bereitstellungsmethode die Produktivität von Entwicklern erhöht und gleichzeitig das Risiko von Änderungen in ihrer Produktionsumgebung verringert hat.
Auch diese Social-Media-Plattform ist seit langem ein Fan des Canary-Einsatzes. Ihr Mitbegründer und CTO, Mike Krieger, teilte mit, dass Canary-Releases sicherstellen, dass Fehler nicht zu viel Schaden anrichten und nur eine kleine Gruppe von Menschen betreffen.
Wussten Sie, dass Google Chrome eine spezielle Version für Entwickler hat? Richtig, Google Chrome Canary ermöglicht es Ihnen, die neuen Webplattform-APIs zu testen und vor allen anderen zu sehen, wie die Zukunft des Browsers aussehen würde.
Microsoft
Microsoft setzt seine eigenen Mitarbeiter ein, um alle Produktupdates zu testen. Das Verfahren gibt es seit Windows Vista und Microsoft Azure. Das Windows 10-Upgrade wurde auch mithilfe von Canary-Updates der Betriebssysteme ihrer Mitarbeiter durchgeführt.
Zusammenfassung
Canary-Tests sind eine großartige Möglichkeit, neue Anwendungsversionen schnell in realen Testumgebungen einzuführen. Darüber hinaus ermöglicht es ein besseres Risikomanagement und nachvollziehbarere Daten.
Obwohl Canary-Tests so viele Vorteile haben, ist es nicht immer die Lösung für jede Situation. Stellen Sie sicher, dass Sie Ihre Nachforschungen anstellen, bevor Sie eine Canary-Bereitstellung starten, da dies sonst nach hinten losgehen könnte.