Zum Hauptinhalt springen
Version: 1.89.x (Q2 26)

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.

  1. Control (v1) bereitstellen:
    • Den aktuellen stabilen, produktionsreifen Code in einer Landscape in Codesphere bereitstellen.
    • Diese Landscape production-control nennen.
  2. Variant (v2) bereitstellen:
    • Eine doppelte Landscape erstellen (oder die erste klonen).
    • Diese Landscape production-variant nennen.
    • 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

  1. Zum Tab Domains in Codesphere navigieren.
  2. Die öffentliche benutzerdefinierte Domain auswählen (z. B. app.example.com).
  3. Beide Landscapes verknüpfen:
    • production-control
    • production-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

  1. Das Dashboard öffnen (z. B. PostHog Insights).
  2. Einen Trendgraphen oder Funnel erstellen (z. B. „User Signups“).
  3. Eine Aufschlüsselung (Breakdown) nach der Eigenschaft anwenden:
experiment_group
  1. 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)

  1. Zum Tab Codesphere Domains navigieren.
  2. production-control von der Domain entfernen.
    → 100 % des Traffics fließen nun zu production-variant.
  3. Die alte Control-Landscape stilllegen.

Szenario B: Die Variant schlägt fehl

(Fehler oder geringere Konversion)

  1. Zum Tab Codesphere Domains navigieren.
  2. production-variant von der Domain entfernen.
    → 100 % des Traffics kehren zur stabilen production-control zurück.
  3. Die Variant-Landscape stilllegen und den Code offline untersuchen.