SlideShare una empresa de Scribd logo
1 de 37
Plataforma Zope/Plone na Procuradoria 
Geral da República: desafios e soluções


              Lucas Brasilino
         <lucas.brasilino@gmail.com>

          Mauro Cesar Sobrinho
          <mauro@pgr.mpf.gov.br>
Agenda
Cenário anterior
Precisando e decidindo migrar...
Cenário em 2005 e 2006
Desafios e dificuldades
Reestruturação
Estrutura atual e exemplos
Trabalhos futuros
Cenário Anterior
Inicialmente, atualizações de páginas WEB
feitas por técnicos de suporte (1995 a 2002);
  Quem cuidava de infra-estrutura, também
  atualizava as páginas...
Criação de Grupo WEB ligado a área de
desenvolvimento (2002 a 2005);
  Separação de infra-estrutura e gestão de conteúdo
Transferência do Grupo WEB para a área de
Comunicação (2005 até hoje);
Precisando mudar...
Fatos:
  Área de tecnologia não conhece o negócio, mas
  domina as ferramentas de publicação;
  Área de comunicação conhece o negócio, mas não
  domina as ferramentas de publicação.
Objetivo:
  Tornar simples a rotina de publicação Web !
Solução:
  Adotar uma ferramenta de CMS !!
Decidindo migrar...
Diretrizes para um portal do MPF
  Desenvolver um canal de comunicação para
  atender demandas da sociedade;
  Fortalecer uma identidade institucional para o MPF;
  Otimizar a navegação e localização de conteúdos;
  Unificar informações sobre a instituição;
  Atender critérios de acessibilidade, navegabilidade
  e homogeneidade.
Decidindo migrar...
As secretarias de Comunicação Social e de
Tecnologia da Informação da PGR realizaram
uma série de reuniões com objetivo de
estabelecer uma parceria para gerenciar o
Portal do MPF.
  Área de atuação:
    SECOM ficou responsável pela identidade visual e
    gerenciamento de conteúdo
    STI ficou responsável pela infra-estrutura tecnológica
Decidindo migrar...
Avaliação das ferramentas disponíveis no
mercado apontou para o Plone/Zope
 Custo / benefício, segurança e maturidade do
 produto;
 Suporte a múltiplos idiomas;
 Modular, expandindo suas funções;
 Software Livre;
 Integração a Diretório (LDAP);
 Base instalada, inclusive no Brasil.
Equipe de profissionais
SECOM: 5 profissionais dedicados exclusivamente
para cuidar das questões web. Compreendendo:
     1 desenvolvedor
     2 webdesigners
     1 gestor de conteúdo
     1 estagiário
STI: 3 profissionais não dedicados que atendem às
demandas existentes, compreendendo:
     1 desenvolvedor
     2 suporte à infra-estrutura
Cenário em 2005




              Apache 2.0 (mod_proxy)
                   ZOPE/Plone




                     Data.fs
Cenário em 2006

   DNS
round-robin




                   NCS             Apache 2.0 (mod_proxy)
                                        ZOPE/Plone


                                    ZEO



                         Data.fs
                         OCFS2
Cenário em 2006
DNS: resolução para 2 IP's:
  Round-robin
Zope 2.9.3 / Plone 2.5:
  Instalado em /usr/local
  Usando python 2.4.3 (/usr/local/bin)
ZEO com um único Data.fs
Cenário em 2006: Desafios
'Aleatoriamente' o processo do Zope ia a 100%
de utilização de CPU
  Eventualmente descobria-se que algum objeto ao
  ser acessado fazia o Zope 'perder-se' (algo como
  um loop infinito ou deadlock).
  Hoje sabemos que este problema é categorizado
  como 'Spinning Zope'.
Frequentes travamentos causados pelo OCFS2
Cenário em 2006: Desafios
Backup não realizado da forma indicada:
  cp
Baixa performance
Dificuldades
Encontrar uma documentação concisa e bem
organizada.
  Wiki: bastante esparso
  The Zope book: boa documentação, porém não tão
  'user friendly'.
Mea culpa: talvez devesse ter assinado
algumas listas de discussões.
Reestruturação
Reorganização e reinstalação:
  A partir dos fontes e separadamente
  Códigos binários ou interpretados:
    Usando como PREFIX (top dir) /usr/webinfra
    Python 2.4.4:
       ./configure --with-prefix=/usr/webinfra
       Imaging (PIL), python-ldap, MySQL-python
    Zope 2.9.8:
       ./configure --with-prefix=/usr/webinfra 
           --with-python=/usr/webinfra/bin/python
Reestruturação
Reorganização e reinstalação:
  Plone 2.5.3-final
  Dados (Data.fs):
    /usr/webdata/var
Recuperação do Data.fs
O tamanho do Data.fs estava em torno de ~5
GB.
A Wikipage ZODB/FileStorageBackup
documenta utilitários como:
  repozo.py
  fstest.py
  fsrecover.py (em $PREFIX/lib/python/ZODB/)
fstest.py apontou inconsistências.
Recuperação do Data.fs
fsrecover.py recuperou e packeou.
  O Data.fs foi reduzido a ~3.5 Gb
'Spinning Zope' solucionado.
Melhora (leve) na performance.
Dividir para Conquistar
Servidor ZEO em outra máquina
  Desinstalação do OCFS2
    Perda da redundância
    Ganho em estabilidade
Dividir para Conquistar

                   Apache 2.0 (mod_proxy)
        NCS             ZOPE/Plone




                    ZEO




                   ZEO Data Files
Dividir para Conquistar
Divisão dos Plone sites em vários Data.fs:
  Conselhos
  Informa
  Intranets
  Memorial
  Outros (PGR, PGE, Câmaras)
Uso de memória
Aumento do nº de objetos em memória
        <zodb_db main>
           mount-point /
           cache-size 20000
           <zeoclient>....</zeoclient>
        </zodb_db>
        <zodb_db memorial>
           mount-point /memorialfs
           cache-size 10000
           <zeoclient>....</zeoclient>
        </zodb_db>
        <zodb_db intranets>
           mount-point /intranets
           cache-size 10000
           <zeoclient>....</zeoclient>
        </zodb_db>
Uso de memória
Ocupa em média 1.6Gb de RAM.
Empiricamente não ultrapassa 2Gb
  Erro 'out of memory'
  # ulimit -v
    unlimited
Aumento considerável de performance
Web Caches
Um dos métodos mais eficientes no aumento
de performance de aplicações Web
  HTTP accelerator
Retém um objeto web durante um dado tempo
Minimiza requisições ao Zope
Mecanismos básicos
  Freshness, Validation, Invalidation
Web Caches
1º experimento: Apache mod_expires
  Adiciona e/ou substitui o HTTP Header Expires
  Define quando o objeto torna-se 'velho'
  Ignora mudanças no Plone
  Efeito colateral: o usuário 'vê' um objeto antigo
Web Caches
2º experimento: Apache mod_wodan
  Ignora qualquer header e define uma
  'cacheabilidade' de todos os objetos de uma página
  Versão estável para Apache 1.3
  Versão RC para Apache 2.x
  Projeto aparentemente abandonado
  Resultados similares ao anterior
Web Caches
3º experimento: Apache mod_cache
  A princípio segue os headers que definem a
  'cacheabilidade' de um objeto
  Implementação problemática no Apache 2.0
  Média integração com o Plone (via CacheFu)
  Se for definido um tempo de expiração pequeno, os
  resultados são razoáveis
  Ainda gera muitas requisições ao Zope
Web Caches
4º experimento: Proxy/Cache Squid
  Adaptado para funcionar como um HTTP
  accelerator
  Segue fielmente o definido nos HTTP headers
  Performático
  Ótima integração com o Plone (via CacheFu)
  Melhor resultado atingido
Política de backup e packing
Implementados com scripts shell usando
ferramentas ZEO e gerando logs
Packing realizado todo sábado
Backup's de terça à sábado
  Terça: completo
  Outros dias: incremental
Alguns dados
Tamanho total dos ZEO Data files: ~8.3GB
Número de Plone Sites: 24
Sites mais acessados (março):
  PGR: 12.789.307 hits (972.309 páginas)
  Intranet: 8.865.709 hits (598.890 páginas)
  Notícias: 2.415.813 hits (411.642 páginas)
  PFDC: 1.167.363 hits (100.276 páginas)
Estrutura Atual

                  Squid 2.6STABLE18
                     ZOPE/Plone




                            ZEO
                   Apache 2.0 (mod_proxy)
                  ZOPE/Plone (para edição)




                  ZEO Data Files
Recursos
Servidor IBM xSeries 346 (Intel Xeon 3.6 GHz /
6 GB)
Servidor Dell Power Edge 2950 (Intel Xeon 3
GHz / 16 GB)
Servidor IBM System x3400 (Intel Xeon 1.8
GHz / 6 GB)
Ambiente SAN: Storage IBM DS4500
Exemplo: Portal da PGR
Exemplo: Portal de notícias
Futuros trabalhos
Web Caches:
  Avaliar round-robin x SLB
  Avaliar o varnish
Sistemas de arquivos:
  Avaliar novas versões do OCFS2 (em andamento)
    Atualmente é usado o ext3
  Compartilhar /usr/webinfra entre servidores Zope
Futuros trabalhos
Alta disponibilidade:
  Certificação da alta disponibilidade via Storage
  DS4500 com RDAC (em andamento)
  Redistribuir alguns sites
  Reativar o Novell Cluster Services (NCS)
  Disponibilização de infra-estrutura para outras
  Procuradorias
Performance:
  Contínua avaliação da carga nos servidores
Obrigado !

        Dúvidas ?

http://www.pgr.mpf.gov.br

         Lucas Brasilino
    <lucas.brasilino@gmail.com>

     Mauro Cesar Sobrinho
     <mauro@pgr.mpf.gov.br>

Más contenido relacionado

La actualidad más candente

Instalação e configuração servidor dns - ubuntu server
Instalação e configuração servidor dns - ubuntu serverInstalação e configuração servidor dns - ubuntu server
Instalação e configuração servidor dns - ubuntu serverAparicio Junior
 
Projetos de rede sistemas de servidores
Projetos de rede sistemas de servidoresProjetos de rede sistemas de servidores
Projetos de rede sistemas de servidoresAriel Fernando
 
Joomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisJoomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisrafaelberlanda
 
Prova sistemaso redes1-1-red-23032011
Prova sistemaso redes1-1-red-23032011Prova sistemaso redes1-1-red-23032011
Prova sistemaso redes1-1-red-23032011Carlos Melo
 
Prova sistemaso redes1-17092012
Prova sistemaso redes1-17092012Prova sistemaso redes1-17092012
Prova sistemaso redes1-17092012Carlos Melo
 
Utilizando o samba como servidor de domínio primário
Utilizando o samba como servidor de domínio primárioUtilizando o samba como servidor de domínio primário
Utilizando o samba como servidor de domínio primárioCarlos Melo
 
Atividade sistemaso redes1-13122012
Atividade sistemaso redes1-13122012Atividade sistemaso redes1-13122012
Atividade sistemaso redes1-13122012Carlos Melo
 
Prova sistemas-operacionais-23082012
Prova sistemas-operacionais-23082012Prova sistemas-operacionais-23082012
Prova sistemas-operacionais-23082012Carlos Melo
 
Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010Fabrízio Mello
 
Relatório de configuração e instalação do dns no ubuntu 1
Relatório de configuração e instalação do dns no ubuntu 1Relatório de configuração e instalação do dns no ubuntu 1
Relatório de configuração e instalação do dns no ubuntu 1Xavier Billa
 
Servidor DNS- BIND
Servidor DNS- BINDServidor DNS- BIND
Servidor DNS- BINDzbrendo
 
Palestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopPalestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopAlexei Znamensky
 
Configuração dns memorial descritivo
Configuração dns   memorial descritivoConfiguração dns   memorial descritivo
Configuração dns memorial descritivoCarlos Eduardo
 
Atividade sor-sambapfmgpo-24082012
Atividade sor-sambapfmgpo-24082012Atividade sor-sambapfmgpo-24082012
Atividade sor-sambapfmgpo-24082012Carlos Melo
 
Ao infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e GearmanAo infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e GearmanElton Minetto
 
Utilizando o samba como servidor de domínio primário
Utilizando o samba como servidor de domínio primárioUtilizando o samba como servidor de domínio primário
Utilizando o samba como servidor de domínio primárioCarlos Melo
 
Prova sistemaso redes1-06092012
Prova sistemaso redes1-06092012Prova sistemaso redes1-06092012
Prova sistemaso redes1-06092012Carlos Melo
 
Linux - Shell e Comandos Básicos
Linux - Shell e Comandos BásicosLinux - Shell e Comandos Básicos
Linux - Shell e Comandos BásicosFrederico Madeira
 
Guia de configuração de um servidor linux para utilização em uma pequena empresa
Guia de configuração de um servidor linux para utilização em uma pequena empresaGuia de configuração de um servidor linux para utilização em uma pequena empresa
Guia de configuração de um servidor linux para utilização em uma pequena empresaSoftD Abreu
 

La actualidad más candente (20)

Instalação e configuração servidor dns - ubuntu server
Instalação e configuração servidor dns - ubuntu serverInstalação e configuração servidor dns - ubuntu server
Instalação e configuração servidor dns - ubuntu server
 
Projetos de rede sistemas de servidores
Projetos de rede sistemas de servidoresProjetos de rede sistemas de servidores
Projetos de rede sistemas de servidores
 
Joomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisJoomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portais
 
Firebird
FirebirdFirebird
Firebird
 
Prova sistemaso redes1-1-red-23032011
Prova sistemaso redes1-1-red-23032011Prova sistemaso redes1-1-red-23032011
Prova sistemaso redes1-1-red-23032011
 
Prova sistemaso redes1-17092012
Prova sistemaso redes1-17092012Prova sistemaso redes1-17092012
Prova sistemaso redes1-17092012
 
Utilizando o samba como servidor de domínio primário
Utilizando o samba como servidor de domínio primárioUtilizando o samba como servidor de domínio primário
Utilizando o samba como servidor de domínio primário
 
Atividade sistemaso redes1-13122012
Atividade sistemaso redes1-13122012Atividade sistemaso redes1-13122012
Atividade sistemaso redes1-13122012
 
Prova sistemas-operacionais-23082012
Prova sistemas-operacionais-23082012Prova sistemas-operacionais-23082012
Prova sistemas-operacionais-23082012
 
Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010Oficina postgresql avançado_consegi2010
Oficina postgresql avançado_consegi2010
 
Relatório de configuração e instalação do dns no ubuntu 1
Relatório de configuração e instalação do dns no ubuntu 1Relatório de configuração e instalação do dns no ubuntu 1
Relatório de configuração e instalação do dns no ubuntu 1
 
Servidor DNS- BIND
Servidor DNS- BINDServidor DNS- BIND
Servidor DNS- BIND
 
Palestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl WorkshopPalestra DataFlow - II São Paulo Perl Workshop
Palestra DataFlow - II São Paulo Perl Workshop
 
Configuração dns memorial descritivo
Configuração dns   memorial descritivoConfiguração dns   memorial descritivo
Configuração dns memorial descritivo
 
Atividade sor-sambapfmgpo-24082012
Atividade sor-sambapfmgpo-24082012Atividade sor-sambapfmgpo-24082012
Atividade sor-sambapfmgpo-24082012
 
Ao infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e GearmanAo infinito e além com PHP memcached e Gearman
Ao infinito e além com PHP memcached e Gearman
 
Utilizando o samba como servidor de domínio primário
Utilizando o samba como servidor de domínio primárioUtilizando o samba como servidor de domínio primário
Utilizando o samba como servidor de domínio primário
 
Prova sistemaso redes1-06092012
Prova sistemaso redes1-06092012Prova sistemaso redes1-06092012
Prova sistemaso redes1-06092012
 
Linux - Shell e Comandos Básicos
Linux - Shell e Comandos BásicosLinux - Shell e Comandos Básicos
Linux - Shell e Comandos Básicos
 
Guia de configuração de um servidor linux para utilização em uma pequena empresa
Guia de configuração de um servidor linux para utilização em uma pequena empresaGuia de configuração de um servidor linux para utilização em uma pequena empresa
Guia de configuração de um servidor linux para utilização em uma pequena empresa
 

Destacado

20120104 jornal
20120104 jornal20120104 jornal
20120104 jornallena47
 
Manual Corporativo Kbuki
Manual Corporativo KbukiManual Corporativo Kbuki
Manual Corporativo KbukiAlexander
 
¿A qué se dedica un profesor asociado en la Universidad? ¿Qué régimen contrac...
¿A qué se dedica un profesor asociado en la Universidad? ¿Qué régimen contrac...¿A qué se dedica un profesor asociado en la Universidad? ¿Qué régimen contrac...
¿A qué se dedica un profesor asociado en la Universidad? ¿Qué régimen contrac...Universidad Autónoma de Barcelona
 
Certificate of Ing.A.R
Certificate of Ing.A.RCertificate of Ing.A.R
Certificate of Ing.A.RRadwan Mansour
 
¿Qué pensas sobre el amor?
¿Qué pensas sobre el amor? ¿Qué pensas sobre el amor?
¿Qué pensas sobre el amor? guest8571b62
 

Destacado (8)

20120104 jornal
20120104 jornal20120104 jornal
20120104 jornal
 
Manual Corporativo Kbuki
Manual Corporativo KbukiManual Corporativo Kbuki
Manual Corporativo Kbuki
 
¿A qué se dedica un profesor asociado en la Universidad? ¿Qué régimen contrac...
¿A qué se dedica un profesor asociado en la Universidad? ¿Qué régimen contrac...¿A qué se dedica un profesor asociado en la Universidad? ¿Qué régimen contrac...
¿A qué se dedica un profesor asociado en la Universidad? ¿Qué régimen contrac...
 
Certificate of Ing.A.R
Certificate of Ing.A.RCertificate of Ing.A.R
Certificate of Ing.A.R
 
¿Qué pensas sobre el amor?
¿Qué pensas sobre el amor? ¿Qué pensas sobre el amor?
¿Qué pensas sobre el amor?
 
Destaque31
Destaque31  Destaque31
Destaque31
 
Maquines simples
Maquines simplesMaquines simples
Maquines simples
 
Clara
ClaraClara
Clara
 

Similar a Plataforma Zope Plone na PGR

MEO Cloud - Python Lisbon Meetup
MEO Cloud - Python Lisbon MeetupMEO Cloud - Python Lisbon Meetup
MEO Cloud - Python Lisbon MeetupAndré Cruz
 
Treinamento de Performance and tuning
Treinamento de Performance and tuningTreinamento de Performance and tuning
Treinamento de Performance and tuningDell Technologies
 
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMEntregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMRodrigo Zaccara
 
Integração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open sourceIntegração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open sourceTiago Peczenyj
 
Introdução ao OpenSolaris
Introdução ao OpenSolarisIntrodução ao OpenSolaris
Introdução ao OpenSolarisCindy Dalfovo
 
Introdução ao OpenSolaris
Introdução ao OpenSolarisIntrodução ao OpenSolaris
Introdução ao OpenSolarisguest830f1
 
Performance e disponibilidade ‐ Um estudo de caso: website dos Correios
Performance e disponibilidade ‐ Um estudo de caso: website dos CorreiosPerformance e disponibilidade ‐ Um estudo de caso: website dos Correios
Performance e disponibilidade ‐ Um estudo de caso: website dos CorreiosAlex Hübner
 
Aumente sua produtividade com Spring Boot
Aumente sua produtividade com Spring BootAumente sua produtividade com Spring Boot
Aumente sua produtividade com Spring BootFernando Boaglio
 
2011 - GUOB Tech Day / OTN Tour LAD - Extended Clusters
2011 - GUOB Tech Day / OTN Tour LAD - Extended Clusters2011 - GUOB Tech Day / OTN Tour LAD - Extended Clusters
2011 - GUOB Tech Day / OTN Tour LAD - Extended ClustersMarcus Vinicius Miguel Pedro
 
ZEO/RelStorage/PostgreSQL
ZEO/RelStorage/PostgreSQLZEO/RelStorage/PostgreSQL
ZEO/RelStorage/PostgreSQLgsroma
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...
Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...
Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...Lucas A. Romão
 
Web Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+ApacheWeb Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+ApacheDell Technologies
 
Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Getup Cloud
 

Similar a Plataforma Zope Plone na PGR (20)

MEO Cloud - Python Lisbon Meetup
MEO Cloud - Python Lisbon MeetupMEO Cloud - Python Lisbon Meetup
MEO Cloud - Python Lisbon Meetup
 
Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudouCakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
 
Docker tdc 2014
Docker   tdc 2014Docker   tdc 2014
Docker tdc 2014
 
Slides da palestra no Flex mania 2011
Slides da palestra no Flex mania 2011Slides da palestra no Flex mania 2011
Slides da palestra no Flex mania 2011
 
Treinamento de Performance and tuning
Treinamento de Performance and tuningTreinamento de Performance and tuning
Treinamento de Performance and tuning
 
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMEntregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
 
Automação de Data Center
Automação de Data CenterAutomação de Data Center
Automação de Data Center
 
Integração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open sourceIntegração de Sistemas usando tecnologias open source
Integração de Sistemas usando tecnologias open source
 
Introdução ao OpenSolaris
Introdução ao OpenSolarisIntrodução ao OpenSolaris
Introdução ao OpenSolaris
 
Introdução ao OpenSolaris
Introdução ao OpenSolarisIntrodução ao OpenSolaris
Introdução ao OpenSolaris
 
Zabbix 3 0-cinfotec
Zabbix 3 0-cinfotecZabbix 3 0-cinfotec
Zabbix 3 0-cinfotec
 
Performance e disponibilidade ‐ Um estudo de caso: website dos Correios
Performance e disponibilidade ‐ Um estudo de caso: website dos CorreiosPerformance e disponibilidade ‐ Um estudo de caso: website dos Correios
Performance e disponibilidade ‐ Um estudo de caso: website dos Correios
 
De 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuáriosDe 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuários
 
Aumente sua produtividade com Spring Boot
Aumente sua produtividade com Spring BootAumente sua produtividade com Spring Boot
Aumente sua produtividade com Spring Boot
 
2011 - GUOB Tech Day / OTN Tour LAD - Extended Clusters
2011 - GUOB Tech Day / OTN Tour LAD - Extended Clusters2011 - GUOB Tech Day / OTN Tour LAD - Extended Clusters
2011 - GUOB Tech Day / OTN Tour LAD - Extended Clusters
 
ZEO/RelStorage/PostgreSQL
ZEO/RelStorage/PostgreSQLZEO/RelStorage/PostgreSQL
ZEO/RelStorage/PostgreSQL
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...
Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...
Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...
 
Web Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+ApacheWeb Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+Apache
 
Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014Semana Acadêmica ICET - Feevale - 12/04/2014
Semana Acadêmica ICET - Feevale - 12/04/2014
 

Plataforma Zope Plone na PGR

  • 1. Plataforma Zope/Plone na Procuradoria  Geral da República: desafios e soluções Lucas Brasilino <lucas.brasilino@gmail.com> Mauro Cesar Sobrinho <mauro@pgr.mpf.gov.br>
  • 2. Agenda Cenário anterior Precisando e decidindo migrar... Cenário em 2005 e 2006 Desafios e dificuldades Reestruturação Estrutura atual e exemplos Trabalhos futuros
  • 3. Cenário Anterior Inicialmente, atualizações de páginas WEB feitas por técnicos de suporte (1995 a 2002); Quem cuidava de infra-estrutura, também atualizava as páginas... Criação de Grupo WEB ligado a área de desenvolvimento (2002 a 2005); Separação de infra-estrutura e gestão de conteúdo Transferência do Grupo WEB para a área de Comunicação (2005 até hoje);
  • 4. Precisando mudar... Fatos: Área de tecnologia não conhece o negócio, mas domina as ferramentas de publicação; Área de comunicação conhece o negócio, mas não domina as ferramentas de publicação. Objetivo: Tornar simples a rotina de publicação Web ! Solução: Adotar uma ferramenta de CMS !!
  • 5. Decidindo migrar... Diretrizes para um portal do MPF Desenvolver um canal de comunicação para atender demandas da sociedade; Fortalecer uma identidade institucional para o MPF; Otimizar a navegação e localização de conteúdos; Unificar informações sobre a instituição; Atender critérios de acessibilidade, navegabilidade e homogeneidade.
  • 6. Decidindo migrar... As secretarias de Comunicação Social e de Tecnologia da Informação da PGR realizaram uma série de reuniões com objetivo de estabelecer uma parceria para gerenciar o Portal do MPF. Área de atuação: SECOM ficou responsável pela identidade visual e gerenciamento de conteúdo STI ficou responsável pela infra-estrutura tecnológica
  • 7. Decidindo migrar... Avaliação das ferramentas disponíveis no mercado apontou para o Plone/Zope Custo / benefício, segurança e maturidade do produto; Suporte a múltiplos idiomas; Modular, expandindo suas funções; Software Livre; Integração a Diretório (LDAP); Base instalada, inclusive no Brasil.
  • 8. Equipe de profissionais SECOM: 5 profissionais dedicados exclusivamente para cuidar das questões web. Compreendendo: 1 desenvolvedor 2 webdesigners 1 gestor de conteúdo 1 estagiário STI: 3 profissionais não dedicados que atendem às demandas existentes, compreendendo: 1 desenvolvedor 2 suporte à infra-estrutura
  • 9. Cenário em 2005 Apache 2.0 (mod_proxy) ZOPE/Plone Data.fs
  • 10. Cenário em 2006 DNS round-robin NCS Apache 2.0 (mod_proxy) ZOPE/Plone ZEO Data.fs OCFS2
  • 11. Cenário em 2006 DNS: resolução para 2 IP's: Round-robin Zope 2.9.3 / Plone 2.5: Instalado em /usr/local Usando python 2.4.3 (/usr/local/bin) ZEO com um único Data.fs
  • 12. Cenário em 2006: Desafios 'Aleatoriamente' o processo do Zope ia a 100% de utilização de CPU Eventualmente descobria-se que algum objeto ao ser acessado fazia o Zope 'perder-se' (algo como um loop infinito ou deadlock). Hoje sabemos que este problema é categorizado como 'Spinning Zope'. Frequentes travamentos causados pelo OCFS2
  • 13. Cenário em 2006: Desafios Backup não realizado da forma indicada: cp Baixa performance
  • 14. Dificuldades Encontrar uma documentação concisa e bem organizada. Wiki: bastante esparso The Zope book: boa documentação, porém não tão 'user friendly'. Mea culpa: talvez devesse ter assinado algumas listas de discussões.
  • 15. Reestruturação Reorganização e reinstalação: A partir dos fontes e separadamente Códigos binários ou interpretados: Usando como PREFIX (top dir) /usr/webinfra Python 2.4.4: ./configure --with-prefix=/usr/webinfra Imaging (PIL), python-ldap, MySQL-python Zope 2.9.8: ./configure --with-prefix=/usr/webinfra --with-python=/usr/webinfra/bin/python
  • 16. Reestruturação Reorganização e reinstalação: Plone 2.5.3-final Dados (Data.fs): /usr/webdata/var
  • 17. Recuperação do Data.fs O tamanho do Data.fs estava em torno de ~5 GB. A Wikipage ZODB/FileStorageBackup documenta utilitários como: repozo.py fstest.py fsrecover.py (em $PREFIX/lib/python/ZODB/) fstest.py apontou inconsistências.
  • 18. Recuperação do Data.fs fsrecover.py recuperou e packeou. O Data.fs foi reduzido a ~3.5 Gb 'Spinning Zope' solucionado. Melhora (leve) na performance.
  • 19. Dividir para Conquistar Servidor ZEO em outra máquina Desinstalação do OCFS2 Perda da redundância Ganho em estabilidade
  • 20. Dividir para Conquistar Apache 2.0 (mod_proxy) NCS ZOPE/Plone ZEO ZEO Data Files
  • 21. Dividir para Conquistar Divisão dos Plone sites em vários Data.fs: Conselhos Informa Intranets Memorial Outros (PGR, PGE, Câmaras)
  • 22. Uso de memória Aumento do nº de objetos em memória <zodb_db main> mount-point / cache-size 20000 <zeoclient>....</zeoclient> </zodb_db> <zodb_db memorial> mount-point /memorialfs cache-size 10000 <zeoclient>....</zeoclient> </zodb_db> <zodb_db intranets> mount-point /intranets cache-size 10000 <zeoclient>....</zeoclient> </zodb_db>
  • 23. Uso de memória Ocupa em média 1.6Gb de RAM. Empiricamente não ultrapassa 2Gb Erro 'out of memory' # ulimit -v unlimited Aumento considerável de performance
  • 24. Web Caches Um dos métodos mais eficientes no aumento de performance de aplicações Web HTTP accelerator Retém um objeto web durante um dado tempo Minimiza requisições ao Zope Mecanismos básicos Freshness, Validation, Invalidation
  • 25. Web Caches 1º experimento: Apache mod_expires Adiciona e/ou substitui o HTTP Header Expires Define quando o objeto torna-se 'velho' Ignora mudanças no Plone Efeito colateral: o usuário 'vê' um objeto antigo
  • 26. Web Caches 2º experimento: Apache mod_wodan Ignora qualquer header e define uma 'cacheabilidade' de todos os objetos de uma página Versão estável para Apache 1.3 Versão RC para Apache 2.x Projeto aparentemente abandonado Resultados similares ao anterior
  • 27. Web Caches 3º experimento: Apache mod_cache A princípio segue os headers que definem a 'cacheabilidade' de um objeto Implementação problemática no Apache 2.0 Média integração com o Plone (via CacheFu) Se for definido um tempo de expiração pequeno, os resultados são razoáveis Ainda gera muitas requisições ao Zope
  • 28. Web Caches 4º experimento: Proxy/Cache Squid Adaptado para funcionar como um HTTP accelerator Segue fielmente o definido nos HTTP headers Performático Ótima integração com o Plone (via CacheFu) Melhor resultado atingido
  • 29. Política de backup e packing Implementados com scripts shell usando ferramentas ZEO e gerando logs Packing realizado todo sábado Backup's de terça à sábado Terça: completo Outros dias: incremental
  • 30. Alguns dados Tamanho total dos ZEO Data files: ~8.3GB Número de Plone Sites: 24 Sites mais acessados (março): PGR: 12.789.307 hits (972.309 páginas) Intranet: 8.865.709 hits (598.890 páginas) Notícias: 2.415.813 hits (411.642 páginas) PFDC: 1.167.363 hits (100.276 páginas)
  • 31. Estrutura Atual Squid 2.6STABLE18 ZOPE/Plone ZEO Apache 2.0 (mod_proxy) ZOPE/Plone (para edição) ZEO Data Files
  • 32. Recursos Servidor IBM xSeries 346 (Intel Xeon 3.6 GHz / 6 GB) Servidor Dell Power Edge 2950 (Intel Xeon 3 GHz / 16 GB) Servidor IBM System x3400 (Intel Xeon 1.8 GHz / 6 GB) Ambiente SAN: Storage IBM DS4500
  • 35. Futuros trabalhos Web Caches: Avaliar round-robin x SLB Avaliar o varnish Sistemas de arquivos: Avaliar novas versões do OCFS2 (em andamento) Atualmente é usado o ext3 Compartilhar /usr/webinfra entre servidores Zope
  • 36. Futuros trabalhos Alta disponibilidade: Certificação da alta disponibilidade via Storage DS4500 com RDAC (em andamento) Redistribuir alguns sites Reativar o Novell Cluster Services (NCS) Disponibilização de infra-estrutura para outras Procuradorias Performance: Contínua avaliação da carga nos servidores
  • 37. Obrigado ! Dúvidas ? http://www.pgr.mpf.gov.br Lucas Brasilino <lucas.brasilino@gmail.com> Mauro Cesar Sobrinho <mauro@pgr.mpf.gov.br>