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
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
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
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
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
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
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
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
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
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
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
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
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
Referencial




Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
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
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
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
Gearman




Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
Memcache




Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
Lógica do app com Memcache




 Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
Medindo a performance da aplicação web




     Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
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
jMeter
Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
Resultados já obtidos




Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
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
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
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
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
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
• Demonstração gearman + memcache
• video




    Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
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
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
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

Apresentacao pré banca TCC em SI

  • 1.
    DESENVOLVIMENTO DE UMPORTAL 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 edesenvolver 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 • Estudaras 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 • Desenvolvera 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 • Medirqual é 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 • Publicarem 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 abordagemdo 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 apossibilidade 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 ferramentasde 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
  • 14.
    Referencial Helton Eduardo Ritter- Trabalho de Estágio – Abril de 2012
  • 15.
    Aplicações de altaperformance 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 “Thesemodels 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
  • 18.
    Gearman Helton Eduardo Ritter- Trabalho de Estágio – Abril de 2012
  • 19.
    Memcache Helton Eduardo Ritter- Trabalho de Estágio – Abril de 2012
  • 20.
    Lógica do appcom Memcache Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
  • 21.
    Medindo a performanceda aplicação web Helton Eduardo Ritter - Trabalho de Estágio – Abril de 2012
  • 22.
    Siege Siege is anhttp 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
  • 23.
    jMeter Helton Eduardo Ritter- Trabalho de Estágio – Abril de 2012
  • 24.
    Resultados já obtidos HeltonEduardo 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 portalatual • 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 CofeeMachine 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 emFevereiro 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 oHTML 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 artigopara 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