Python na nuvem da Locaweb.
Autor: Ramiro B. da Luz | Publicado: 2014-10-16T20:36:00-07:00


Plataforma Jelastic Locaweb
Jelastic é uma plataforma de nuvem para deploy de aplicações. O foco inicial era Java e PHP, mas atualmente suporta outras tecnologias. À convite da Locaweb experimentei o suporte à tecnologia Python.Para começar dei uma rápida olhada na documentação[1] e então acessei a URL fornecida para testes[2]. Forneci meu endereço de e-mail no registro para um Trial de 14 dias.Recebi então um e-mail com um link para acesso ao painel de controle[3]. Ao fornecer as credenciais é apresentada uma janela com um assistente e a opção de simplesmente ignorar o assistente. Eu escolhi seguir as orientações do assistente.Fui direto clicar no botão criar ambiente, uma das abas já permite escolher a tecnologia Python. Já é apresentada uma estimativa de custo mensal. Na parte superior da janela é possível optar por um assistente Basico ou Avançado, como sou metido cliquei em Avançado. O assistente Avançado permite escolher mais Cloudlets reservados. Na versão Trial há um limite de 8 Cloudlets. Quando tentei passar de 8 apareceu uma mensagem permitindo o upgrade, então resolvi ativar o cupom oferecido para testes. Cliquei no link para atualizar a conta, abriu uma nova página para cadastro, escolhi o valor de acordo com o cupom, o valor inicial é de R$ 20,00 e o final da barra é de R$ 500,00. Caso você tenha um cupom de R$ 50,00 já pode mover o marcador até R$ 50,00, em seguida clicar em cadastre-se. Caso você já tenha um cadastro como cliente da Locaweb pode fornecer seu nome de usuário. Após preencher o cadastro na opção de pagamento existe um campo para preencher com o cupom de desconto. Ao final é necessário informar uma forma de pagamento. Como estou testando o serviço decidi escolher a opção de boleto bancário. Após finalizar é exibida uma mensagem de confirmação e a informação de que "A instalação será feita em até 1 hora.". Então vamos ao intervalo. :)Apesar de ter usado o cupom de desconto não pude escolher mais do 8 cloudlets. Defini 8 cloudlets para servidor de aplicação Apache2.2 e Python 3.4. Defini 8 cloudlets para o banco de dados PostgreSQL 9. Estão disponíveis as versões 2.7, 3.3 e 3.4 da linguagem Python. São oferecidos outros bancos, MariaDB 5.5, MariaDB 10.0, MySQL, PostgreSQL 8.4 ou PostgreSQL 9.3. É possível também usar o Memcached e bancos não relacionais, como Mongo DB 2.6, CouchDB 1.5, Redis 2.6, entre outros. O custo da configuração que eu fiz ficou em R$ 140,00. Esse custo é o custo máximo, ou seja, se a aplicação ficar rodando no limite 24 horas por dia durante o mês todo, isso dificilmente irá acontecer e se acontecer é porque a aplicação foi um sucesso maior do que o esperado. Cada cloudlet equivale a 128M de memória e 200 MHz de CPU.Ao ser finalizada a inicialização do ambiente são enviados e-mails com instruções para o gerenciamentos dos serviços específicos. O e-mail do PostgreSQL veio com a descrição errada no link, "... para configurar o MySQL em nossa documentação.", mas a URL estava apontando corretamente para a documentação do PostgreSQL, o pessoal da Locaweb se comprometeu a corrigir esse detalhe.Para experimentar eu implantei a aplicação padrão, HelloWorld.zip, que possui um arquivo index.py, index.php, index.rb, index.jsp. O assistente então indica o botão para abrir a aplicação, ao abrir a aplicação acessamos a página inicial em inglês. A página é bem bacana e fornece links adicionais de documentação, nesse caso para utilização da Tecnologia Python na nuvem Jelastic.Navegando pela documentação me deparei com algo que achei legal. Nas configurações tem uma seção de monitoramento. Ali pode-se configurar alertas enviados em caso de aumento ou diminuição do uso de recursos, triggers para alterar a quantidade de nós dependendo do consumo de memória e cpu e acessar os logs desses eventos.Em outra aba chamada marketplace existem muitos pacotes de aplicação pré-configuradas, não encontrei nenhuma de Python, esperava ao menos encontrar Django, Plone e web2py. Entretanto poderiam existir muitos outros pacotes prontos. Comentei isso com o pessoal e eles pediram algumas sugestões, eu enviei algumas e creio que na medida do possível eles devem fornecer alguns pacotes prontos. Eles me explicaram que os pacotes não são para frameworks, são para produtos e por isso sugeri alguns produtos que eu creio que poderiam ser úteis para eles e para os clientes da Locaweb. Se você for um usuário pagante poderá ver um menu para tarefas de controle financeiro.Para começar com algo mais sério decidi experimentar o DjangoCMS. Nos links da documentação do Jelastic e do DjangoCMS, não encontrei referências claras de como fazer o deploy, inclusive um dos links da documentação estava quebrado. Mas, por curiosidade, digitei no buscador as palavras "deploy DjangoCMS jelastic" e fui direto ao resultado de um post no blog da jelastic[4]. O post do blog é bem escrito é fui seguido as orientações, só que eu queria usar o banco PostgreSQL, então antes de instalar o CMS fui na interface de administração do postgres e criei um usuário e um banco de dados de propriedade desse usuário para usar na conexão da aplicação. Seguindo as instruções forneci os parâmetros necessários, mas mudei o parâmetro banco de dados, para usar PostgreSQL. O instalador tentou instalar o driver de banco para o PostgreSQL, psycopg2 e ocorreu um erro, faltava uma biblioteca, pg_config. Essa biblioteca está disponível nos pacotes postgres-devel, mas como não tenho acesso de root, tentei instalar manualmente no diretório do usuário. Fiz o download dos fontes do PostgreSQL, compilei e instalei no diretório do usuário. O pessoal da Locaweb me passou um contato para suporte, mas como vocês sabem, sou meio metido. Ao final eu ainda precisei mexer no arquivo .profile para configurar a variável de ambiente PATH para incluir o caminho dos binários do PostgreSQL e a variável LD_LIBRARY_PATH para incluir o caminho das bibliotecas do PostgreSQL. Então as instruções do tutorial funcionaram direitinho.Ainda gostaria de experimentar o deploy de uma aplicação desenvolvida pelo Interlegis[5], o Portal Modelo[6] que é baseado num dos melhores CMS que existem, o Plone[7], mas vai depender de tempo e disposição :). De acordo com o que eu experimentei, acredito que a plataforma é bacana para usar, ao compilar o PostgreSQL o processamento deu um pico e mais cloudlets foram ativados automaticamente, já que eu havia reservado 8. Além disso recebi um email informando que precisava de mais CPU para minha aplicação, jóia. A interface é amigável, pude ir acompanhando os logs do Apache por exemplo, reiniciar o nó do Apache e parar o ambiente todo, entre outras coisas. O custo total dos dois dias utilizados foram de pouco menos de R$ 6,00. Os pontos que ainda precisam melhorar, seriam a instalação das bibliotecas dos bancos de dados, não testei os outros, mas quanto ao PostgreSQL seria o postgresql-client e postgresql-devel ao menos.

Outro ponto que poderia colaborar com uma adoção por por parte dos profissionais python é a preparação de pacotes de aplicação pré-configuradas no marketplace. De um modo geral gostei da experiência e a usabilidade é boa, ter acesso shell por exemplo foi essencial para testar o que eu queria. Acho que é uma boa opção a ser avaliada pelos profissionais de modo geral e mais uma alternativa de nuvem para quem trabalha com Python.[1] - http://docs.jelastic.com/python-dashboard-guide[2] - http://www.locaweb.com.br/jelastic[3] - https://app.jelasticlw.com.br/[4] - http://blog.jelastic.com/2014/08/12/python-hosting-jelastic/[5] - http://www.interlegis.leg.br/[6] - https://github.com/interlegis/portalmodelo[7] - http://www.plone.org