Desafios práticos do Plone Interligação ao Oracle [email protected] [email protected] COMEÇANDO PELO FIM... OS AGRADECIMENTOS COMUNIDADE PARTICIPANTES DO EVENTO ORGANIZADORES DO EVENTO CLIENTES PARCEIROS TÉCNICOS 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 À BASE DE DADOS • Acesso via ZOPE – Nativo para: ZODB • Plugins “nativos”: Gadfly • Plugins “livres”: PostGree, SQLlite, MySQL... • Bases proprietárias: Não tem conexão “out-ofthe-box”. 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 BASES PROPRIETÁ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 CONTEXTO DO PLONE NO STM Planejamento Estratégico http://www.planejamentoestrategico.stm.jus.br • 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. REORGANIZANDO A CASA 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). INTEGRAÇÃO AO ORACLE • 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 PONTOS CHAVE PARA O SUCESSO DO PROJETO • 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 PROCEDIMENTO INSTALANDO O CLIENT DO ORACLE NO LINUX 1. Download - instantClient para Linux Para 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 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_PAT H 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) ) ) 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 Name Null? Type ID NOT NULL NUMBER(38) TITLE VARCHAR2(50) BODY VARCHAR2(4000) CREATED DATE MODIFIED DATE INSTALANDO O PLUGIN 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 3. Execute o buildout ./bin/buildout -v *************** PICKED VERSIONS **************** [versions] Products.SQLAlchemyDA = 0.5.1 SQLAlchemy = 0.7.7 zope.sqlalchemy = 0.7.1 z3c.sqlalchemy = 1.4.0 cx_Oracle = 5.1.1 *************** /PICKED VERSIONS *************** 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: [versions] ... Products.SQLAlchemyDA = 0.5.1 SQLAlchemy = 0.7.7 zope.sqlalchemy = 0.7.1 z3c.sqlalchemy = 1.4.0 cx_Oracle = 5.1.1 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.com export 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 PLONE – DOIS MUNDOS 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 Karen M. Shegda; Mick MacComascaigh PLONE E OUTROS CMSs IDEALWARE: comparing_open_source_cms EQUIPES • 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. PEQUENA SUGESTÃO... MODELOS AMPLAMENTE ADOTADOS QUE DERAM CERTO • Outras comunidades também passaram por problemas similares • PMI – PMP • ITIL – Certificação ITIL • BPMN – CBPP SEGUINDO OS PASSOS DE SUCESSO DE OUTRAS COMUNIDADES • 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 Obrigado! Herson Rodrigues Agradecimento especial ao responsável técnico do projeto STM Consultoria que respira inovação