Posted Juli 23, 2023

Einführung in die Canary-Einführung: Reibungslose Einführungen und Minimierung von Risiken

Canary-Implementierungen können ein nützlicher Vorschlag sein. Indem Sie die neue Version schrittweise für einen kleinen Prozentsatz der Benutzer einführen, können Sie Probleme erkennen und beheben, bevor sie sich auf alle auswirken. Erfahren Sie, wie Sie damit das Risiko von Problemen in der Produktion verringern können.

graphical user interface, application

Canary Deployment ist eine Deployment-Strategie, bei der eine neue Version einer Anwendung schrittweise an einen kleinen Prozentsatz von Benutzern verteilt wird. So können Sie die Anwendung in der Produktion testen, ohne sie allen Benutzern zugänglich zu machen. Falls es Probleme mit der neuen Version gibt, können Sie sie schnell wieder zurücksetzen, ohne dass die meisten Benutzer davon betroffen sind.

Es handelt sich um eine Technik zur kontinuierlichen Bereitstellung, mit der neue Funktionen, Aktualisierungen oder Änderungen an einer kleinen und kontrollierten Untergruppe von Benutzern getestet werden, bevor sie nach und nach an alle Endbenutzer verteilt werden. Sie minimiert die mit neuen Bereitstellungen verbundenen Risiken und fängt Probleme ab, bevor sie sich auf alle auswirken.

Canary-Implementierungen sind von entscheidender Bedeutung, da sie dazu beitragen können, das Risiko bei der Einführung neuer Funktionen oder Aktualisierungen Ihrer Anwendung zu verringern. Nehmen wir zum Beispiel an, Sie führen eine neue Funktion für Ihre Website ein. Sie könnten eine Canary-Bereitstellung verwenden, um die neue Funktion für 5 % Ihrer Benutzer einzuführen. Wenn die neue Funktion gut funktioniert, können Sie den Prozentsatz der Benutzer, die die neue Funktion nutzen, schrittweise erhöhen. Wenn es Probleme mit der neuen Funktion gibt, können Sie sie schnell wieder auf die vorherige Version zurücksetzen.

Zu denunterstützten Zieltypen für die Canary-Bereitstellung gehören:

  • Virtuelle Maschinen (VMs )
  • Containerisierte Anwendungen (mit Docker oder ähnlichen Technologien )
  • Serverlose Funktionen (wie AWS Lambda oder Google Cloud Functions )
  • Microservices-Architektur

Canary-Bereitstellungen helfen dabei, potenzielle Probleme und Abhängigkeiten zu erkennen. Darüber hinaus können Sie diese vor einem umfassenden Rollout beheben und so die Auswirkungen von Problemen minimieren.

Was ist eine Canary-Bereitstellung?

Der Name "Canary Deployment" stammt von der alten Praxis des Einsatzes von Kanarienvögeln in Kohleminen. Da Kanarienvögel sehr empfindlich auf Kohlenmonoxid reagieren, dienten sie als Frühwarnsystem für Bergleute. Wenn der Kanarienvogel starb, war dies ein Zeichen dafür, dass sich zu viel Kohlenmonoxid in der Luft befand und die Bergleute evakuiert werden mussten.

Der Einsatz von Kanarienvögeln ähnelt der Idee des Kanarienvogels im Kohlebergwerk. Durch die anfängliche Bereitstellung von Änderungen für eine kleine Untergruppe von Benutzern, die so genannte "Kanarienvogelgruppe", können Unternehmen überwachen, wie die neuen Funktionen oder Aktualisierungen in einer kontrollierten Umgebung funktionieren. Treten Probleme auf, bleiben sie in der Canary-Gruppe, so dass sie schnell erkannt und behoben werden können, bevor sie sich auf die breitere Benutzerbasis auswirken.

In der Softwareentwicklung dient eine Canary-Bereitstellung als Frühwarnsystem für Probleme mit neuem Code. Durch schrittweises Ausrollen des neuen Codes auf eine Untergruppe von Benutzern können Sie den neuen Code überwachen und etwaige Ausfallzeiten erkennen, bevor sie sich auf alle auswirken. Dieser inkrementelle Ansatz hilft Microservices-Anbietern, das Risiko und die Ungewissheit bei größeren Software-Releases zu verringern.

Wie funktioniert die Canary-Bereitstellung?

Ein Canary-Deployment-Workflow folgt einem schrittweisen Prozess zur schrittweisen Einführung neuer Funktionen oder Aktualisierungen für eine kleine Untergruppe von Benutzern oder Servern. Der Prozess läuft folgendermaßen ab:

1. Duplizieren der Infrastruktur

Neben der bestehenden Produktionsinfrastruktur wird eine separate Umgebung eingerichtet. Sie dient als "Kanarienvogel"-Umgebung.

2.Funktionskennzeichen

Sie spielen eine entscheidende Rolle, da sie es Entwicklern ermöglichen, bestimmte Funktionen zu aktivieren oder zu deaktivieren. Durch die Verwendung von Feature Flags können Unternehmen die Sichtbarkeit neuer Änderungen kontrollieren und diese ein- oder ausschalten.

3.Gruppenauswahl

Eine kleine Teilmenge von Benutzern oder Servern bildet die Kanarienvogelgruppe. Diese Gruppe stellt in der Regel nur einen kleinen Prozentsatz der gesamten Benutzerbasis oder der Server dar.

4. Lastverteiler

Load Balancer leiten den Datenverkehr zwischen der bestehenden Produktionsumgebung und der Canary-Bereitstellungsumgebung um. Unternehmen können den Prozentsatz des an eine Gruppe gerichteten Datenverkehrs steuern.

5. Schrittweiser Rollout

Zunächst werden die neuen Funktionen oder Aktualisierungen in der Canary-Gruppe eingeführt. Die übrigen Benutzer oder Server nutzen weiterhin die bestehende Produktionsumgebung.

6.Überwachung

Sammeln von Feedback, Verfolgen von Leistungsmetriken und Erkennen von Problemen oder Unstimmigkeiten. Unternehmen überwachen Parameter wie Antwortzeiten, Fehlerraten und Benutzerfeedback genau, um sicherzustellen, dass die Änderungen wie vorgesehen funktionieren.

7.Schrittweiser Ausbau

Auf der Grundlage der Rückmeldungen und Analysen der Kanarienvogelgruppe können Unternehmen fundierte Entscheidungen treffen. Wenn die Änderungen gut funktionieren und die gewünschten Kriterien erfüllen, kann die Bereitstellung auf eine größere Benutzerbasis oder zusätzliche Server ausgeweitet werden. Treten jedoch Probleme auf, können Unternehmen die Änderungen schnell wieder zurücknehmen und zu einer stabilen Produktionsumgebung zurückkehren.

8. Vollständige Freigabe

Sobald die Canary-Bereitstellungsphase als erfolgreich erachtet wird, können Unternehmen mit einer vollständigen Freigabe der stabilen Version in der Bereitstellungspipeline fortfahren und die Änderungen für die gesamte Benutzerbasis oder alle Server bereitstellen. Alternativ können Unternehmen die Änderungen auf der Grundlage der gesammelten Rückmeldungen und Daten verbessern.

Die Rolle von CI und CD

Continuous Integration (CI) und Continuous Deployment (CD) unterstützen häufig die Implementierung von Canary Deployment. CI sorgt für eine häufige Code-Integration und ermöglicht eine frühzeitige Erkennung von Integrationsfehlern, was die Verwaltung des Codes für verschiedene Versionen einer Anwendung während des Canary Deployments erleichtert.

CD automatisiert den Bereitstellungsprozess und gewährleistet eine schnelle, konsistente und zuverlässige Bereitstellung von Funktionen. Es hilft bei der schnellen Freigabe neuer Versionen für Canary-Tests und erleichtert im Erfolgsfall den schrittweisen Rollout für alle Benutzer.

Hier kann eine Kundendatenplattform (Customer Data Platform, CDP) Sie bei der Konsolidierung von Kundendaten aus verschiedenen Quellen unterstützen und eine nahtlose Integration und Bereitstellung von kundenorientierten Anwendungen ermöglichen.

Sie ermöglicht das Testen und Bereitstellen neuer Funktionen in Echtzeit auf der Grundlage der Erkenntnisse aus den Kundendaten und gewährleistet die Datenkonsistenz zwischen verschiedenen Systemen, wodurch Fehler bei der Integration und Bereitstellung reduziert werden.

Darüber hinaus kann eine CDP Feedback-Schleifen zur Überwachung der Anwendungsleistung nach der Bereitstellung bereitstellen und so eine schnelle Reaktion auf Probleme ermöglichen. Unser neuester Experimentierbericht zeigt, dass Unternehmen mit integrierter CDP bis zu 80 % mehr Erfolg bei ihren Experimenten haben.

Image showing impact of using a CDP

Bildquelle: The Experimentation of Evolution

Vorteile der Canary-Bereitstellung

Diekanarische Bereitstellung bietet mehrere Vorteile und Anwendungsfälle :

  • Beim Rolling Deployment hilft das Versenden spezifischer Änderungen an eine kleine Untergruppe von Benutzern, Risiken im Vorfeld zu minimieren. Dieser Ansatz begrenzt den Umfang potenzieller Probleme und ermöglicht eine frühzeitige Fehlererkennung. Unternehmen können Probleme beheben, bevor sie sich auf die breitere Benutzerbasis auswirken.
  • Durch die Bereitstellung von Änderungen für einen begrenzten Nutzerkreis können Unternehmen Feedback einholen und Fehler aufspüren, die beim Testen möglicherweise nicht erkannt werden, so dass keine Ausfallzeiten entstehen.
  • Durch die schrittweise Einführung von Änderungen können Unternehmen die Auswirkungen und die Leistung der Änderungen genau überwachen. Wenn Probleme auftreten, können sie schnell zum vorherigen stabilen Zustand zurückkehren oder Korrekturen auf die Canary-Gruppe anwenden, wodurch die Unterbrechung für die eigentliche Benutzerbasis minimiert wird.
  • Sie erhalten Rückmeldungen über die Nutzung durch die Benutzer und gewinnen Erkenntnisse darüber, wie die Benutzer mit den neuen Funktionen oder Updates umgehen. Anhand dieses Feedbacks können Sie sicherstellen, dass die Änderungen den Erwartungen der Benutzer entsprechen und die Benutzererfahrung verbessern .

Eine Canary-Bereitstellungsstrategie fördert eine Kultur der kontinuierlichen Bereitstellung und des Experimentierens. Durch die Implementierung von Funktionsmerkmalen und die schrittweise Einführung von Änderungen erhalten Unternehmen mehr Flexibilität, um mit neuen Ideen zu experimentieren und datengestützte Erkenntnisse zu sammeln. Dieser iterative Ansatz ermöglicht schnellere Iterationen, schnelle Feedbackschleifen und die Möglichkeit, die Software kontinuierlich zu verbessern.

Implementierung der Canary-Bereitstellung

Im Folgenden finden Sie einige praktische Schritte für die Implementierung von Canary Deployment in einer Anwendung oder einem System:

1. Wählen Sie den richtigen Ansatz

Definieren Sie eine klare Bereitstellungsstrategie, die festlegt, wie Canary-Versionen bereitgestellt und überwacht werden sollen. Es gibt verschiedene Ansätze, z. B. A/B-Tests, blau-grüne Bereitstellung und rot-schwarze Bereitstellung. Wählen Sie den Ansatz, der Ihren Bedürfnissen und Anforderungen am besten entspricht.

2. Konfigurieren Sie den Bereitstellungsprozess

Richten Sie eine separate Canary-Version für die Bereitstellung der neuen Version der Anwendung ein. Sie sollte der Produktionsumgebung sehr ähnlich sein, jedoch mit weniger Benutzern oder Datenverkehr. Legen Sie dann fest, wie viel Datenverkehr an die neue Version gesendet werden soll, wie die Bereitstellung überwacht werden soll und wie bei Bedarf ein Rollback zur alten Version erfolgen soll.

3. Skalieren Sie Ihre Infrastruktur

Erhöhen Sie schrittweise den Umfang des Canary-Release auf der Grundlage der Überwachung und des Feedbacks, während Sie die wichtigsten Metriken und Rollback-Strategien genau überwachen. Leiten Sie einen Teil des Live-Verkehrs in die Canary-Umgebung, um Probleme oder Fehler zu testen. Erhöhen Sie allmählich den Prozentsatz der Benutzer, die die neue Version verwenden, und skalieren Sie Ihre Infrastruktur, um die erhöhte Last zu bewältigen.

4. Überwachen Sie die Bereitstellung

Überwachen Sie die wichtigsten Leistungskennzahlen während der Canary-Bereitstellung, um sicherzustellen, dass die neue Version stabil ist und eine gute Leistung erbringt. Es ist wichtig, sicherzustellen, dass die neue Version wie erwartet funktioniert.

Wichtige Metriken

Im Folgenden finden Sie die wichtigsten Kennzahlen zur Messung der Auswirkungen der Canary-Bereitstellung:

  • Fehlerquote: Dies zeigt, ob die Canary-Bereitstellung zu einem Anstieg der Fehler oder Ausfälle führt.
  • Latenzzeit: Sie beschreibt die Reaktionszeit der Anwendung, um sicherzustellen, dass der Canary-Einsatz die Leistung nicht negativ beeinflusst.
  • Konvertierungsrate: Hier wird verfolgt, ob sich die Canary-Implementierung auf die Konversionsrate der Benutzer oder auf bestimmte Geschäftsmetriken auswirkt.
  • Benutzer-Feedback: Es wird das Feedback der Benutzer gesammelt, um ihre Erfahrungen zu verstehen und Probleme oder notwendige Verbesserungen zu identifizieren.

Canary-Bereitstellung vs. andere

Die Canary-Bereitstellung ist eine vielseitige Bereitstellungsstrategie für eine Vielzahl von Szenarien. Sie kann mit anderen Bereitstellungsstrategien kombiniert werden, um die Funktionalität und Flexibilität zu erhöhen. So können Sie beispielsweise eine neue Funktion für ausgewählte Benutzer einführen und dann mit A/B-Tests die Leistung der alten und neuen Funktionen vergleichen.

Der Einsatz von Canary ist schrittweiser als A/B-Tests. Bei A/B-Tests werden die Benutzer nach dem Zufallsprinzip verschiedenen Versionen einer Anwendung zugewiesen, während bei der Canary-Bereitstellung die neue Version schrittweise an einen kleinen Prozentsatz der Benutzer ausgerollt wird. Dies kann dazu beitragen, das Risiko der Einführung neuer Probleme in die Produktion zu verringern.

Canary Deployment kann zur Einführung neuer Funktionen oder Updates verwendet werden, während A/B-Tests in der Regel dazu dienen, die Leistung von zwei Versionen einer Anwendung zu vergleichen. Die Blue/Green-Bereitstellung ist speziell für diesen Zweck konzipiert.

Hier sind einige Beispiele, bei denen eine kanarische Bereitstellungsvorlage besser geeignet ist:

  • Wenn Sie eine neue Funktion oder ein Update bereitstellen, das den Benutzern schaden könnte.
  • Wenn Sie eine neue Version einer Anwendung bereitstellen, die noch nicht vollständig getestet ist.
  • Wenn Sie das Feedback der Benutzer in Echtzeit einholen möchten, migrieren Sie zu einem Plan, bevor Sie die neue Version für alle einführen.

Canary-Bereitstellung vs. Blue-green-Bereitstellung

Canary-Deployment und Blue-Green-Deployment sind beides integrierte Release-Strategien, die sich jedoch im Ansatz unterscheiden. Bei der Canary-Bereitstellung werden die Änderungen schrittweise an eine kleine Gruppe von Benutzern verteilt, bevor sie in der gesamten Infrastruktur eingeführt werden.

So können potenzielle Probleme erkannt und mit minimalen Auswirkungen behoben werden. Bei der Blue-Green-Bereitstellung hingegen gibt es zwei identische Produktionsumgebungen (Blue und Green). Die neue Version wird in der grünen Umgebung freigegeben, während in der blauen Umgebung die aktuelle Live-Version läuft. Sobald die Tests in der grünen Umgebung abgeschlossen sind, wird der Router umgeschaltet, um ihn in Betrieb zu nehmen und die Ausfallzeit zu minimieren.

Allgemeine Überlegungen

Bei der Implementierung des Canary-Einsatzes gibt es einige potenzielle Fallstricke:

  • Es kann zu Dateninkonsistenzen zwischen alten und neuen Versionen einer Anwendung kommen. Dies kann passieren, wenn die Benutzer mit beiden Versionen der Anwendung gleichzeitig arbeiten. Um dies zu vermeiden, müssen Sie einen Plan zur Sicherstellung der Datenkonsistenz haben.
  • Es ist wichtig, eine Rollback-Strategie für den Fall zu haben, dass Probleme mit der neuen Version auftreten. So können Sie schnell zur alten Version zurückkehren, ohne dass die Benutzer beeinträchtigt werden. Verwenden Sie ein Versionskontrollsystem, um Änderungen an der Konfiguration Ihrer Anwendungen zu verfolgen.
  • Die Bereitstellung von Canary kann Änderungen an der Konfiguration Ihrer Anwendung nach sich ziehen. Verwalten Sie diese Änderungen und stellen Sie sicher, dass sie korrekt angewendet werden.

Insgesamt ist die Canary-Bereitstellung eine komplexe Bereitstellungsstrategie, deren Implementierung eine Herausforderung darstellen kann. Sie ist jedoch eine wertvolle Methode, um das Risiko der Einführung neuer Probleme in die Produktion zu verringern und die Zuverlässigkeit Ihrer Softwarebereitstellung zu verbessern.

Canary-Bereitstellung und Feature-Flags

Die Canary-Bereitstellung ist eine wertvolle Methode zur Verbesserung der Zuverlässigkeit Ihrer Software-Bereitstellungen. Durch das schrittweise Ausrollen der neuen Version können Sie diese genau überwachen und Probleme erkennen, bevor sie sich auf alle auswirken.

Wenn Sie zu einem DevOps-Team gehören, verwenden Sie die kostenlosen Feature Flags von Optimizely, um den Anfang zu machen.

Wenn Sie bereits Feature Flags verwenden und einen Schritt weiter gehen möchten, versuchen Sie es mit Feature Management, um sofort die volle Kontrolle über Ihre Feature Releases zu übernehmen.