O documento descreve a migração da Procuradoria Geral da República para a plataforma Zope/Plone, discutindo os desafios enfrentados, como problemas de desempenho e estabilidade, e as soluções implementadas, como dividir os sites em vários bancos de dados e usar caches para melhorar o desempenho.
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
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
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
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.
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
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>