Desenvolvimento de um Portal Web Escalável e de alta Performance comCOM PROCESSAMENTO E MEMÓRIA...
-
Upload
helton-ritter -
Category
Technology
-
view
863 -
download
0
description
Transcript of Desenvolvimento de um Portal Web Escalável e de alta Performance comCOM PROCESSAMENTO E MEMÓRIA...
Helton Eduardo Ritter - [email protected] – Agosto de 2012
DESENVOLVIMENTO DE UM PORTAL WEB ESCALÁVEL E DE ALTA PERFORMANCE COM PROCESSAMENTO E MEMÓRIA DISTRIBUÍDA
Helton Eduardo Ritter
Orientador: Ms. Claudio Schepke
Agosto de 2012
Helton Eduardo Ritter - [email protected] – Agosto de 2012
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 - [email protected] – Agosto de 2012
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 - [email protected] – Agosto de 2012
Objetivos Específicos
• Desenvolver a novo portal, e medir o ganho de performance comparado com o atual.
Helton Eduardo Ritter - [email protected] – Agosto de 2012
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 - [email protected] – Agosto de 2012
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 - [email protected] – Agosto de 2012
Problema
Portais que crescem em acessos & complexidade dos algoritmos.
X Limitação da abordagem multicore em
virtude do custo.
Helton Eduardo Ritter - [email protected] – Agosto de 2012
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 - [email protected] – Agosto de 2012
Aplicações de alta performance para web
• HPC no cotidiano das empresas;
Web como plataforma de aplicação
É preciso pensar as aplicações web diferente!
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Memória e processamento distribuído
Fazer pequenos blocos especializados em processamento de tarefas. Distribuir esses blocos em vários hosts. MPI, JAVA RMI, aLua, Sockets, JBOSS, Web Services, SOAP, REST … Não há uma ferramenta, um padrão de fato.
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Fonte: ROTSAERT, 2011, p.40
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Fonte: ZMIEVSKI, p.10, 2010
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Lógica do app com Memcache
Fonte: GALBRAITH, p.316, 2009
Helton Eduardo Ritter - [email protected] – Agosto de 2012
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 - [email protected] – Agosto de 2012
Fonte: ROTSAERT, 2011, p.40
Helton Eduardo Ritter - [email protected] – Agosto de 2012
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 - [email protected] – Agosto de 2012
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 - [email protected] – Agosto de 2012
Hipóteses • Para até 500 page views em 1 minuto, o
melhor tempo de resposta é na abordagem sem processamento e memória distribuída, sem cache em memória RAM, em função do custo computacional de distribuir o processamento e memória.
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Resultados
Helton Eduardo Ritter - [email protected] – Agosto de 2012
SETREM • 8 cursos técnicos, 1 na área de tecnologia; • 9 cursos superiores, 2 na área de tecnologia; • 95 computadores em setores administrativos; • 50 em salas de aula + 50 datashows; • 224 distribuídos em 13 laboratórios + DS`s; • A noite, juntam-se mais 500 notebooks a
rede (levantamento de Nov. de 2011).
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Server 1 - Linux, Apache2, com PHP5, GD, FreeTDS, php5-mssql. Server 2 - Banco de dados SQL Server Server 3 - Storage de imagens
Influenciado por Steve Souders (2007) “Alta performance em sites web ”, Yahoo!
Portal SETREM 2010
Helton Eduardo Ritter - [email protected] – Agosto de 2012
• Dell PowerEdge R210, com 4 processadores Intel Xeon Quad-‐Core E3-‐1220 (3.10GHz, 8M Cache, Turbo/4T (80W), 16 GB de RAM.
• O site está em uma máquina virtual (VMware ESX Server) com 4 processadores disponíveis, e 3.5Gb de RAM.
Servidor
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Portal proposto
Com processamento e memória distribuída e cacheada!
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Projeto piloto: Portal Mobile
Fonte: DOTTO, 2012
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Solução adotada
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Os dois nós workers, são laptops (Acer Aspire 3100) executando Ubuntu Server 10.10 32 bits, ambos processadores Sempron 3200, um deles com 512Mb e outro com 1GB de RAM. O servidor principal (em verde) foi uma máquina virtual com 1 processador Core i5 2.4Ghz, 1 Gb de RAM, também executando Ubuntu Server.
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Novo Layout 10
Novo Layout
Gilvan Ritter
100% feito em Gimp
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Executando …
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Fonte: RITTER e SCHEPKE, 2012
Apenas em arquivos PHP
Helton Eduardo Ritter - [email protected] – Agosto de 2012
• Medindo o desempenho da solução com Siege.
• Ambiente e condições dos testes.
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Disponibilidade em % conforme a concorrência
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Tempo de resposta em segundos
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Taxa de transações por segundo conforme a concorrência
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Transferência de dados em MB
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Concorrência, requisições aguardando resposta
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Considerações finais
Helton Eduardo Ritter - [email protected] – Agosto de 2012
• E se um Gearman Server não for o suficiente para fazer a distribuição aos Workers?
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Helton Eduardo Ritter - [email protected] – Agosto de 2012
• E se um Client (h1p server) não for suficiente?
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Conclusão
• Melhorias x escalabilidade;
• Ambiente criado para possibilitar crescer;
• Gerarman e Memcache administram a heterogeneidade do hardware;
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Conclusão
• Memcache e o acesso ao BD;
• Setup automá^co de novo worker;
• Ferramentas de monitoramento;
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Conclusão
• Na arquitetura proposta a comunicação em rede foi minimizada.
• Quan^dade de código-‐fonte necessário compensado pela arquitetura adaptável.
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Referências Bibliográficas DOTTO, Ariel Ruguéri. Desenvolvimento do Portal Web SETREM na versão Mobile uOlizando linguagem de programação PHP. Relatório de Estágio Curricular Supervisionado Obrigatório, Curso Técnico em Informá^ca, Sociedade Educacional Três de Maio -‐ SETREM, 2012. FITZPATRICK, Brad. Distributed Caching with Memcached.Disponível em <hmp://www.linuxjournal.com/ar^cle/7451>, Linux Journal, 2004. GALBRAITH, Patrick. Developing Web ApplicaOons with Perl, memcached, MySQL and Apache. Wiley Publishing inc. Indianapolis, 2009. Gearman. Disponível em <hmp://gearman.org>, acesso em 31 Oct. 2011.
Helton Eduardo Ritter - [email protected] – Agosto de 2012
Referências Bibliográficas RITTER, Helton Eduardo, SCHEPKE, Claudio. Desenvolvimento de um portal web escalável e de alta performance com processamento e memória distribuída. Sistemas de Informação, Faculdade Três de Maio, 2012. ROTSAERT, Jayme. An insider's view on how to build, maintain high traffic websites. Canada-‐Norway Partnership in higher educa^on 2011.Disponível em <hmp://www.slideshare.net/_jayme/an-‐insiders-‐view-‐on-‐how-‐to-‐build-‐maintain-‐high-‐traffic-‐websites>, acesso em 15 Mar. 2012. ZMIEVSKI, Andrei. All The Li\le Pieces, distributed systems with PHP. Dutch PHP Conference, Amsterdam, 2009. Disponível em <hmp://www.slideshare.net/andreizm/all-‐the-‐limle-‐pieces-‐1573862> acesso em 15 Mar. 2012.