Canary-Test

Ein Canary-Test ist eine Methode, um Risiken zu reduzieren und neue Software zu validieren, indem sie nur für einen kleinen Prozentsatz der Nutzer freigegeben wird.

Was ist ein Canary-Test?

Ein Canary-Test ist eine Methode, um Risiken zu reduzieren und neue Software zu validieren, indem sie nur für einen kleinen Prozentsatz der Nutzer freigegeben wird. Mit Canary-Tests können Sie Software schrittweise an bestimmte Nutzergruppen ausliefern. Canary-Releases, auch als inkrementelle, gestaffelte oder phasenweise Rollouts bezeichnet, sind eine Erfolgsmethode in DevOps und der Softwareentwicklung.

Der Ursprung des Begriffs stammt von der Redewendung „Canary in the coal mine" (Kanarienvogel im Kohlebergwerk), bei der Bergleute einen Kanarienvogel im Käfig mit in den Stollen nahmen, um festzustellen, ob die Konzentration giftiger Gase zu hoch war. Da Vögel eine geringere Toleranz gegenüber giftigen Gasen haben als Menschen, war der Tod des Vogels ein Frühwarnsignal für die Bergleute, das Bergwerk zu verlassen. Im Kontext der Softwareentwicklung ist das Ergebnis weniger drastisch – stattdessen besteht das Ziel darin, Probleme mit neuer Software schnell zu erkennen und zu beheben, bevor das Erlebnis aller Nutzer beeinträchtigt wird.

So führen Sie einen Canary-Test durch

Canary-Tests können mithilfe von blau-grünen Bereitstellungen durchgeführt werden, um den Datenverkehr auf Serverebene aufzuteilen und ihn mithilfe eines Traffic-Routers schrittweise von einer Anwendungsversion auf eine neuere umzuleiten.

Canary-Test blau-grüne BereitstellungAufteilen des Datenverkehrs nach Anwendungsversion.

Aufteilen des Datenverkehrs nach Anwendungsversion. Bild: Optimizely 

Oder es kann auf Feature-Ebene granularer mithilfe von Feature Flags erfolgen, um einen Prozentsatz der Endnutzer auf die neue Version des Erlebnisses umzuleiten.

Canary-Test Feature Flags1 % der Nutzer werden mithilfe eines Feature Flag zum neuen Erlebnis weitergeleitet. Bild: Optimizely

1 % der Nutzer werden mithilfe eines Feature Flag zum neuen Erlebnis weitergeleitet.  Bild: Optimizely 

So führen Sie einen Canary-Test durch

Canary-Tests ermöglichen es, neuen Code oder neue Features zunächst für eine kleine Teilmenge von Nutzern freizugeben, um Probleme zu identifizieren, bevor die Veröffentlichung auf ein größeres Publikum ausgeweitet wird. Durch die Begrenzung der Freigabe auf eine ausgewählte Zielgruppe, um den Wirkungsradius neuer Releases zu minimieren, können Teams Funktionalität und Leistung validieren, bevor der Rollout auf alle Nutzer erfolgt.

Ein weiterer Grund für Canary-Tests und Produktexperimentieren ist, dass Entwicklungs- oder Staging-Umgebungen häufig nicht vollständig mit Produktionsumgebungen übereinstimmen. Durch das Testen mit einem kleinen Prozentsatz von Produktionsnutzern (häufig als Testen in der Produktion bezeichnet) können Probleme erkannt werden, die in Staging- oder Entwicklungsumgebungen möglicherweise nicht aufgefallen wären.

Canary-Tests & Feature Flags

Canary-Tests können mithilfe von Feature Flags durchgeführt werden, die es Teams ermöglichen, die Code-Veröffentlichung von der Feature-Aktivierung zu trennen und Features für bestimmte Gruppen, Prozentsätze von Nutzern oder alle Nutzer remote ein- und auszuschalten. Mit Feature Flags können Teams die Freigabe auf nur 1 % der Nutzer beschränken und wichtige Kennzahlen wie Fehlerraten, Latenz und Geschäftsmetriken überwachen, um sicherzustellen, dass das neue Feature keine negativen Auswirkungen hat.

Wenn ein Canary-Test während des Bereitstellungsprozesses ein Problem aufdeckt, lässt sich das neue Feature oder der neue Code einfach durch Deaktivieren des Feature Flag abschalten. Canary-Releases können dazu beitragen, größere Ausfallzeiten, Umsatzverluste oder negative Kundenstimmung zu vermeiden, indem sie schnelle Erkenntnisse über die Leistung eines neuen Features liefern und gleichzeitig die Zahl der Betroffenen begrenzen.

Canary-Tests & Continuous Delivery

Continuous Delivery, maßgeblich geprägt vom einflussreichen Softwareentwickler Martin Fowler, ist eine Disziplin der Softwareentwicklung, bei der Software jederzeit in die Produktion überführt werden kann. Sie wurde von führenden Softwareunternehmen weltweit übernommen, deren Teams heute Software schnell, stabil und fehlerfrei an die Nutzerbasis ausliefern sollen.

Canary-Tests fügen sich in die Methoden der Continuous Delivery und der kontinuierlichen Integration ein. Erstklassige Continuous-Delivery-Systeme wie bei Unternehmen wie Facebook integrieren umfassendes Monitoring und automatisierte Tests in ihre Canary-Tests. Wenn ein Feature eine Monitoring-Prüfung nicht besteht, nachdem es als Canary für einen Prozentsatz der Nutzer bereitgestellt wurde, wird es automatisch zurückgerollt. Mit Continuous Deployment und Canary-Tests kann ein Team neue Funktionalitäten und Codeänderungen sicherer und in großem Umfang veröffentlichen.

Canary-Tests in Intelligence Cloud

Software-Engineering-Teams können jetzt kostenlose Feature Flags von Optimizely nutzen, um Feature Flags für Canary-Tests zu implementieren.

Teams können die Praktiken der kontinuierlichen Integration und Continuous Delivery übernehmen, die von den fortschrittlichsten Engineering-Teams von heute eingesetzt werden. Sowohl Teams als auch ganze Unternehmen profitieren von schnelleren Entwicklungszyklen und Feature-Management-Praktiken wie Canary-Tests zur Risikominimierung.

Kunden von Optimizely Server-Side Experimentation können den führenden Softwareunternehmen der Welt (wie Amazon, Google und Facebook) folgen, die ihre Features zunächst nur einem kleinen Prozentsatz der Nutzer bereitstellen, bevor sie diese breiter ausrollen.

Optimizely bietet außerdem Enterprise-Grade Feature Management über Optimizely Server-Side Experimentation – eine leistungsstarke Lösung für Canary-Tests, kontrollierte Feature-Releases und Feature-Tests in Ihrem Produkt oder Ihrer App.