Varnish Cache explicado
Se está a começar com o Varnish e quer saber mais sobre esta ferramenta de caching absurdamente rápida, este artigo é para si. Vamos falar do que é o Varnish, de como funciona e de a quem se adequa.

O Varnish tornou-se sinónimo de aceleração HTTP de alto desempenho. O Varnish Cache é um acelerador reverse proxy HTTP open source que é excelente a reduzir a carga do web server. O Varnish é colocado à frente do web server e funciona como um proxy que estabelece uma ponte entre o browser e o servidor.

O projeto Varnish foi ideia do arquiteto de tecnologia dinamarquês Poul-Henning Kamp. Consultor de FreeBSD bem conhecido, Kamp foi o programador principal do Varnish.
O projeto Varnish foi iniciado pela vertente online do jornal norueguês Verdens Gang. Mas o software teve tanto sucesso que acabou por ser autonomizado numa empresa separada.
Mas não se preocupe, continua a ser software gratuito e completamente open source, disponível sob uma licença BSD de duas cláusulas. Se quiser suporte comercial, está disponível na Varnish Software.
Atualmente, o suporte, a gestão e o desenvolvimento do Varnish são assegurados sob a bandeira da Varnish Software.
Como funciona o Varnish?
Pense no seguinte cenário. Entra num café movimentado e pede o café de filtro da casa. A pessoa ao balcão verifica primeiro se há um jarro fresco pronto a servir.
Se houver, recebe a sua chávena de imediato. Se não, o pedido vai para o barista preparar um jarro novo. O Varnish faz o trabalho da pessoa ao balcão.
O Varnish fica à frente do seu web server e, na primeira vez que um visitante pede uma página web, o Varnish recebe o pedido e passa-o ao servidor backend. O servidor backend processa o pedido e envia a resposta de volta ao browser.
O Varnish, entretanto, faz «cache» do conteúdo renderizado e guarda-o em memória RAM ultrarrápida.
Qualquer pedido seguinte para a mesma página web é servido diretamente a partir da versão em cache (em memória RAM!) sem incomodar o web server nem a base de dados.
Quem usa o Varnish?
Muitos websites de notícias e de conteúdos com muito tráfego usam o Varnish.
O Varnish oferece grandes benefícios de desempenho a websites com muito conteúdo e muito tráfego. Pode ser usado para fazer cache tanto de conteúdo estático como dinâmico.
Há a ideia errada, mas comum, de que o Varnish é só para conteúdo estático, mas com alguns ajustes na configuração .VCL pode funcionar de forma brilhante mesmo para websites dinâmicos e aplicações móveis.
Porque é que o Varnish é tão rápido?
Se quer conseguir servir milhares de pedidos concorrentes por segundo sem sobrecarregar o seu web server, o Varnish é um dos melhores aceleradores HTTP disponíveis.
image: src /blog/wp-content/uploads/2012/10/varnish-diagram.jpg (unchanged); alt: Diagrama do Varnish à frente do web server
Dentro das configurações do Varnish pode definir se quer que o Varnish guarde a cache no disco rígido ou na memória RAM.
Para ter a sensação imediata de «clico e está lá», vai querer que essa cache fique guardada exclusivamente na sua RAM.
Com uma instalação de Varnish bem configurada verá um tempo de resposta muito mais baixo e uma enorme redução na utilização de recursos do servidor.
O Varnish é difícil de configurar?
O RHEL e os seus derivados empacotam o Varnish.
O Varnish vem com uma configuração predefinida básica que pode ser usada tal como está para pôr a aceleração HTTP a funcionar com o mínimo de trabalho. O próprio Varnish não termina HTTPS, pelo que num website moderno fica atrás de um TLS terminator como o HAProxy ou o nginx.
O Varnish dá-lhe um ficheiro de Varnish Configuration Language (VCL), onde mexe nas definições de configuração para afinar o seu desempenho. O ficheiro VCL diz ao Varnish exatamente como lidar com o processo de caching.
Quando e o que meter em cache, quando não meter, e durante quanto tempo manter o conteúdo em cache na memória.
Dominar o .VCL dá-lhe superpoderes, permitindo-lhe modificar quase todos os aspetos de um pedido e de uma resposta HTTP.
Quando deve usar o Varnish
- Se tem um website com muito conteúdo e picos de tráfego frequentes
- O Varnish é excelente para servidores com carga pesada de base de dados. Ao fazer cache dos pedidos web mais comuns, o seu servidor MySQL pode descansar um pouco.
- Se quer reduzir a atividade do seu disco, prolongando a sua esperança de vida.
- Se um web server e uma base de dados têm de servir milhares de visitantes concorrentes.
Quando não deve usar o Varnish?
Há muitas formas mais fáceis de conseguir grandes ganhos de desempenho, como o micro caching do NGiNX, que pode experimentar antes de recorrer ao Varnish.
Para websites pequenos com menos de 1.000 visualizações de página por dia, provavelmente ficará bem servido com uma stack LAMP otimizada ou NGiNX com PHP-FPM.
Devido à complexidade de personalizar o ficheiro .VCL para os seus requisitos específicos, às vezes simplesmente não vale o esforço de usar o Varnish. Pôr o Varnish a dar-se bem com conteúdo dinâmico é complicado. Claro, pode usar ESI «hole punching» para servir conteúdo por utilizador, mas será mesmo necessário?
Verifique primeiro os frutos ao alcance da mão
Antes do Varnish, faça as correções mais baratas: otimização de imagens, CSS e JavaScript minificados, afinação do MySQL.
Artigo relacionado: As 10 principais razões para o seu website carregar devagar (e os passos para o corrigir!)
Conclusão
Configurar o Varnish para servir conteúdo corretamente e seguir os requisitos da sua organização pode ser complicado. As regras de expiração da cache, o time to live, o caching por URL e os requisitos de object caching no Varnish são altamente complexos. Em resultado disso, muitas empresas de consultoria nasceram da necessidade de ter «implementações de Varnish» feitas nos ambientes dos clientes.
Na EuroVPS corremos Varnish à frente de websites de muito tráfego, e os nossos engenheiros podem ajudá-lo a desenhar a camada de caching para o seu.
Do arquivo do blog da EuroVPS, publicado pela primeira vez em 17 de outubro de 2012.
Todas as notas de campo