desafios práticos do plone interligação ao oracle...
TRANSCRIPT
Desafios práticos do Plone Interligação ao Oracle
[email protected]@produtivati.com.br
COMEÇANDO PELO FIM... OS AGRADECIMENTOS
COMUNIDADE
ORGANIZADORES DO EVENTO
CLIENTES
PARCEIROS
TÉCNICOS
PARTICIPANTES DO EVENTO
QUEM SOMOS?
HISTÓRICO
• 1998 - Fundação• Consultoria para
novas tecnologias• 2001 – PPM e EPM• 2003 – Portais e BI• 2005 – ALM• Case nacional de
FSW• 2009 – EAD• 2011 – CPLS• 2012 – Segurança
biométrica e telemetria veicular
ESTRUTURA e CERTIFICAÇÕES
• Centro de treinamento
• Nuvem privada• Dezenas de técnicos
especializados• Mais de 70
certificações e especializações técnicas• ITIL• PMP• Especialistas e
Mestres • A+• Microsoft• CA
TECNOLOGIAS E PARCEIROS
• Parceiros• Urban Turtle• CrossMatch• Microsoft
• Tecnologias e Produtos• Plone• CA Clarity• Project• TFS• Moodle
• PHP• Java• .NET
SERVIÇOS
• Integração• Consultoria• EPM e PPM• Portais• BI• ALM
• Suporte• Remoto e
presencial• EAD• Elaboração e
transcrição de treinamentos
• Treinamentos• In Company• Sob medida
• Alocação de especialistas
ACESSANDO DADOS A PARTIR DE UM PORTAL
NATIVO OU PRÉ-CONFIGURADO OUTROS MÉTODOS
• Acesso via ZOPE– Nativo para: ZODB
• Plugins “nativos”: Gadfly• Plugins “livres”: PostGree, SQLlite, MySQL...• Bases proprietárias: Não tem conexão “out-of-
the-box”.
ACESSO À BASE DE DADOS
PROBLEMAS PARA CONECTAR COM BD PROPRIETÁRIO
• Poucos conectores Livres e Gratuitos
• Qualidade e Confiabilidade = $$$$
• ZMySQLDA – MySQL Database Adapter for Zope• Psycopg2 – PostgreSQL database adapter for the
Python• RelStorage – Solução que integra Mysql, PostgreSQL
(via psycopg2), MySQL (via MySQLdb) e Oracle 10g, 11g (via cx_Oracle)
OPÇÕES PARA CONEXÃO COM BASESPROPRIETÁRIAS
• eGenix mxODBC Zope DA - ODBC Database Adapter for Zope and Plone – Preço unitário a partir de R$ 277.35, caindo de
acordo com a quantidade de usuários
• Pagar pela conexão aumenta o TCO – Total Cost Ownership de uma solução, podendo inviabilizar a tecnologia.
CASO DE USO DE UMA CONEXÃO DE UM PORTAL PLONE COM ORACLE
CENÁRIO
• PLONE 4.2
• Banco de Dados: Oracle 11g
– Bases: 10– Sistemas: 54 – Tabelas: 260 + 2.000 acessos simultâneos
CLIENTE
• STM - Superior Tribunal Militar
– É o órgão da Justiça Militar do Brasil, composto por 15 Ministros.
• O Que faz?
– É o órgão especializado a aplicação da lei a militares federais - Marinha, Exército e Aeronáutica, julgando apenas e tão somente os crimes militares definidos em lei.
• Implantação do Plone
– Em 2009 foi implantado o Plone para dinamizar e facilitar a gerência de conteúdo do STM
http://www.planejamentoestrategico.stm.jus.br
CONTEXTO DO PLONE NO STM
Planejamento Estratégico
• O Planejamento Estratégico foi a consolidação do Plone dentro do STM.
• A estrutura da informação, facilidade para o acompanhamento de processos e evoluções no âmbito dos servidores e da organização pode-se perceber o potencial que a ferramenta poderia trazer também para o portal e a intranet do STM.
• Destacou-se através da facilidade no gerenciamento das informações. Durante o planejamento estratégico ficou mais fácil encontrar notícias constantemente atualizadas, assim como imagens de todos os eventos das auditorias militares de todo o Brasil, assim como acesso a áudio e vídeo.
COMITÊ GESTOR • Foi criado graças ao Plone um comitê gestor, retirando a
responsabilidade da equipe de informática sobre a gerência de conteúdo, onde os usuários da área de comunicação foram treinados e passaram a alimentar a ferramenta desafogando a equipe de informática.
RE-ORGANIZAÇÃO DOS PORTAIS
• Após o planejamento, foi iniciado a reformulação dos portais juntamente com o comitê gestor do STM, o projeto esta caminhando para a segunda fase, onde todos os iframes estão sendo substituídos por page templates (integrado a base Oracle).
REORGANIZANDO A CASA
• Uma das maiores surpresas das equipes técnicas foi constatar a rápida integração do Plone ao Banco de Dados Oracle.– Há uma percepção de isolamento entre ferramentas livres e proprietárias. – Esta integração trouxe facilmente novos adeptos ao Plone, ao portal e ao
projeto.– Os projetos que trabalham com apenas uma tecnologia, sem integrações,
estão limitados em sua abrangência.– Integrar ou não crescer!
• Um Pouco Sobre o processo de Integração ao Oracle
• Para a integração com o Oracle utilizamos :Products.SQLAlchemy cx_Oracle
INTEGRAÇÃO AO ORACLE
• Alinhamento técnico
• Capacitação e nivelamento do time envolvido
• Uso de melhores práticas para configuração do ambiente
• Correta análise de requisitos
PONTOS CHAVE PARA O SUCESSO DO PROJETO
INSTALANDO O CLIENT DO ORACLE NO LINUX
1. Download - instantClient para LinuxPara realizar o download no site da oracle é
necessário efetuar um cadastro gratuito.
http://www.oracle.com/technetwork/database/features/instant-client/index- 097480.html
PROCEDIMENTO
DOWNLOAD
PACOTES
2. Os pacotes necessários para instalação do InstanteClient são:
• Instant Client Package - Basic: All files required to run OCI, OCCI, and JDBC-OCI applications
• Instant Client Package - JDBC Supplement: Additional support for XA, Internationalization, and RowSet operations under JDBC
• Instant Client Package - SQL*Plus: Additional libraries and executable for running SQL*Plus with Instant Client
• Instant Client Package - SDK: Additional header files and an example makefile for developing Oracle applications with Instant Client
• Instant Client Package - ODBC: Additional libraries for enabling ODBC applications
3. Crie o diretório /opt/oracle
ARQUIVOS
4. Após o Download dos arquivos, descompacte-os no diretório /opt/oracle
• unzip – instantclient-basic-linux.x64-11.2.0.3.0.zip– instantclient-odbc-linux.x64-11.2.0.3.0.zip– unzip instantclient-jdbc-linux.x64-11.2.0.3.0.zip– unzip instantclient-sdk-linux.x64-11.2.0.3.0.zip– unzip instantclient-sqlplus-linux.x64-11.2.0.3.0.zip
5. Após a descompactação será necessário criar um link simbólico da lib principal, isto fará posteriormente com que o python compile o plugin de conxão ao Oracle.
• ln -s libclntsh.so.11.1 libclntsh.so
VARIÁVEIS DE AMBIENTE
6. Será necessário exportar algumas variáveis de ambiente• export
– ORACLE_HOME=/opt/oracle/instantclient_11_2– TNS_ADMIN=$ORACLE_HOME/network/admin– NLS_LANG="American_America.UTF8“– LD_LIBRARY_PATH==/opt/oracle/
instantclient_11_2:$PATH: $ORACLE_HOME:$ORACLE_HOME/lib
– PATH=$ORACLE_HOME/bin:$PATH:$LD_LIBRARY_PATH
TNSNAMES.ORA
7. Crie o arquivo TNSNAMES.ORA - responsável pelas configurações de conexão ao Oracle no diretório:/opt/oracle/instantclient_11_2/admin
TNSNAMES.ORA (conteúdo)
DESENV.SEUSITE.COM =(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = desenv.seusite.com)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = svc01) ))
PROD.SEUSITE.COM =(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = prod.seusite.com)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = svc02) ))
Name Null? Type
ID NOT NULL NUMBER(38)
TITLE VARCHAR2(50)
BODY VARCHAR2(4000)
CREATED DATE
MODIFIED DATE
TESTANDO
8. Teste a conexão ao oracle utilizando o componente sqlplus: • $ ./sqlplus [email protected] 9.Se tudo ocorrer bem ao executar uma query de teste teremos o seguinte • SQL> desc posts
1. Entre no diretório onde esta instalado o Plone
cd /dir-da-instancia/zeoserver
2. Altere o arquivo buildout.cfg adicionando o plugin a diretiva Eggs:
eggs = ... Products.SQLAlchemyDA
INSTALANDO O PLUGIN
*************** PICKED VERSIONS ****************[versions]Products.SQLAlchemyDA = 0.5.1SQLAlchemy = 0.7.7zope.sqlalchemy = 0.7.1z3c.sqlalchemy = 1.4.0cx_Oracle = 5.1.1*************** /PICKED VERSIONS ***************
3. Execute o buildout
./bin/buildout -v
[versions]...Products.SQLAlchemyDA = 0.5.1SQLAlchemy = 0.7.7zope.sqlalchemy = 0.7.1z3c.sqlalchemy = 1.4.0cx_Oracle = 5.1.1
4. O buildout irá retornar as versões dos componentes instalados, no final do arquivo buildout.cfg adicione as linhas de retorno na diretiva [version] com as respectivas versões como no exemplo abaixo:
CONTORNOS COMUNS
5. Caso ocorra erro ao baixar os pacotes via buildout, tente setar as variáveis do proxy de rede caso exista
export http_proxy=proxy.seusite.comexport http_proxy=proxy.seusite.com
6. Caso ocorra o erro no buildout com o cx_oracle, vá no diretorio do python• e instala-lo via easy_install.•
cd /usr/local/Plone/Python2.6/bin• easy_install –U cx-oracle
CONTORNOS COMUNS
7. Caso continue dando erro tente fazer o download direto do pacote http://• pypi.python.org/simple/cx_Oracle/ descompacte na pasta
do python entre na pasta onde consta o arquivo setup.py e rode o comando.
../python setup.py install
8. Se tudo ocorrer bem ao subir a instância do plone como no exemplo abaixo.
Reinicie a instância.
ZMI
1. Entre no Plone Site vá ao menu superior direito e adicione SQLAlchemyDA
CONFIGURAÇÃO DA CONEXÃO
2. Adicione as configurações de conexão
TESTE DA CONEXÃO
3. Faça o teste de consulta na base de dados
OUTROS DESAFIOS PARA O SUCESSO DAS SOLUÇÕES COM PLONE
Karen M. Shegda; Mick MacComascaigh
Benefit Rating: Moderate
Market Penetration: 5% to 20% of target audience
Maturity: Adolescent
Sample Vendors: Alfresco; Bricolage; Drupal; eZ Systems; KnowledgeTree; Magnolia; Nuxeo;
OpenCms; Plone Foundation; Squiz; Typo3; Xaray
PLONE – DOIS MUNDOS
PLONE E OUTROS CMSs
IDEALWARE: comparing_open_source_cms
• Forte dependência de mão-de-obra especializada
• COMO IDENTIFICAR PROFISSIONAIS CAPACITADOS?
• Não há um acessível, amplamente divulgado e crível programa de formação e avaliação de profissionais em PLONE.
EQUIPES
PEQUENA SUGESTÃO...
• Outras comunidades também passaram por problemas similares
• PMI – PMP• ITIL – Certificação ITIL• BPMN – CBPP
MODELOS AMPLAMENTE ADOTADOS QUE DERAM CERTO
• Mobilização da comunidade (comitê?) para a criação de um sistema de acreditação com dois eixos:– Centros de formação
• Treinamentos certificados/validados
– Certificações• 2 certificações – Infra e desenvolvedor
SEGUINDO OS PASSOS DE SUCESSO DE OUTRAS COMUNIDADES
Obrigado!
Agradecimento especial ao responsável técnico do projeto STM
Herson Rodrigues
Consultoria que respira inovação