Zum Hauptinhalt springen
Version: Weekly Build

A/B-Tests einrichten

Diese Anleitung beschreibt, wie ein 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 dieser treu bleiben.

Umgebungsisolation​

Um einen Test durchzuführen, muss die „Control“ (aktuelle Produktion) von der „Variante“ (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. Variante (v2) bereitstellen:
    • Eine Kopie der Landscape erstellen (oder die erste klonen).
    • Diese Landscape production-variant nennen.
    • Den experimentellen Code (neue Funktionen, architektonische Änderungen usw.) in diese spezifische Landscape pushen.
Warum das wichtig ist

Da es sich um separate Container handelt, können auch Backend-Änderungen getestet werden (z. B. eine neue API-Struktur oder Datenbankabfrage).

Analytics-Instrumentierung (Beispiel PostHog)​

Da beide Landscapes letztlich unter derselben öffentlichen URL erreichbar sind, weiß das Analytics-Tool nicht von selbst, welche Version ein Nutzer gerade sieht. Die Nutzersession muss explizit mit „Super Properties“ (oder „User Traits“) gekennzeichnet werden.

Im Code der Control-Landscape​

Das Analytics-Initialisierungsskript suchen (meist im Header oder in einer Konfigurationsdatei) und unmittelbar 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"
});
Funktionsweise

Die Funktion posthog.register hängt die Eigenschaft experiment_group an jedes nachfolgende Ereignis (Seitenaufruf, Klick, Kauf) an, das von diesem Nutzer gesendet wird. Eine manuelle Kennzeichnung einzelner Ereignisse im gesamten Codebase ist nicht nötig.

Traffic-Routing​

Nachdem nun zwei laufende Anwendungen und die Analytics-Einrichtung vorhanden sind, muss echter Traffic zu ihnen geleitet werden. Codesphere übernimmt dies nativ, ohne dass externe Tools wie Nginx oder HAProxy erforderlich sind.

Domain konfigurieren​

  1. Zum Tab Domains in Codesphere navigieren.
  2. Die öffentliche eigene Domain auswählen (z. B. app.example.com).
  3. Beide Landscapes verknüpfen:
    • production-control
    • production-variant
Ergebnis

Traffic-Aufteilung​

Codesphere verteilt eingehende Anfragen automatisch 50/50 zwischen den beiden Landscapes.

Session-Bindung (Stickiness)​

Der Load Balancer setzt beim ersten Besuch des Nutzers ein Sticky-Session-Cookie.
Wird ein Nutzer zur Variante geleitet, bleibt er für die gesamte Session an diese Landscape gebunden, sodass er beim Neuladen nicht die Version wechselt.

Überprüfung​

Bevor das Update angekündigt wird, sollte überprüft werden, ob die Aufteilung und Kennzeichnung korrekt funktionieren.

1. Ein Inkognito-Fenster öffnen​

Die öffentliche Domain aufrufen.

2. Die 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-Ereignisse prüfen​

Dorthin navigieren:

PostHog → Live Events

Sicherstellen, dass die eingehenden Ereignisse aus der Session die Eigenschaft experiment_group enthalten.

4. Routing testen​

  • Das Inkognito-Fenster schließen.
  • Ein neues öffnen.
  • Mehrfach 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. Eine Trendgrafik oder einen 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 sichtbar:

  • Control
  • Variant-A

Der Rollout​

Basierend auf den Ergebnissen eines der folgenden Szenarien umsetzen:

Szenario A: Die Variante gewinnt​

(Höhere Conversion oder bessere Performance)

  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 Variante scheitert​

(Fehler oder geringere Conversion)

  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.