1. DESENVOLVIMENTO DE UM PORTAL WEB
ESCALÁVEL E DE ALTA PERFORMANCE COM
PROCESSAMENTO E MEMÓRIA DISTRIBUÍDA
Helton Eduardo Ritter
Orientador: MSc. Claudio Schepke
Abril de 2012
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
2. Objetivo Geral
Projetar e desenvolver a nova versão do
Portal SETREM, de modo que seja
escalável, mantendo a performance através
de processamento distribuído e
memória distribuída e cacheada.
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
3. Objetivos Específicos
• Estudar as ferramentas, fazer um piloto a fim
de avaliar como projetar o portal.
• Projetar a arquitetura do portal de maneira
que faça uso de processamento e memória
distribuída.
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
4. Objetivos Específicos
• Desenvolver a novo portal, e medir o ganho
de performance comparado com o atual.
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
5. Objetivos Específicos
• Medir qual é o número de visualizações de
páginas que torna uma ou outra abordagem
mais adequada (sem cache e processamento
distribuído versus com cache e processamento
distribuído).
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
6. Objetivos Específicos
• Publicar em eventos e/ou periódicos
científicos os resultados do teste piloto, e do
resultado final.
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
7. Delimitação do Tema
• Foco em escalabilidade e performance
• Servidores GNU/Linux
• LAMP + Gearman + Memcache
• Novembro de 2011 a Agosto de 2012
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
8. Problema
Portais que crescem em acessos +
complexidade dos algoritmos.
X
Limitação da abordagem multicore em
virtude do custo.
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
9. Problema
O que então, e como seria uma arquitetura que
permitisse o crescimento de um portal em PHP,
tanto em questões de código como para
atender mais usuários simultaneamente
mantendo a performance, criando um ambiente
escalável a baixo custo.
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
10. Hipóteses
• A abordagem do uso de Memcache e
Gearman resolve o gargalo dos vários workers
buscarem informações no mesmo banco de
dados.
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
11. Hipóteses
• Existe a possibilidade de setup automático de
um novo worker sem a necessidade de parar
serviços ou configuração manual.
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
12. Hipóteses
• Existem ferramentas de monitoramento para
saber o quanto os workers, servers e clients
estão ocupados, facilitando saber quando
alocar ou desalocar um nó (seja ele worker,
server ou client).
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
13. Hipóteses
• Para até 500 page views em 1 minuto, o
melhor tempo de resposta é na abordagem
sem processamento e memória distribuído,
sem cache em memória RAM, em função do
custo computacional de distribuir o
processamento e memória.
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
15. Aplicações de alta performance
para web
• Antes: HPC Ciência
• Hoje: HPC Cotidiano das empresas
• Web como plataforma de aplicação
É preciso pensar as aplicações web
diferente!
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
16. Memória e processamento
distribuído
“These models assume that information
processing through the interactions of a large
number of simple processing elements called
units, each sending signals to other units”
(MCCLELLAND, 1986, p.8).
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
17. Memória e processamento
distribuído
MPI, JAVA RMI, aLua, Sockets, JBOSS, Web
Services SOAP, REST … Não há uma ferramenta,
um padrão de fato.
GEARMAN & Memcache
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
20. Lógica do app com Memcache
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
21. Medindo a performance da aplicação web
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
22. Siege
Siege is an http load testing and benchmarking
utility. It was designed to let web developers measure
their code under duress, to see how it will stand up to
load on the internet. Siege supports basic
authentication, cookies, HTTP and HTTPS protocols. It
lets its user hit a web server with a
configurable number of simulated web
browsers. Those browsers place the server “under
siege” (FULMER, 2012).
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
25. Situação atual – Portal SETREM
•Projeto de 2007, no ar desde 14/06/2010
•Critério de classificação de conteúdo por
áreas.
•Papéis: visitante, usuário, revisor,
administrador, tradutor.
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
26. Performance do portal atual
• Com cada Nro de usuários concorrentes,
feito 5 testes. Entre cada teste, reiniciado
o servidor web.
• Testes com o siege e com o jMeter
Ver gráficos - siege
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
27. The Web Cofee Machine 2 Mysql
Databases
• Client (gearman, memcache, view,
controller)
• Worker
• Core, Action, Model, DB, Config
• Ver figuras
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
28. Piloto, portal Mobile
• Implementado por Ariel Dotto, estagiário
• Com banco SQL Server
• Dezembro, Janeiro e início de Fevereiro.
Ver figuras
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
29. Layout
• Desenhado em Fevereiro de 2012 por
Gilvan Daniel Ritter, bolsista do CTI,
usando algumas ideias de Leonardo de
Almeida (bolsista do CTI, Nov. 2011).
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
30. • Demonstração gearman + memcache
• video
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
31. Pendências
• Escrever o HTML e CSS do layout – 16/04
• Implementar a interface do visitante – 07/05
• Fazer os testes de performance
novamente – 12/05
• Ver como monitorar e setup automático –
25/05
• Continuar desenvolvimento na interface
administrativa – 15/06
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
32. Pendências
• Escrever artigo para FISL – 15/04
• Trazer outras ferramentas em outras
linguagens de programação cap2 – 30/04
• Concluir relatório – 02/07
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
33. Referências Bibliográficas
FITZPATRICK, Brad. Distributed Caching with Memcached.Disponível em
<http://www.linuxjournal.com/article/7451>, Linux Journal, 2004.
GALBRAITH, Patrick. Developing Web Applications with Perl, memcached,
MySQL and Apache. Wiley Publishing inc. Indianapolis, 2009.
MINETTO, Elton Luís. Ao infinito e além com PHP, Memcached e Gearman.
Disponível em <http://www.slideshare.net/eminetto/ao-infinito-e-alm-com-
php-memcached-e-gearman>, 2010.
ZMIEVSKI, Andrei. All The Little Pieces, distributed systems with PHP. Dutch
PHP Conference, Amsterdam, 2009. Disponível em
<http://www.slideshare.net/andreizm/all-the-little-pieces-1573862> acesso
em 15 Mar. 2012.
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012