Escolar Documentos
Profissional Documentos
Cultura Documentos
APLICAÇÕES WEB
ABSTRACT: With the spread of services and applications that use the Internet as
platform, and the increasing number of users, the availability and speed of applications
have become factors that may define if a product will reach success or failure. In a
heterogeneous environment such as the Internet, it is impossible to predict the amount
of guest visitors as well as the experience that everyone is having access to an online
service. With so many variables to administrators, the choice of server software suite
can make a difference, including generating resource savings and greater stability of
the equipment involved in providing online content.
1
Discente do curso de Sistemas para Internet do Centro Universitário de Maringá. rafamd@gmail.com
2
Docente do curso de Sistemas para Internet do Centro Universitário de Maringá. eduardobona@vivaweb.net
1. Introdução tempo entre a requisição efetuada pelo
cliente até a completa renderização da
A World Wide Web, ou WWW,
resposta do servidor pelo browser do
é hoje o principal serviço em
cliente. Tal tempo é necessário para
funcionamento na Internet, sendo
que a requisição seja enviada ao
responsável pela maioria do tráfego
servidor, para que o mesmo monte a
gerando dentro do conjunto de redes
resposta de acordo com as
que a constitui.
informações enviadas e retornar os
Mais que apenas um serviço, a pacotes de dados que serão
WWW tornou-se uma necessidade transferidos para o cliente através do
para os mais diversos segmentos da protocolo HTTP e interpretados pelo
economia, permitindo uma rápida browser.
comunicação, além de servir como
A latência também pode ser
base de operações para as mais
influenciada pelo tráfego da rede e o
diversas atividades envolvidas.
número de requisições simultâneas a
O conceito da WEB 2.0 que o servidor deve atender. Levando
(O’Reilly Media, 2004) elevou ainda em consideração que atualmente
mais a importância da Internet, diversos dispositivos permitem acesso
principalmente da WWW, que passou e utilizam a internet de alguma
de um simples meio de troca de maneira, é possível notar que não será
informações para uma plataforma, raro a ocasião em que um dos fatores
abrigando diversos serviços. A citados esteja influenciando
interatividade tornou-se um mantra negativamente na obtenção das
ecoado pelas diversas empresas informações desejadas.
envolvidas com a Internet, dando fruto
A tabela abaixo (Tabela 1) é
para diversos serviços, desde
parte da pesquisa elaborada pelo
informacionais como os portais de
NIC.BR (Núcleo de Informação e
notícias, passando pelos sociais e
Coordenação do Ponto BR) entre os
chegar aos mais recentes serviços
meses de Novembro de 2011 até
baseados na nuvem.
Janeiro de 2012, em que é possível
Apesar de todos os avanços verificar o percentual da presença dos
nesta área, um elemento presente em equipamentos de Informação e
todos os serviços é a latência, ou Comunicação nos domicílios
1
brasileiros. Para este artigo foram que atuam próximos aos servidores de
mantidos apenas os resultados dos conteúdo.
equipamentos que podem acessar de
alguma maneira a internet. Dentre os
equipamentos listados, os
computadores de mesa (com 36% de
presença), os consoles de videogame
(22%) e os computadores portáteis Figura 1: Diagrama do funcionamento de um servidor de
Além do mecanismo
implementado no protocolo HTTP, há Figura 2: Diagrama do funcionamento de um servidor
surrogate ou proxy reverso.
também tecnologias auxiliares, como
os servidores de proxy/cache que Ao contrário dos servidores de
atuam próximos aos clientes e os proxy/cache, os surrogate (Figura 2)
servidores surrogate (ou proxy reverso) atuam próximos aos servidores de
conteúdo (ou implementados
2
diretamente). Assim como no exemplo moderna, que tivesse acompanhado a
anterior, quando é recebido uma nova forma com que o hardware se
requisição, o surrogate armazena o desenvolveu ao longo dos anos, “Squid
resultado gerado pelo servidor, porém atuando como Reverse Proxy se
essa cópia pode ser usufruída por apresentou limitado demais em
qualquer requisição àquele objeto performance, por uma série de motivos
específico, reduzindo assim a carga do incluindo não fazer uso apropriado de
servidor de conteúdo. várias tecnologias disponíveis em
sistemas computacionais modernos.”
Este artigo tem como objetivo
(FUB-BR, 2006, Varnish-Cache –
implementar a ferramenta Varnish-
Servidor de Proxy Reverso com
Cache, um acelerador HTTP gratuito e
Cacheamento. http://tkme.in/to/MTU.
estudar o impacto dele em comparação
Acesso em 17 de Julho de 2012).
a um servidor web comum, sem esta
camada de velocidade. O capítulo 2 é Tal situação foi percebida pela
dedicado ao entendimento da VG Multimidia, empresa de produção
ferramenta Varnish-Cache e seus audiovisual da Noruega, responsável
recursos. No capítulo 3 será feito a pelo tabloide Verdens Gang. Com o
apresentação da metodologia, surgimento da demanda, a empresa,
incluindo uma apresentação da em conjunto com o Grupo de Usuários
aplicação de ensaio e os métodos Unix da Noruega e a Linpro,
utilizados para aferição. O capítulo 4 financiaram o desenvolvimento de uma
abordará a implementação da ferramenta de proxy reverso para suprir
ferramenta no ambiente de testes. O a necessidade do encontrada na
capítulo 5 será dedicado à época.
demonstração dos resultados,
Todo o desenvolvimento foi
enquanto que o capítulo 6 apresentará
chefiado pelo desenvolvedor
as conclusões alcançadas com o
dinamarquês Poul-Henning Kamp em
desenvolvimento deste artigo.
conjunto com Dag-Erling Smograv,
2. Varnish-Cache ambos membros ativos da comunidade
mantenedora do FreeBSD.
2.1 A história do Varnish-Cache
3
Todo o esforço e conhecimento
aqui apresentado resultou na primeira
versão pública do Varnish-Cache,
disponibilizado ao público em 2006
Figura 3: Arquitetura do Varnish-Cache
com a licença BSD.
2.2.2 VCL
2.2 Aspectos Técnicos
As instruções dos arquivos de
O Varnish-Cache é um proxy-
configuração do Varnish são escritas
reverso, também conhecido como
usando uma linguagem própria,
acelerador HTTP, desenvolvido desde
chamada VCL.
o início tendo em mente esta função, ou
seja, ele busca aproveitar ao máximo O VCL trabalha com “ganchos”
os recursos do kernel do sistema- pré-determinados, que possuem
operacional com o intuito de funcionamento semelhante à
desempenhar da melhor forma possível sobrescrita de métodos na
sua função, sem o desperdício de programação orientada a objetos.
recursos. Durante o recebimento e o tratamento
da requisição, o Varnish dispara
2.2.1 Arquitetura
chamadas para estes ganchos, e
Todo o cache é armazenado em executa aquilo que foi escrito pelo
memória virtual, deixando a cargo do administrador.
sistema-operacional decidir o que será
Além de possuir esta estrutura
armazenado na memória RAM (que
familiar para diversos programadores,
apresenta alta velocidade / menor
o Varnish interpreta códigos em C,
capacidade) e o que será armazenado
abrindo assim um leque maior de
no disco-rígido (que apresenta baixa
possibilidades, ao permitir que exista a
velocidade / maior capacidade). Esta
interação do arquivo de configuração
arquitetura evita que a aplicação entre
com recursos externos.
em conflito com o sistema-operacional
ao tentar recuperar alguma informação O Varnish comporta diversos
não útil para aquele momento. evitando assim que seja necessário
reiniciar o serviço, além de permitir
4
chamadas a configurações diferentes 2.3 Simplificando o Entendimento
de acordo com a necessidade do
2.3.1 Funcionamento de uma
servidor.
estrutura “Cacheada”
2.2.3 Edge Side Includes (ESI) No diagrama abaixo (Figura 4)
5
é disparado a sub-rotina vcl_miss, que Sub-Rotina Função
6
2.4 Casos de Sucesso Implementado nos 14 países
em que atua com o suporte da Varnish-
2.4.1 Mercado Livre
Software em conjunto com a
Com um mercado de mais de consultoria da RedPill Linpro, o Varnish
550 milhões de pessoas e uma região permitiu a redução de custos com
com o maior índice de penetração da infraestrutura e um aumento de
internet, o MercadoLibre (Argentina) é disponibilidade, não encontrado em
o maior site de compras e vendas da outras soluções antes testadas.
américa latina. Atualmente é líder do
2.4.2 Facebook
segmento em 14 países, como
Argentina, Brasil, Chile, Colômbia, Fundado em 2004, a missão do
7
arquitetura simples, desenvolvida para Não existem números precisos
sistemas operacionais modernos de referentes a economia no número de
forma a não consumir muito servidores, porém foi constatado uma
processamento enquanto está redução considerável no consumo de
sobrecarregado. Varnish é o nosso processamento dos servidores, já que
cache HTTP preferido e nós utilizamos apesar do número elevado de
ele massivamente, desde quando você requisições que o portal possui (32 mil
carrega uma foto ou seus amigos no acessos por minuto).
Facebook, há grande chance de ter o
2.5 Disponibilidade
envolvimento do Varnish.” (David
Recordon - Facebook) Por ser uma solução
independente do servidor web, o
2.4.3 Globo.com
Varnish permite a execução de rotinas
A Globo.com é um braço online específicas em caso de falha no
das organizações Globo, que atua em servidor.
diversos segmentos da comunicação.
Existe a possibilidade de
Seu canal de televisão é o maior da
reiniciar o processo de requisição após
América Latina e o terceiro maior do
uma quantidade de tempo específica,
mundo, perdendo apenas para as
assim como há a possibilidade de
redes CBS e ABC.
buscar pelo conteúdo em cache e
A área de TI investe o possível devolvê-lo ao cliente, evitando assim a
em soluções open-source, por isso em exibição de um erro. Este exibido
seu pátio o Linux é o sistema- apenas em último caso, quando
operacional primário, sendo possível nenhuma das rotinas anteriores obtém
encontrar com facilidade soluções sucesso.
populares, como MySQL, Apache
HTTPD e Apache TomCat.
A introdução do Varnish-Cache
na estrutura da Globo.com deu-se por
meados de 2008, quando decidiram
Figura 5: Sub-rotina para tratamento de erro interno.
substituir a antiga solução baseada no
Netcaches (da empresa NetApp, hoje
pertencente à Blue Coat Systems).
8
3. Metodologia Tendo isso em vista, foi
utilizado um notebook relativamente
Será adotado neste trabalho o
recente, ligado à tomada e com o
tempo de resposta, em milissegundos,
gerenciamento de energia configurado
como medida de comparação entre as
para fornecer o máximo de
duas soluções que serão
desempenho, com as seguintes
implementadas.
características:
O método utilizado neste
Processador Intel Core i5-
trabalho visa simular um ambiente real,
2410M (2.30Ghz / TurboBoost:
onde um uma aplicação web será
2.90Ghz)
servido pelo servidor Apache a uma
Memória RAM de 8GB
série de requisições.
Disco Rígido SATA-2 de 500Gb
Para evitar qualquer tipo de
interferência externa, os experimentos
serão realizados em uma mesma 3.1.2 Servidor Apache / Apache
máquina física, com a utilização de + Varnish-Cache
máquinas virtuais idênticas entre si e
Para oferecer recursos
uma terceira máquina virtual atuando
idênticos, foi criado uma máquina
como cliente.
virtual com as seguintes
As ligações entre as máquinas características:
serão efetuadas via interface de rede
Limitação à utilização de 1
emulada pelo software VirtualBox, da
núcleo do processador
Oracle.
Memória RAM limitada à 4GB
3.1 Hardware Disco Rígido de 4GB
9
3.2 Software De fácil utilização, o ab permite
a passagem de parâmetros
3.2.1 Sistema Operacional
personalizados, sendo eles:
Por tratar-se de um P Utilidade
equipamento de uso diário para tarefas Credencial básica de autenticação. Sintaxe –
-A
usuário:senha
de diversas áreas, o sistema
Tamanho do buffer (em bytes) do
operacional presente do hardware -b
envio/recebimento TCP
hospedeiro é o Microsoft Windows, em -c Quantidade de requisições simultâneas.
10
-T O parâmetro Content-type da requisição em para o servidor apache, o Varnishhist
caso de POST/PUT.
utiliza “|” para representar requisições
-u Arquivo contendo informações para o PUT.
Necessita do parâmetro –T atendidas pelo cache, enquanto as
-v Nível de verbosidade requisições propagadas ao servidor
-V Mostra a versão e encerra. são representadas pelo “#”.
-w Exibe os resultados do teste em uma tabela
HTML em 2 colunas. 3.2.4 Softwares utilizados
-x String com os atributos da tag <table>.
11
acelerador HTTP, foi instalado o o Varnish-Cache foi necessário a
Varnish-Cache, em sua versão 3.0, configuração da porta de escuta,
disponibilizada através do repositório permitindo assim que o Varnish fosse
do próprio desenvolvedor. consultado durante uma requisição. O
arquivo responsável por esta
4. Ensaio
configuração é o ports.conf, também
Com todos os recursos descritos e disponível em /etc/apache2 na linha
implementados conforme suas Listen.
respectivas documentações, esta
seção visa esclarecer as modificações
realizadas para que o sistema de cache
Figura 7: Configuração da porta a ser escutada pelo
reverso pudesse ser implementado. Apache.
12
compões cada cenário do ensaio e seu
respectivo tamanho.
Página Principal
Arquivo Tamanho
index 901 B
style.full.css 708 B
jquery.js 33,20 KB
init.js 1,17 KB
base.css 913 B
logo_g.png 9,67 KB
ico_mywork.jpg 6,87 KB
ico_info.jpg 4,28 KB
ico_blog.jpg 4,89 KB
ico_contact.jpg 4,67 KB
Total 67,2 KB
Figura 8: Arquivo default.vcl Tabela 4: Arquivos que compõem a página principal da
aplicação de ensaio.
4.3 Aplicação de Ensaio
Página Interna
Arquivo Tamanho
Como forma de simular uma meus-trabalhos 1,72KB
carga real para o sistema, foi utilizado init.js 369 B
style.css 966 B
uma aplicação desenvolvida com o
jquery.js 33,20 KB
auxílio do Zend-Framework em sua base.css 913 B
ico_blog.jpg 4,89 KB
versão 1.11.
ico_info.jpg 4,28 KB
wp.png 2,28 KB
Com o intuito de disponibilizar
ico_mywork.jpg 6,87 KB
cenários distintos, a aplicação ico_contact.jpg 4,67 KB
tw.png 1,52 KB
apresenta dois tipos de conteúdo:
logo_p.png 13,95 KB
Total 75,57 KB
Página inicial – Conteúdo
Tabela 5: Arquivos que compões a página interna da
estático, sem consulta a fontes aplicação de ensaio.
externas.
13
4.4 Sistemática Bateria 1
Requisições Totais Requisições Simultâneas
14
tempo médio de resposta na casa dos buscamos agora a diferença de
4800ms (milissegundos). desempenho para uma aplicação com
maior fluxo de dados, para isso o
Em condições iguais de
ensaio foi realizado com uma fila de
equipamento e estado do sistema-
10000 requisições.
operacional, o servidor que funcionava
em conjunto com o Varnish-Cache
mostrou respostas mais estáveis,
fechando o teste com um tempo médio
de resposta na casa dos 3ms.
Com os resultados de um
ensaio de carga leve em mãos,
Figura 12: Página Dinâmica @ 10000 requisições
15
Observando o gráfico anterior é decorrer do experimento, apresentando
possível verificar que apesar da tempos semelhantes aos ensaios
elevação dos tempos de resposta, a anteriores.
forma com que o Apache atende
continua semelhante. O tempo médio
alcançado pelo Apache foi de
20757ms, contra 80ms conseguido
pelo Varnish.
16
Apache devolver objetos armazenados no
Estático cache, o Varnish permitiu que o
Req. Tempo
servidor atendesse um maior número
1000 Timeout – 250 requisições completadas
10000 Timeout – 304 requisições completadas de requisições num menor espaço de
100000 Timeout – 270 requisições completadas
tempo, sem que para isso fosse
Dinâmico
necessário aumentar os recursos
1000 Timeout – 110 requisições completadas
10000 Timeout – 106 requisições completadas disponíveis no sistema ou mesmo
100000 Timeout – 98 requisições completadas
esgotar os recursos e paralisar os
Tabela 7: Tempos do Apache
testes.
Varnish
Estático Apesar dos resultados
Req. Tempo positivos alcançados aqui, um passo
1000 151ms / requisição
natural a ser seguido nesta pesquisa é
10000 328ms / requisição
100000 Timeout – 27000 requisições completadas a implementação do Varnish-Cache em
Dinâmico um ambiente de produção real,
1000 153ms / requisição
efetuando otimizações pontuais
10000 350ms / requisição
100000 Timeout – 22603 requisições completadas através do VCL de forma a atender a
Tabela 8: Tempos do Varnish
requisitos específicos de diversas
6. Considerações Finais áreas do sistema.
17
7. Referências BRITO, SAULO, Varnish Cache – O que é e
como implementá-lo
VARNISH SOFTWARE, Varnish Cache
Disponível em <http://tkme.in/to/MzQ>. Acesso
Documentation.
em 27 jul 2012
Disponível em: <http://tkme.in/to/MjA>. Acesso
em 17 mai 2012 WALLEN, JACK, DIY: Speed up your Apache
server width Varnish Cache.
AGUIAR, ALEXANDRE S., Varnish: Uma
Disponível em <http://tkme.in/to/MzU>. Acesso
camada de velocidade.
em 27 jul 2012
Disponível em: <http://tkme.in/to/MjE>. Acesso
em 18 mai 2012 CETIC.BR. TIC Domicílios e Usuários 2011.
Disponível em <http://tkme.in/to/MzY>. Acesso
KAMPP, POUL-HENNING, Varnish – the
em 10 ago 2012
HTTP accelerator (2006). Vìdeo MPEG
(240MB – 104min). Disponível em: O’REILLY, TIM, What Is Web 2.0
<http://tkme.in/to/MjQ> Disponível em <http://tkme.in/to/Mzc>. Acesso
em 14 abr 2012
SOUDERS, STEVE, High Performance Web
Sites – 14 rules for faster-loading pages. APACHE, ab – Apache HTTP server
Disponível em: <http://tkme.in/to/MjU>. Acesso benchmarking tool.
em 14 jul 2012 Disponível em: <http://tkme.in/to/Mzk>. Acesso
em 20 out 2012
NOTTINGHAM, MARK, ESI Language
Specification 1.0.
Disponível em <http://tkme.in/to/MjM>. Acesso
em 17 jul 2012
18