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