Einrichten von A/B-Tests
Diese Anleitung beschreibt, wie ein A/B-Test auf Anwendungsebene durchgeführt wird, indem zwei unterschiedliche Versionen der Anwendung gleichzeitig ausgeführt werden. Der Load Balancer von Codesphere übernimmt die Verteilung des Traffics nativ und stellt sicher, dass Nutzer einer Version zugewiesen werden und dabei bleiben.
Umgebungsisolierung
Um einen Test durchzuführen, muss die „Control“ (aktuelle Produktion) von der „Variant“ (dem Experiment) isoliert werden.
- Control (v1) bereitstellen:
- Den aktuellen stabilen, produktionsreifen Code in einer Landscape in Codesphere bereitstellen.
- Diese Landscape
production-controlnennen.
- Variant (v2) bereitstellen:
- Eine doppelte Landscape erstellen (oder die erste klonen).
- Diese Landscape
production-variantnennen. - Den experimentellen Code (neue Funktionen, Architekturänderungen usw.) in diese spezifische Landscape pushen.
Warum das wichtig ist
Da es sich um separate Container handelt, können Backend-Änderungen getestet werden (z. B. eine neue API-Struktur oder Datenbankabfrage).
Analytics-Instrumentierung (Beispiel PostHog)
Da beide Landscapes letztlich unter derselben öffentlichen URL laufen, weiß das Analytics-Tool nicht automatisch, welche Version ein Nutzer sieht. Die Nutzersitzung muss explizit mit „Super Properties“ (oder „User Traits“) markiert werden.
Im Code der Control-Landscape
Das Analytics-Initialisierungsskript (meist im Header oder in einer Konfigurationsdatei) suchen und direkt nach der Initialisierung Folgendes hinzufügen:
// App v1 (Control)
posthog.register({
experiment_group: "Control"
});
Im Code der Variant-Landscape
Im experimentellen Codebase das Snippet aktualisieren, um die neue Version widerzuspiegeln:
// App v2 (Variant)
posthog.register({
experiment_group: "Variant-A"
});
So funktioniert es
Die Funktion posthog.register hängt die Eigenschaft experiment_group an jedes nachfolgende Event (Pageview, Klick, Kauf) an, das von diesem Nutzer gesendet wird. Einzelne Events müssen nicht manuell im gesamten Codebase markiert werden.
Traffic-Routing
Nachdem nun zwei laufende Apps und die Analytics-Einrichtung vorhanden sind, muss der reale Traffic zu ihnen geleitet werden. Codesphere übernimmt dies nativ, ohne dass externe Tools wie Nginx oder HAProxy benötigt werden.
Domain konfigurieren
- Zum Tab Domains in Codesphere navigieren.
- Die öffentliche benutzerdefinierte Domain auswählen (z. B.
app.example.com). - Beide Landscapes verknüpfen:
production-controlproduction-variant
Ergebnis
Traffic-Split
Codesphere verteilt eingehende Anfragen automatisch 50/50 zwischen den beiden Landscapes.
Session Stickiness
Der Load Balancer setzt bei einem Nutzer beim ersten Besuch ein Sticky Session Cookie.
Wird ein Nutzer zur Variant geleitet, bleibt er für die gesamte Sitzung an diese Landscape gebunden, sodass er beim Neuladen nicht zwischen den Versionen wechselt.
Verifizierung
Bevor das Update angekündigt wird, sollte überprüft werden, ob der Split und die Markierung korrekt funktionieren.
1. Ein Inkognito-Fenster öffnen
Zur öffentlichen Domain navigieren.
2. Konsole prüfen
Die Entwicklertools des Browsers öffnen (F12) und Folgendes ausführen:
posthog.get_property('experiment_group')
Erwartetes Ergebnis
Der Befehl sollte entweder "Control" oder "Variant-A" zurückgeben.
3. Live-Events prüfen
Navigieren zu:
PostHog → Live Events
Sicherstellen, dass die eingehenden Events aus der eigenen Sitzung die Eigenschaft experiment_group enthalten.
4. Routing testen
- Das Inkognito-Fenster schließen.
- Ein neues öffnen.
- Mehrmals wiederholen.
Erfolgskriterium
Irgendwann sollte der Load Balancer zur jeweils anderen Version leiten, was bestätigt, dass beide Umgebungen erreichbar sind.
Analyse & Entscheidung
Sobald Traffic fließt, die Daten anhand von Segmentierung statt komplexer Mathematik analysieren.
Die Analyse
- Das Dashboard öffnen (z. B. PostHog Insights).
- Einen Trendgraphen oder Funnel erstellen (z. B. „User Signups“).
- Eine Aufschlüsselung (Breakdown) nach der Eigenschaft anwenden:
experiment_group
- Die Ergebnisse vergleichen.
Es werden zwei unterschiedliche Linien angezeigt:
- Control
- Variant-A
Der Rollout
Basierend auf den Ergebnissen wird eines der folgenden Szenarien ausgeführt:
Szenario A: Die Variant gewinnt
(Höhere Konversion oder bessere Leistung)
- Zum Tab Codesphere Domains navigieren.
production-controlvon der Domain entfernen.
→ 100 % des Traffics fließen nun zuproduction-variant.- Die alte Control-Landscape stilllegen.
Szenario B: Die Variant schlägt fehl
(Fehler oder geringere Konversion)
- Zum Tab Codesphere Domains navigieren.
production-variantvon der Domain entfernen.
→ 100 % des Traffics kehren zur stabilenproduction-controlzurück.- Die Variant-Landscape stilllegen und den Code offline untersuchen.