Como utilizar o verniz para testes A / B e rollout de recursos?

3

Hoje temos nossa camada da web exposta ao mundo. Gostaríamos de adicionar o Varnish à nossa camada da Web para acelerar o site e reduzir as chamadas para o back-end. No entanto, temos algumas preocupações e fiquei imaginando como a maioria das pessoas as aborda:

  1. Teste A / B - Como você testa duas "versões" de cada página e compara? Quero dizer, como o verniz sabe qual página servir? Se e como você salva versões separadas em cada página?

  2. Lançamento de recursos - como você configuraria um mecanismo simples de distribuição de recursos? Digamos que eu queira abrir um novo recurso / página para apenas 10% do tráfego ... e depois aumentá-lo para 20%?

  3. Como você lida com implantações de código? Você limpa todo o seu cache de verniz a cada implantação? (Temos implantações diariamente). Ou você simplesmente deixa expirar lentamente (usando TTL)?

Todas as ideias e exemplos relativos a estas questões são muito apreciados!

    
por Ken 21.12.2010 / 09:37

1 resposta

1

A/B Testing - How do you test two "versions" of each page and compare? I mean, how does varnish know which page to serve up? If and how do you save seperate versions on each page?

Você tem várias opções:

  • Basta expô-los em URLs diferentes.
  • Ignore o cache do URL específico. Você poderia fazer isso retornando pass em vcl_recv . Algo parecido com isto:

    sub vcl_recv {
        if (req.url ~ "^/path/to/document") {
            return (pass);
        }
    }
    
  • Explique explicitamente o cache ao expor uma nova versão.

Feature rollout - how would you set up a simple feature rollout mechanism? Let's say i want to open a new feature/page to just 10% of the traffic.. and then later increase that to 20%?

Não sei se há uma maneira "simples" de fazer isso. Desde que você pode colocar código C arbitrário em seus arquivos .vcl , você provavelmente poderia adicionar alguns lógica para escolher um número aleatório e, em seguida, selecione o backend apropriado caminho baseado no resultado.

How do you handle code deployments? Do you purge your entire varnish cache every deployment? (We have deployments on a daily basis). Or do you just let it slowly expire (using TTL)?

Para grandes mudanças nós apenas limpamos o cache, e para mudanças menores nós apenas deixe as coisas expirarem.

    
por 21.12.2010 / 17:16