Como utilizar o Varnish para testes A/B e implementação de recursos?

Como utilizar o Varnish para testes A/B e implementação de recursos?

Hoje temos nossa camada web exposta ao mundo. Gostaríamos de adicionar Varnish na frente de nossa camada web para acelerar o site e reduzir chamadas para o backend. No entanto, temos algumas preocupações e gostaria de saber 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 exibir? Se e como você salva versões separadas em cada página?

  2. Implementação de recursos - como você configuraria um mecanismo simples de implementação de recursos? Digamos que eu queira abrir um novo recurso/página para apenas 10% do tráfego.. e depois aumentar 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ê apenas deixa expirar lentamente (usando TTL)?

Quaisquer idéias e exemplos sobre essas questões sãomuitoestimado!

Responder1

Teste A/B – Como você testa duas “versões” de cada página e compara? Quero dizer, como o verniz sabe qual página exibir? Se e como você salva versões separadas em cada página?

Você tem várias opções:

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

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

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

Não tenho certeza se existe uma maneira "simples" de fazer isso. Como você pode colocar Ccódigo arbitrário em seus .vclarquivos, provavelmente poderá adicionar alguma lógica para escolher um número aleatório e, em seguida, selecionar o caminho de back-end apropriado com base no resultado.

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ê apenas deixa expirar lentamente (usando TTL)?

Para alterações maiores, apenas limpamos o cache e, para alterações menores, apenas deixamos as coisas expirarem.

informação relacionada