SlideShare una empresa de Scribd logo
1 de 58
Descargar para leer sin conexión
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 - heltonritter@gmail.com – 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 - heltonritter@gmail.com – 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 - heltonritter@gmail.com – Agosto de 2012
Objetivos Específicos

•  Desenvolver a novo portal, e medir o
   ganho de performance comparado com o
   atual.




   Helton Eduardo Ritter - heltonritter@gmail.com – 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 - heltonritter@gmail.com – 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 - heltonritter@gmail.com – 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 - heltonritter@gmail.com – 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 - heltonritter@gmail.com – 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 - heltonritter@gmail.com – 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 - heltonritter@gmail.com – Agosto de 2012
Gearman




Fonte: Gearman, 2011
       Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Fonte: ROTSAERT, 2011, p.40



     Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Memcache




Fonte: Helton Eduardo2004 - heltonritter@gmail.com – Agosto de 2012
       FITZPATRICK, Ritter
Fonte: ZMIEVSKI, p.10, 2010



Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Lógica do app com Memcache




Fonte: GALBRAITH, p.316, 2009


    Helton Eduardo Ritter - heltonritter@gmail.com – 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 - heltonritter@gmail.com – Agosto de 2012
Fonte: ROTSAERT, 2011, p.40



     Helton Eduardo Ritter - heltonritter@gmail.com – 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 - heltonritter@gmail.com – 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 - heltonritter@gmail.com – 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 - heltonritter@gmail.com – Agosto de 2012
Resultados


Helton Eduardo Ritter - heltonritter@gmail.com – 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 - heltonritter@gmail.com – Agosto de 2012
Portal SETREM 2010
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!

   Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Servidor
•  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.	
  	
  


      Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Portal proposto
Com processamento e memória
   distribuída e cacheada!


 Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Projeto piloto: Portal Mobile




Fonte: DOTTO, 2012


       Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Solução adotada




   Helton Eduardo Ritter - heltonritter@gmail.com – 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 - heltonritter@gmail.com – Agosto de 2012
Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Novo Layout
                                                   Gilvan Ritter
                          Novo	
  Layout	
  
                              10	
                  100% feito
                                                     em Gimp




Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Executando …




Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Apenas em arquivos PHP




 Fonte: RITTER e SCHEPKE, 2012

Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
•  Medindo o desempenho da solução com
   Siege.
•  Ambiente e condições dos testes.




   Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Número de transações atendidas


X	
  2.83	
  




        Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Número de transações atendidas
   X	
  3.66	
  




Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Número de transações atendidas

              X	
  3.25	
  




Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Número de transações atendidas


                          X	
  3	
  




Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Número de transações atendidas


                                   X	
  3.47	
  




Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Número de transações atendidas


                                            X	
  9.87	
  




Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Número de transações atendidas



                                                                  X	
  8.82	
  




Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Disponibilidade em % conforme a
concorrência




   Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Tempo de resposta em segundos




  Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Taxa de transações por segundo conforme
a concorrência




   Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Transferência de dados em MB




   Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Concorrência, requisições aguardando resposta




    Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Considerações finais



Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
•  E	
  se	
  um	
  Gearman	
  Server	
  não	
  for	
  o	
  suficiente	
  
   para	
  fazer	
  a	
  distribuição	
  aos	
  Workers?	
  




       Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
•  E	
  se	
  um	
  Client	
  (h1p	
  server)	
  não	
  for	
  suficiente?	
  




       Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Conclusão	
  
•  Melhorias	
  x	
  escalabilidade;	
  

•  Ambiente	
  criado	
  para	
  possibilitar	
  crescer;	
  

•  Gerarman	
  e	
  Memcache	
  administram	
  a	
  
   heterogeneidade	
  do	
  hardware;	
  

     Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
Conclusão	
  
•  Memcache	
  e	
  o	
  acesso	
  ao	
  BD;	
  

•  Setup	
  automá^co	
  de	
  novo	
  worker;	
  

•  Ferramentas	
  de	
  monitoramento;	
  

      Helton Eduardo Ritter - heltonritter@gmail.com – 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 - heltonritter@gmail.com – 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 - heltonritter@gmail.com – 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	
  Lile	
  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.	
  



         Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012

Más contenido relacionado

Similar a Desenvolvimento de um Portal Web Escalável e de alta Performance comCOM PROCESSAMENTO E MEMÓRIA DISTRIBUÍDA

O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018 O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018 Gabriel Machado
 
Introduction Android - C.E.S.A.R
Introduction Android - C.E.S.A.RIntroduction Android - C.E.S.A.R
Introduction Android - C.E.S.A.RRenato
 
Angular + jwt + .net core
Angular + jwt + .net core Angular + jwt + .net core
Angular + jwt + .net core MVP Microsoft
 
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7tdc-globalcode
 
Introdução ao Web Design: Aula 5 - HTML (part. 1)
Introdução ao Web Design: Aula 5 - HTML (part. 1)Introdução ao Web Design: Aula 5 - HTML (part. 1)
Introdução ao Web Design: Aula 5 - HTML (part. 1)Gustavo Zimmermann
 
Visão Geral do HTML5 e do Internet Explorer 9
Visão Geral do HTML5 e do Internet Explorer 9Visão Geral do HTML5 e do Internet Explorer 9
Visão Geral do HTML5 e do Internet Explorer 9Rodrigo Kono
 
Palestra Drupal
Palestra DrupalPalestra Drupal
Palestra Drupalwesleypb
 
4 passos até à Gestão de capacidade
4 passos até à Gestão de capacidade4 passos até à Gestão de capacidade
4 passos até à Gestão de capacidadeSimão Fontes
 
Como o SERPRO Atende os Direitos dos Titulares
Como o SERPRO Atende os Direitos dos TitularesComo o SERPRO Atende os Direitos dos Titulares
Como o SERPRO Atende os Direitos dos TitularesDouglas Siviotti
 
Orquestrando Templates no Zabbix
Orquestrando Templates no ZabbixOrquestrando Templates no Zabbix
Orquestrando Templates no ZabbixThiago Leão Melo
 
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchXen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchBernardo Donadio
 
PROJ40-Loja de Pneus
PROJ40-Loja de PneusPROJ40-Loja de Pneus
PROJ40-Loja de PneusMarco Coghi
 
Apresentação comercial
Apresentação comercialApresentação comercial
Apresentação comercialArinsBruno
 
Desenvolvimento x Diversidade de dispositivos Android - DevDay 2012
Desenvolvimento x Diversidade de dispositivos Android - DevDay 2012Desenvolvimento x Diversidade de dispositivos Android - DevDay 2012
Desenvolvimento x Diversidade de dispositivos Android - DevDay 2012mmschall
 
Primeiros Passos no Magento Commerce
Primeiros Passos no Magento CommercePrimeiros Passos no Magento Commerce
Primeiros Passos no Magento CommerceAndre Gugliotti
 
Montando ambiente de desenvolvimento android em um tablet
Montando ambiente de desenvolvimento android em um tabletMontando ambiente de desenvolvimento android em um tablet
Montando ambiente de desenvolvimento android em um tabletHeider Lopes
 

Similar a Desenvolvimento de um Portal Web Escalável e de alta Performance comCOM PROCESSAMENTO E MEMÓRIA DISTRIBUÍDA (20)

O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018 O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
 
Introduction Android - C.E.S.A.R
Introduction Android - C.E.S.A.RIntroduction Android - C.E.S.A.R
Introduction Android - C.E.S.A.R
 
Angular + jwt + .net core
Angular + jwt + .net core Angular + jwt + .net core
Angular + jwt + .net core
 
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
TDC2018SP | Trilha PHP Essencial - O que nao fazer ao atualizar para o PHP 7
 
Introdução ao Web Design: Aula 5 - HTML (part. 1)
Introdução ao Web Design: Aula 5 - HTML (part. 1)Introdução ao Web Design: Aula 5 - HTML (part. 1)
Introdução ao Web Design: Aula 5 - HTML (part. 1)
 
Visão Geral do HTML5 e do Internet Explorer 9
Visão Geral do HTML5 e do Internet Explorer 9Visão Geral do HTML5 e do Internet Explorer 9
Visão Geral do HTML5 e do Internet Explorer 9
 
Palestra Drupal
Palestra DrupalPalestra Drupal
Palestra Drupal
 
4 passos até à Gestão de capacidade
4 passos até à Gestão de capacidade4 passos até à Gestão de capacidade
4 passos até à Gestão de capacidade
 
Como o SERPRO Atende os Direitos dos Titulares
Como o SERPRO Atende os Direitos dos TitularesComo o SERPRO Atende os Direitos dos Titulares
Como o SERPRO Atende os Direitos dos Titulares
 
Orquestrando Templates no Zabbix
Orquestrando Templates no ZabbixOrquestrando Templates no Zabbix
Orquestrando Templates no Zabbix
 
Web components
Web componentsWeb components
Web components
 
Web components
Web componentsWeb components
Web components
 
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchXen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
 
PROJ40-Loja de Pneus
PROJ40-Loja de PneusPROJ40-Loja de Pneus
PROJ40-Loja de Pneus
 
Apresentação comercial
Apresentação comercialApresentação comercial
Apresentação comercial
 
Desenvolvimento x Diversidade de dispositivos Android - DevDay 2012
Desenvolvimento x Diversidade de dispositivos Android - DevDay 2012Desenvolvimento x Diversidade de dispositivos Android - DevDay 2012
Desenvolvimento x Diversidade de dispositivos Android - DevDay 2012
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Primeiros Passos no Magento Commerce
Primeiros Passos no Magento CommercePrimeiros Passos no Magento Commerce
Primeiros Passos no Magento Commerce
 
Montando ambiente de desenvolvimento android em um tablet
Montando ambiente de desenvolvimento android em um tabletMontando ambiente de desenvolvimento android em um tablet
Montando ambiente de desenvolvimento android em um tablet
 
Domosys
DomosysDomosys
Domosys
 

Más de Helton Ritter

Aula 03 - Trabalhando com Intents, datePicker e Classes de terceiros
Aula 03 - Trabalhando com Intents, datePicker e Classes de terceirosAula 03 - Trabalhando com Intents, datePicker e Classes de terceiros
Aula 03 - Trabalhando com Intents, datePicker e Classes de terceirosHelton Ritter
 
Primeira aula desenvolvimento para Android
Primeira aula desenvolvimento para AndroidPrimeira aula desenvolvimento para Android
Primeira aula desenvolvimento para AndroidHelton Ritter
 
Utilizando web services do google, yahoo! e twitter com php
Utilizando web services do google,       yahoo! e twitter com phpUtilizando web services do google,       yahoo! e twitter com php
Utilizando web services do google, yahoo! e twitter com phpHelton Ritter
 
Auto-seleção de idioma para uso no corretor ortográfico do Mozilla Firefox
Auto-seleção de idioma para uso no corretor ortográfico do Mozilla FirefoxAuto-seleção de idioma para uso no corretor ortográfico do Mozilla Firefox
Auto-seleção de idioma para uso no corretor ortográfico do Mozilla FirefoxHelton Ritter
 
Ferramentas de Programação Paralela para Arquiteturas Multicore
Ferramentas de Programação Paralela para Arquiteturas MulticoreFerramentas de Programação Paralela para Arquiteturas Multicore
Ferramentas de Programação Paralela para Arquiteturas MulticoreHelton Ritter
 
Reconhecimento facial
Reconhecimento facialReconhecimento facial
Reconhecimento facialHelton Ritter
 
Conceitos básicos PHP
Conceitos básicos PHPConceitos básicos PHP
Conceitos básicos PHPHelton Ritter
 
Análise de interfaces para a programação paralela e distribuída
Análise de interfaces para a programação paralela e  distribuídaAnálise de interfaces para a programação paralela e  distribuída
Análise de interfaces para a programação paralela e distribuídaHelton Ritter
 
Contribuição da teoria do equilíbrio na identificação de Truste
Contribuição da teoria do equilíbrio na identificação de TrusteContribuição da teoria do equilíbrio na identificação de Truste
Contribuição da teoria do equilíbrio na identificação de TrusteHelton Ritter
 

Más de Helton Ritter (9)

Aula 03 - Trabalhando com Intents, datePicker e Classes de terceiros
Aula 03 - Trabalhando com Intents, datePicker e Classes de terceirosAula 03 - Trabalhando com Intents, datePicker e Classes de terceiros
Aula 03 - Trabalhando com Intents, datePicker e Classes de terceiros
 
Primeira aula desenvolvimento para Android
Primeira aula desenvolvimento para AndroidPrimeira aula desenvolvimento para Android
Primeira aula desenvolvimento para Android
 
Utilizando web services do google, yahoo! e twitter com php
Utilizando web services do google,       yahoo! e twitter com phpUtilizando web services do google,       yahoo! e twitter com php
Utilizando web services do google, yahoo! e twitter com php
 
Auto-seleção de idioma para uso no corretor ortográfico do Mozilla Firefox
Auto-seleção de idioma para uso no corretor ortográfico do Mozilla FirefoxAuto-seleção de idioma para uso no corretor ortográfico do Mozilla Firefox
Auto-seleção de idioma para uso no corretor ortográfico do Mozilla Firefox
 
Ferramentas de Programação Paralela para Arquiteturas Multicore
Ferramentas de Programação Paralela para Arquiteturas MulticoreFerramentas de Programação Paralela para Arquiteturas Multicore
Ferramentas de Programação Paralela para Arquiteturas Multicore
 
Reconhecimento facial
Reconhecimento facialReconhecimento facial
Reconhecimento facial
 
Conceitos básicos PHP
Conceitos básicos PHPConceitos básicos PHP
Conceitos básicos PHP
 
Análise de interfaces para a programação paralela e distribuída
Análise de interfaces para a programação paralela e  distribuídaAnálise de interfaces para a programação paralela e  distribuída
Análise de interfaces para a programação paralela e distribuída
 
Contribuição da teoria do equilíbrio na identificação de Truste
Contribuição da teoria do equilíbrio na identificação de TrusteContribuição da teoria do equilíbrio na identificação de Truste
Contribuição da teoria do equilíbrio na identificação de Truste
 

Desenvolvimento de um Portal Web Escalável e de alta Performance comCOM PROCESSAMENTO E MEMÓRIA DISTRIBUÍDA

  • 1. 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 - heltonritter@gmail.com – Agosto 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 - heltonritter@gmail.com – Agosto 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 - heltonritter@gmail.com – Agosto de 2012
  • 4. Objetivos Específicos •  Desenvolver a novo portal, e medir o ganho de performance comparado com o atual. Helton Eduardo Ritter - heltonritter@gmail.com – Agosto 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 - heltonritter@gmail.com – Agosto de 2012
  • 6. 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 - heltonritter@gmail.com – Agosto de 2012
  • 7. Problema Portais que crescem em acessos & complexidade dos algoritmos. X Limitação da abordagem multicore em virtude do custo. Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 8. 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 - heltonritter@gmail.com – Agosto de 2012
  • 9. 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 - heltonritter@gmail.com – Agosto de 2012
  • 10. 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 - heltonritter@gmail.com – Agosto de 2012
  • 11. Gearman Fonte: Gearman, 2011 Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 12. Fonte: ROTSAERT, 2011, p.40 Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 13. Memcache Fonte: Helton Eduardo2004 - heltonritter@gmail.com – Agosto de 2012 FITZPATRICK, Ritter
  • 14. Fonte: ZMIEVSKI, p.10, 2010 Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 15. Lógica do app com Memcache Fonte: GALBRAITH, p.316, 2009 Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 16. 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 - heltonritter@gmail.com – Agosto de 2012
  • 17. Fonte: ROTSAERT, 2011, p.40 Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 18. 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 - heltonritter@gmail.com – Agosto de 2012
  • 19. 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 - heltonritter@gmail.com – Agosto de 2012
  • 20. 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 - heltonritter@gmail.com – Agosto de 2012
  • 21. Resultados Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 22. 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 - heltonritter@gmail.com – Agosto de 2012
  • 23. Portal SETREM 2010 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! Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 24. Servidor •  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.     Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 25. Portal proposto Com processamento e memória distribuída e cacheada! Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 26. Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 27. Projeto piloto: Portal Mobile Fonte: DOTTO, 2012 Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 28. Solução adotada Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 29. 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 - heltonritter@gmail.com – Agosto de 2012
  • 30. Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 31. Novo Layout Gilvan Ritter Novo  Layout   10   100% feito em Gimp Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 32. Executando … Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 33. Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 34. Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 35. Apenas em arquivos PHP Fonte: RITTER e SCHEPKE, 2012 Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 36. •  Medindo o desempenho da solução com Siege. •  Ambiente e condições dos testes. Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 37. Número de transações atendidas X  2.83   Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 38. Número de transações atendidas X  3.66   Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 39. Número de transações atendidas X  3.25   Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 40. Número de transações atendidas X  3   Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 41. Número de transações atendidas X  3.47   Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 42. Número de transações atendidas X  9.87   Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 43. Número de transações atendidas X  8.82   Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 44. Disponibilidade em % conforme a concorrência Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 45. Tempo de resposta em segundos Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 46. Taxa de transações por segundo conforme a concorrência Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 47. Transferência de dados em MB Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 48. Concorrência, requisições aguardando resposta Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 49. Considerações finais Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 50. •  E  se  um  Gearman  Server  não  for  o  suficiente   para  fazer  a  distribuição  aos  Workers?   Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 51. Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 52. •  E  se  um  Client  (h1p  server)  não  for  suficiente?   Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 53. Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 54. Conclusão   •  Melhorias  x  escalabilidade;   •  Ambiente  criado  para  possibilitar  crescer;   •  Gerarman  e  Memcache  administram  a   heterogeneidade  do  hardware;   Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 55. Conclusão   •  Memcache  e  o  acesso  ao  BD;   •  Setup  automá^co  de  novo  worker;   •  Ferramentas  de  monitoramento;   Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012
  • 56. 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 - heltonritter@gmail.com – Agosto de 2012
  • 57. 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 - heltonritter@gmail.com – Agosto de 2012
  • 58. 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  Lile  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.   Helton Eduardo Ritter - heltonritter@gmail.com – Agosto de 2012