
Heute haben wir unsere Webebene der Welt zugänglich gemacht. Wir möchten Varnish vor unserer Webebene hinzufügen, um die Site zu beschleunigen und die Aufrufe des Backends zu reduzieren. Wir haben jedoch einige Bedenken und ich frage mich, wie die meisten Leute damit umgehen:
A/B-Tests – Wie testet man zwei „Versionen“ jeder Seite und vergleicht sie? Ich meine, woher weiß Varnish, welche Seite es bereitstellen soll? Wenn und wie speichert man auf jeder Seite separate Versionen?
Feature-Rollout – wie würden Sie einen einfachen Feature-Rollout-Mechanismus einrichten? Nehmen wir an, ich möchte ein neues Feature/eine neue Seite nur für 10 % des Datenverkehrs öffnen und das dann später auf 20 % erhöhen?
Wie handhaben Sie Codebereitstellungen? Leeren Sie bei jeder Bereitstellung Ihren gesamten Varnish-Cache? (Wir haben täglich Bereitstellungen.) Oder lassen Sie ihn einfach langsam ablaufen (mit TTL)?
Alle Ideen und Beispiele zu diesen Themen sindsehrgeschätzt!
Antwort1
A/B-Tests – Wie testet man zwei „Versionen“ jeder Seite und vergleicht sie? Ich meine, woher weiß Varnish, welche Seite es bereitstellen soll? Wenn und wie speichert man auf jeder Seite separate Versionen?
Sie haben mehrere Möglichkeiten:
- Stellen Sie sie einfach unter verschiedenen URLs bereit.
Umgehen Sie den Cache für die bestimmte URL. Sie können dies tun, indem Sie
pass
in zurückgebenvcl_recv
. Etwa so:sub vcl_recv { if (req.url ~ "^/path/to/document") { return (pass); } }
Leeren Sie den Cache explizit, wenn Sie eine neue Version verfügbar machen.
Feature-Rollout – wie würden Sie einen einfachen Feature-Rollout-Mechanismus einrichten? Nehmen wir an, ich möchte ein neues Feature/eine neue Seite nur für 10 % des Datenverkehrs öffnen und das dann später auf 20 % erhöhen?
Ich bin mir nicht sicher, ob es dafür eine „einfache“ Möglichkeit gibt. Da Sie beliebigen C
Code in Ihre .vcl
Dateien einfügen können, könnten Sie wahrscheinlich eine Logik hinzufügen, um eine Zufallszahl auszuwählen und dann basierend auf dem Ergebnis den entsprechenden Backend-Pfad auszuwählen.
Wie handhaben Sie Codebereitstellungen? Leeren Sie bei jeder Bereitstellung Ihren gesamten Varnish-Cache? (Wir haben täglich Bereitstellungen.) Oder lassen Sie ihn einfach langsam ablaufen (mit TTL)?
Bei größeren Änderungen leeren wir einfach den Cache und bei kleineren Änderungen lassen wir die Dinge einfach ablaufen.