CESUMAR – Centro Universitário de Maringá
Curso Superior de Tecnologia em Sistemas para Internet
PROJETO INTEGRADOR
Varnish-Cache: Velocidade e disponibilidade para aplicações WEB
Rafael Vaz Pinto Toledo
Eduardo Herbert Ribeiro Bona
Maringá
2012
1. Tema
1.1. Tema Geral
Serviços para servidores de aplicações WEB
1.2. Tema Específico
Aceleração de aplicações web com a adoção do Varnish Cache.
2. Justificativa
Quando se deu início, a internet era composta basicamente por conteúdo estático, com
pouca ou quase nenhuma interação ou automatização, devido limitações tecnológicas da época.
Com o desenvolvimento das linguagens de programação voltadas para o ambiente online,
vimos o início de serviços alimentados dinamicamente, através da leitura de bancos-de-dados ou
arquivos texto.
O aperfeiçoamento das técnicas desenvolvidas durante esse período de amadurecimento
da internet nos levou à transição de uma internet que antes servia de meio para uma que agora
serve como plataforma, sendo chamada de Web 2.0 (Termo criado em 2004 pela empresa de
comunicação O’Reilly Media).
Os serviços criados para a web 2.0 trazem como padrão conteúdo dinâmicos, de fácil
atualização e totalmente dependente de fonte de dados (seja ele um banco-de-dados local ou
outro serviço, como RSS).
Tal novidade fez com que os servidores web se adaptassem ao novo “padrão”. O que antes
era simplesmente consultar uma árvore de diretórios e devolver o conteúdo do arquivo
requisitado, hoje envolve consulta a diversas fontes de dados, tanto internas quanto externas.
Essa mudança de paradigma trouxe também algumas preocupações, como estabilidade,
disponibilidade e velocidade dos serviços ofertados.
Numa época em que todos buscam visibilidade na internet, a disponibilidade e a velocidade
do serviço tornam-se fatores determinantes para o sucesso ou fracasso de um projeto.
Para sanar ou amenizar tais problemas é que foi criado o serviço de proxy reverso, ou
HTTP Cache.
Para esta pesquisa, será abordada a implementação do Varnish-Cache no servidor, pois o
mesmo foi desenvolvido especificamente para esta função, ao contrário do Squid, que foi
concebido para funcionar como um Proxy normal, sendo adaptado posteriormente para a
utilização como proxy reverso.
3. Problema
A alta demanda por informação, aliada a uma diversidade de fontes de dados traz dúvidas
quanto ao desempenho e a confiabilidade de uma aplicação desenvolvida para a plataforma WEB.
Diversos fatores podem influenciar na disponibilidade de um serviço, como inconsistência
no tráfego de dados entre os servidores, indisponibilidade de alguma fonte de dados ou ainda a
sobrecarga do servidor.
A implementação do Varnish-Cache pode resolver parcialmente ou completamente os
problemas relacionados ao provedor do serviço.
Ao implementar e configurar o serviço do proxy reverso, criamos uma cópia temporária de
todo conteúdo que julguemos interessante manter em cache, ficando armazenada assim um
objeto reverente a este conteúdo na memória RAM do servidor. Este armazenamento temporário
permite com que o servidor responda de forma mais ágil a requisição do cliente, já que não será
necessário executar consultas r processamento dos dados adquiridos, pois os mesmos já estão
montados dentro da memória.
Por ser flexível, o Varnish pode ser implementado no mesmo servidor em que é executado
a aplicação, ou pode ser configurado como um servidor principal, que poderá ficar a frente de
vários outros servidores, balanceando carga de acordo com a necessidade, garantindo assim alta
disponibilidade da aplicação hospedada alí,
4. Aplicação Prática
Por limitações de recursos, o ensaio será feito em máquinas virtuais, sendo que o serviço
de cache será instalado junto ao servidor Apache.
Para gerar números para comparação, serão configurados dois servidores web (Apache)
em máquinas virtuais idênticas rodando Debian Linux 6.0.4 (Squeeze). Um dos servidores será
mantido com a configuração original, enquanto o segundo ficará por trás do Varnish Cache.
Em ambos os servidores, serão implementados aplicações web que façam requisições a
banco-de-dados locais e externos, assim como consulta a APIs de terceiros. Assim simulando um
ambiente de produção real.
5. Objetivos
5.1. Objetivo Geral
Destacar as diferenças de desempenho e disponibilidade entre servidores web comuns e os
que trabalham em conjunto com um Proxy reverso.
5.2. Objetivos Específicos
Compreender o funcionamento de um Proxy reverso, mais especificamente o
funcionamento do Varnish Cache, assim como as melhores maneiras para implementá-lo, de forma
a obter melhorias relativas ao desempenho e à disponibilidade da aplicação.
6. Material
Para o desenvolvimento da pesquisa serão consultados livros na área, artigos em geral
publicados em congressos e na internet além do estudo em aplicações desenvolvidas e disponíveis
na internet como exemplo.
Para a aplicação prática serão utilizadas máquinas virtuais com configurações idênticas
para efeito de comparação entre um servidor web comum e outro dotado de Proxy reverso. Será
utilizado também um servidor rodando um banco-de-dados pré-alimentado para acesso de dados
externo.
7. Metodologia
Na primeira etapa do trabalho será realizado um estudo na documentação introdutória do
Varnish Cache, a fim de verificar os requisitos e as melhores maneiras de implementá-lo num
ambiente limitado. Será feito também um estudo em materiais referentes à servidores web e
outros sistemas de cache (como o Squid) a fim de obter o maior número de parâmetros
necessários para comparação.
Durante a pesquisa inicial será determinado um ambiente padrão (máquina virtual) que
será replicado a fim de garantir condições igualitárias para as aplicações que serão testadas.
Tais aplicações serão compostas por consultas a bancos-de-dados locais e externos, assim
como consultas a serviços externos, como RSS de terceiros, a fim de simular uma aplicação real e
suas requisições.
O resultado das etapas anteriores serão números e gráficos de tempo e consumo de
recursos, demonstrando as vantagens e desvantagens de cada solução adotada durante a
pesquisa.
8. Referências Bibliográficas
Varnish Cache Documentation. Disponível em:
<https://www.varnish-cache.org/docs> Acesso em 15 mar. 2012
Viva o Linux. Disponível em:
<http://www.vivaolinux.com.br/artigo/Varnish-Uma-camada-de-velocidade> Acesso em 15 mar. 2012
Varnish por Max Schöfmann. Disponível em:
<http://www.slideshare.net/schoefmax/caching-with-varnish-1642989> Acesso em 15 mar. 2012
What Is Web 2.0. Disponível em:
<http://oreilly.com/web2/archive/what-is-web-20.html> Acesso em 15 mar. 2012
9. Parecer da Proposta de PI
1. PARECER DA PROPOSTA DE PI
(
) APROVADA
Justificativas 
2. VISTO DO PARECERISTA
Data: ___/___/___
Nome do Parecerista:
Assinatura do Parecerista:
Observações 
(
) APROVADA COM RESSALVAS
(
) REPROVADA
Download

Varnish-Cache: Velocidade e disponibilidade para aplicações WEB