4 votes

Comment utiliser Varnish pour les tests A/B et le déploiement de fonctionnalités ?

Aujourd'hui, notre couche web est exposée au monde entier. Nous aimerions ajouter Varnish devant notre couche web pour accélérer le site et réduire les appels à l'arrière-plan. Cependant, nous avons quelques préoccupations et je me demandais comment la plupart des gens les abordent :

  1. A/B Testing - Comment testez-vous deux "versions" de chaque page et les comparez-vous ? Je veux dire, comment Varnish sait-il quelle page servir ? Si oui, comment enregistrer des versions séparées sur chaque page ?

  2. Diffusion de fonctionnalités - Comment mettriez-vous en place un mécanisme simple de diffusion de fonctionnalités ? Disons que je veux ouvrir une nouvelle fonctionnalité/page à seulement 10 % du trafic… puis augmenter cela à 20 % plus tard ?

  3. Comment gérez-vous les déploiements de code ? Purgez-vous entièrement votre cache Varnish à chaque déploiement ? (Nous avons des déploiements quotidiens). Ou le laissez-vous simplement expire peu à peu (en utilisant la TTL) ?

Toute idée et exemple concernant ces problèmes est grandement appréciée !

2voto

Eric Noob Points 531

Tests A/B - Comment testez-vous deux "versions" de chaque page et les comparez ? Je veux dire, comment est-ce que Varnish sait quelle page servir ? Comment et où sauvegardez-vous les versions séparées de chaque page ?

Vous avez plusieurs choix :

  • Les exposer simplement à des URL différentes.

  • Bypasser le cache pour une URL spécifique. Vous pouvez le faire en retournant pass dans vcl_recv. Quelque chose comme ceci :

    sub vcl_recv {
        if (req.url ~ "^/chemin/vers/document") {
            return (pass);
        }
    }
  • Purger explicitement le cache lorsque vous exposez une nouvelle version.

Lancement de fonctionnalité - Comment mettriez-vous en place un mécanisme simple de lancement de fonctionnalité ? Disons que je veux ouvrir une nouvelle fonctionnalité/page à seulement 10% du trafic.. et puis augmenter cela à 20% plus tard ?

Je ne suis pas sûr qu'il existe un moyen "simple" de le faire. Puisque vous pouvez mettre du code C arbitraire dans vos fichiers .vcl, vous pourriez probablement ajouter un peu de logique pour choisir un nombre aléatoire et ensuite sélectionner le chemin du backend approprié en fonction du résultat.

Comment gérez-vous les déploiements de code ? Purgez-vous tout votre cache Varnish à chaque déploiement (nous avons des déploiements quotidiens). Ou laissez-vous les choses expirer lentement (en utilisant TTL) ?

Pour les changements majeurs, nous purgions simplement le cache, et pour les changements mineurs nous laissons simplement les choses expirer.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X