Einführung in Canary Deployment: reibungslose Rollouts sicherstellen und Risiken minimieren

23. Juli 2023

Canary Deployments können eine nützliche Angelegenheit sein. Indem Sie die neue Version schrittweise an einen kleinen Prozentsatz der Nutzer ausrollen, können Sie etwaige Probleme identifizieren und beheben, bevor sie alle betreffen. Erfahren Sie, wie Sie es nutzen, um das Risiko von Problemen in der Produktion zu reduzieren.

Canary Deployment ist eine Bereitstellungsstrategie, bei der eine neue Version einer Anwendung schrittweise an einen kleinen Prozentsatz der Nutzer ausgerollt wird. Sie ermöglicht das Testen in der Produktion, ohne es allen Ihren Nutzern auszusetzen. Falls es Probleme mit der neuen Version gibt, können Sie diese schnell zurückrollen, ohne die meisten Nutzer zu beeinträchtigen.  

Es ist eine Continuous-Deployment-Technik, mit der neue Funktionen, Updates oder Änderungen an einer kleinen und kontrollierten Teilmenge von Nutzern getestet werden, bevor sie schrittweise an alle Endnutzer ausgerollt werden. Sie minimiert die mit neuen Bereitstellungen verbundenen Risiken und fängt Probleme ab, bevor sie alle betreffen.  

Canary Deployments sind entscheidend, weil sie helfen können, das Risiko der Einführung neuer Funktionen oder Updates in Ihrer Anwendung zu reduzieren. Angenommen, Sie führen eine neue Funktion auf Ihrer Website ein. Sie könnten ein Canary Deployment verwenden, um die neue Funktion an 5 % Ihrer Nutzer auszurollen. Wenn die neue Funktion gut funktioniert, können Sie den Prozentsatz der Nutzer, die die neue Funktion verwenden, schrittweise erhöhen. Falls es Probleme mit der neuen Funktion gibt, können Sie diese schnell auf die vorherige Version zurückrollen.  

Zu den unterstützten Zieltypen für Canary Deployment gehören: 

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

Canary Deployments helfen dabei, potenzielle Probleme und Abhängigkeiten zu identifizieren. Außerdem können sie vor einem groß angelegten Rollout behoben werden, wodurch die Auswirkungen etwaiger Probleme minimiert werden. 

Was ist Canary Deployment?

Der Name „Canary Deployment“ stammt von der alten Praxis, Kanarienvögel in Kohlebergwerken einzusetzen. Kanarienvögel reagieren sehr empfindlich auf Kohlenmonoxid, daher dienten sie den Bergleuten als Frühwarnsystem. Wenn der Kanarienvogel starb, war das ein Zeichen, dass zu viel Kohlenmonoxid in der Luft war und die Bergleute evakuieren mussten.  

In ähnlicher Weise ahmt Canary Deployment die Idee des Kanarienvogels im Kohlebergwerk nach. Indem Änderungen zunächst an einer kleinen Teilmenge von Nutzern bereitgestellt werden, der sogenannten „Canary-Gruppe“, können Unternehmen überwachen, wie sich die neuen Funktionen oder Updates in einer kontrollierten Umgebung verhalten. Treten Probleme auf, sind diese innerhalb der Canary-Gruppe eingegrenzt, sodass sie schnell erkannt und behoben werden können, bevor sie die breitere Nutzerbasis betreffen.  

In der Softwareentwicklung fungiert ein Canary Deployment als Frühwarnsystem für Probleme mit neuem Code. Indem Sie den neuen Code schrittweise an eine Teilmenge von Nutzern ausrollen, können Sie den neuen Code überwachen und etwaige Ausfallprobleme identifizieren, bevor sie alle betreffen. Dieser inkrementelle Ansatz hilft Microservices-Anbietern, das Risiko und die Unsicherheit bei größer angelegten Software-Releases zu reduzieren.  

Wie funktioniert Canary Deployment?

Ein Canary-Deployment-Workflow folgt einem schrittweisen Prozess, um neue Funktionen oder Updates schrittweise an eine kleine Teilmenge von Nutzern oder Servern auszurollen. So funktioniert der Prozess: 

1. Infrastruktur duplizieren 

Neben der bestehenden Produktionsinfrastruktur wird eine separate Umgebung eingerichtet. Sie dient als Canary-Deployment-Umgebung. 

2. Feature Flags 

Sie spielen eine entscheidende Rolle, indem sie Entwicklern ermöglichen, bestimmte Funktionen zu aktivieren oder zu deaktivieren. Durch den Einsatz von Feature Flags können Unternehmen die Sichtbarkeit neuer Änderungen steuern und sie ein- oder ausschalten. 

3. Gruppenauswahl  

Eine kleine Teilmenge von Nutzern oder Servern bildet die Canary-Gruppe. Diese Gruppe repräsentiert in der Regel einen kleinen Prozentsatz der gesamten Nutzerbasis oder Server. 

4. Load Balancer  

Load Balancer verteilen den Traffic zwischen der bestehenden Produktionsumgebung und der Canary-Deployment-Umgebung. Unternehmen können den Prozentsatz des an eine Gruppe geleiteten Traffics steuern. 

5. Schrittweiser Rollout  

Zunächst werden die neuen Funktionen oder Updates an die Canary-Gruppe ausgerollt. Die übrigen Nutzer oder Server verwenden weiterhin die bestehende Produktionsumgebung. 

6. Monitoring   

Sammeln Sie Feedback, verfolgen Sie Performance-Kennzahlen und erkennen Sie etwaige Probleme oder Abweichungen. Unternehmen überwachen Parameter wie Reaktionszeiten, Fehlerraten und Nutzerfeedback genau, um sicherzustellen, dass die Änderungen wie beabsichtigt funktionieren. 

7. Schrittweise Erweiterung 

Auf Grundlage des Feedbacks und der Analyse aus der Canary-Gruppe können Unternehmen fundierte Entscheidungen treffen. Wenn die Änderungen gut funktionieren und die gewünschten Kriterien erfüllen, erweitern Sie die Bereitstellung auf eine größere Nutzerbasis oder zusätzliche Server. Treten jedoch Probleme auf, können Unternehmen die Änderungen schnell zurückrollen und zu einer stabilen Produktionsumgebung zurückkehren. 

8. Vollständiges Release   

Sobald die Canary-Deployment-Phase als erfolgreich erachtet wird, können Unternehmen mit einem vollständigen Release der stabilen Version in der Deployment-Pipeline fortfahren und die Änderungen an die gesamte Nutzerbasis oder alle Server ausrollen. Alternativ können Unternehmen die Änderungen auf Grundlage des gesammelten Feedbacks und der Daten verbessern.

Die Rolle von CI und CD

Continuous Integration (CI) und Continuous Deployment (CD) unterstützen häufig die Umsetzung von Canary Deployment. CI sorgt für häufige Code-Integration und ermöglicht die frühzeitige Erkennung von Integrationsfehlern, was es einfacher macht, Code für verschiedene Versionen einer Anwendung während des Canary Deployments zu verwalten. 

CD automatisiert den Bereitstellungsprozess und sorgt für eine schnelle, konsistente und zuverlässige Auslieferung von Funktionen. Es unterstützt das schnelle Release neuer Versionen für Canary-Tests und erleichtert bei Erfolg den schrittweisen Rollout an alle Nutzer. 

Hier kann eine Customer Data Platform (CDP) Sie dabei unterstützen, Kundendaten aus verschiedenen Quellen zu konsolidieren und so eine nahtlose Integration und Bereitstellung kundenzentrierter Anwendungen zu ermöglichen. 

Sie ermöglicht das Testen und Bereitstellen neuer Funktionen in Echtzeit auf Grundlage von Erkenntnissen aus Kundendaten und sorgt für Datenkonsistenz über verschiedene Systeme hinweg, wodurch Fehler bei Integration und Bereitstellung reduziert werden. 

Darüber hinaus kann eine CDP Feedback-Schleifen für das Monitoring der Anwendungsleistung nach der Bereitstellung bereitstellen und so eine schnelle Reaktion auf etwaige Probleme ermöglichen. Tatsächlich zeigt unser neuester Experimentation-Report, wie Unternehmen mit integrierter CDP bis zu 80 % mehr erwartete Wirkung mit ihren Experimentiermaßnahmen erzielen. 

Vorteile von Canary Deployment

Canary Deployment bietet mehrere Vorteile und Anwendungsfälle:   

  • Beim Rolling Deployment hilft das Ausrollen bestimmter Änderungen an eine kleine Teilmenge von Nutzern, Risiken von vornherein zu mindern. Dieser Ansatz begrenzt den Umfang potenzieller Probleme und ermöglicht eine frühzeitige Fehlererkennung. Unternehmen können Probleme beheben, bevor sie die breitere Nutzerbasis betreffen.  
  • Die Bereitstellung von Änderungen für ein begrenztes Publikum ermöglicht es Unternehmen, Feedback zu sammeln und Fehler zu erkennen, die während des Testens möglicherweise nicht identifiziert werden, und gewährleistet so null Ausfallzeit.  
  • Durch das schrittweise Ausrollen von Änderungen können Unternehmen die Auswirkungen und die Leistung der Änderungen genau überwachen. Treten Probleme auf, können sie schnell auf den vorherigen stabilen Zustand zurückrollen oder Korrekturen auf die Canary-Gruppe anwenden und so Störungen für die echte Nutzerbasis minimieren.  
  • Sie erhalten Feedback aus der Nutzung durch die Anwender und gewinnen Erkenntnisse darüber, wie Nutzer mit den neuen Funktionen oder Updates interagieren. Nutzen Sie dieses Feedback, um sicherzustellen, dass die Änderungen den Nutzererwartungen entsprechen, und um die User Experience zu verbessern.    

Eine Canary-Deployment-Strategie fördert eine Kultur der Continuous Delivery und des Experimentierens. Durch die Implementierung von Feature Flags und das schrittweise Ausrollen von Änderungen haben Unternehmen mehr Flexibilität, mit neuen Ideen zu experimentieren und datengestützte Erkenntnisse zu gewinnen. Dieser iterative Ansatz ermöglicht schnellere Iterationen, schnelle Feedback-Schleifen und die Möglichkeit, die Software kontinuierlich zu verbessern. 

Canary Deployment implementieren

Hier sind einige praktische Schritte zur Implementierung von Canary Deployment in einer Anwendung oder einem System: 

1. Den richtigen Ansatz wählen  

Definieren Sie eine klare Bereitstellungsstrategie, die festlegt, wie Canary-Releases bereitgestellt und überwacht werden. Es gibt verschiedene Ansätze wie A/B-Testing, blau-grüne Bereitstellung und Red-Black-Deployment. Wählen Sie den, der Ihren Bedürfnissen und Anforderungen am besten entspricht. 

2. Den Bereitstellungsprozess konfigurieren  

Richten Sie eine separate Canary-Version ein, um die neue Version der Anwendung bereitzustellen. Sie sollte der Produktionsumgebung stark ähneln, jedoch mit weniger Nutzern oder Traffic. Entscheiden Sie als Nächstes, wie viel Traffic an die neue Version geleitet wird, wie die Bereitstellung überwacht wird und wie bei Bedarf auf die alte Version zurückgerollt wird. 

3. Ihre Infrastruktur skalieren  

Skalieren Sie das Canary-Release auf Grundlage von Monitoring und Feedback schrittweise hoch und überwachen Sie dabei zentrale Kennzahlen und Rollback-Strategien genau. Leiten Sie einen Teil des Live-Traffics in die Canary-Umgebung, um auf Probleme oder Fehler zu testen. Erhöhen Sie schrittweise den Prozentsatz der Nutzer, die die neue Version verwenden, und skalieren Sie Ihre Infrastruktur, um die erhöhte Last zu bewältigen. 

4. Die Bereitstellung überwachen  

Überwachen Sie die zentralen Performance-Kennzahlen während des Canary Deployments, um sicherzustellen, dass die neue Version stabil ist und gut funktioniert. Es ist wesentlich sicherzustellen, dass die neue Version wie erwartet funktioniert. 

Zentrale Kennzahlen

Hier sind zentrale Kennzahlen, um die Wirkung von Canary Deployment zu messen:  

  • Fehlerrate: Diese zeigt, ob das Canary Deployment einen Anstieg von Fehlern oder Ausfällen verursacht.  
  • Latenz: Sie beschreibt die Reaktionszeit der Anwendung, um sicherzustellen, dass das Canary Deployment die Leistung nicht negativ beeinflusst.  
  • Conversion Rate: Sie verfolgt, ob das Canary Deployment die Conversion Rate der Nutzer oder bestimmte Geschäftskennzahlen beeinflusst.  
  • Nutzerfeedback: Es sammelt Nutzerfeedback, um deren Erlebnis zu verstehen und etwaige Probleme oder notwendige Verbesserungen zu identifizieren.  

Canary Deployment im Vergleich zu anderen

Canary Deployment ist eine vielseitige Bereitstellungsstrategie für eine Vielzahl von Szenarien. Sie kann mit anderen Bereitstellungsstrategien kombiniert werden, um Funktionalität und Flexibilität zu verbessern. Beispielsweise könnten Sie eine neue Funktion an ausgewählte Nutzer ausrollen und dann A/B-Testing verwenden, um die Leistung alter und neuer Funktionen zu vergleichen. 

Canary Deployment ist schrittweiser als A/B-Testing. Beim A/B-Testing werden Nutzer zufällig verschiedenen Versionen einer Anwendung zugewiesen, während beim Canary Deployment die neue Version schrittweise an einen kleinen Prozentsatz der Nutzer ausgerollt wird. Es kann helfen, das Risiko zu reduzieren, neue Probleme in die Produktion einzuführen. 

Canary Deployment kann verwendet werden, um neue Funktionen oder Updates auszurollen, während A/B-Testing in der Regel verwendet wird, um die Leistung zweier Versionen einer Anwendung zu vergleichen. Die blau-grüne Bereitstellung hingegen ist speziell für diesen Zweck konzipiert.

Hier sind einige Beispiele, in denen ein Canary-Deployment-Template besser geeignet ist:  

  • Wenn Sie eine neue Funktion oder ein Update bereitstellen, das Nutzern schaden könnte.  
  • Wenn Sie eine neue Version einer Anwendung bereitstellen, die noch nicht vollständig getestet ist.
  • Wenn Sie in Echtzeit Feedback von Nutzern einholen und zu einem Plan migrieren möchten, bevor Sie das neue Release an alle ausrollen.

Canary Deployment im Vergleich zur blau-grünen Bereitstellung

Canary Deployment und blau-grüne Bereitstellung sind beide integrierte Release-Strategien, unterscheiden sich aber im Ansatz. Canary Deployment rollt Änderungen schrittweise an eine kleine Teilmenge von Nutzern aus, bevor es sie auf die gesamte Infrastruktur bereitstellt. 

Es ermöglicht, potenzielle Probleme mit minimalen Auswirkungen zu erkennen und zu beheben. Die blau-grüne Bereitstellung hingegen umfasst zwei identische Produktionsumgebungen (Blau und Grün). Die neue Version wird in der grünen Umgebung freigegeben, während die blaue Umgebung die aktuelle Live-Version ausführt. Sobald das Testen in der grünen Umgebung abgeschlossen ist, wird der Router umgeschaltet, um sie live zu schalten, wodurch Ausfallzeiten minimiert werden. 

Häufige Überlegungen

Hier sind einige potenzielle Fallstricke bei der Implementierung von Canary Deployment:  

  • Es kann Dateninkonsistenzen zwischen alten und neuen Versionen einer Anwendung verursachen. Das kann passieren, wenn Nutzer gleichzeitig mit beiden Versionen der Anwendung interagieren. Um dies zu vermeiden, benötigen Sie einen Plan zur Sicherstellung der Datenkonsistenz.  
  • Es ist wichtig, eine Rollback-Strategie für den Fall von Problemen mit der neuen Version zu haben. Sie ermöglicht es Ihnen, schnell auf die alte Version zurückzurollen, ohne Nutzer zu beeinträchtigen. Verwenden Sie ein Versionskontrollsystem, um Änderungen an der Konfiguration Ihrer Anwendungen zu verfolgen.  
  • Canary Deployments können Änderungen an der Konfiguration Ihrer Anwendung umfassen. Verwalten Sie diese Änderungen und stellen Sie sicher, dass sie korrekt angewendet werden.  

Insgesamt ist Canary Deployment eine komplexe Bereitstellungsstrategie, deren Implementierung herausfordernd sein kann. Es ist jedoch eine wertvolle Methode, um das Risiko der Einführung neuer Probleme in die Produktion zu reduzieren und die Zuverlässigkeit Ihrer Software-Bereitstellungen zu verbessern.

Canary Deployment und Feature Flags

Canary Deployment ist eine wertvolle Methode, um die Zuverlässigkeit Ihrer Software-Bereitstellungen zu verbessern. Durch das schrittweise Ausrollen der neuen Version können Sie diese genau überwachen und Probleme identifizieren, bevor sie alle betreffen. 

Wenn Sie zu einem DevOps-Team gehören, nutzen Sie Optimizelys kostenlose Feature Flags, um loszulegen.  

Wenn Sie bereits Feature Flags verwenden und einen Schritt weiter gehen möchten, probieren Sie Feature Management aus, um schon jetzt die volle Kontrolle über Ihre Feature-Releases zu übernehmen.