Screencast: sua App no Cloud com OpenShift

O cloud vem se espalhando pelo mercado de TI e em especial entre os desenvolvedores de software. Heroku, Cloud Foundry, Microsoft Azure, Google App Engine, entre outros serviços de cloud no modelo PaaS, (Platform as a Service), popularizaram-se muito nos últimos tempos.

Para disponibilizar serviços de cloud, é necessário que haja uma infraestrutura de servidores bastante robusta e uma ambientação sofisticada. Aproveitando a experiência no ramo, a Red Hat lançou, em maio de 2011, durante o Red Hat Summit, seu serviço de PaaS: o OpenShift.

O OpenShift possui duas versões – OpenShift Express, opção simples e rápida para hospedar aplicações Ruby, Python, Perl ou Java do zero; e OpenShift Flex, para ser integrado ao Amazon EC2 em aplicações PHP e Java a fim de propiciar monitoramento avançado e auto-scale.

Havia uma boa disponibilidade de PaaS para linguagens como Ruby e Python, e, em contrapartida, o mercado contava com poucas opções de PaaS para Java. A fim de atacar esse ponto, a equipe do OpenShift lançou suporte para aplicações Java, tanto para aas versões Express quanto para a Flex. Adotando como servidor o JBoss AS 7 (mais informações neste post), o OpenShift implementou uma maneira muito simples e rápida para deployar aplicações Java para o cloud, aceitando quase qualquer framework disponível.

Primeiros passos com o OpenShift

Para usar o OpenShift Express, inicialmente é preciso cadastrar uma conta. Feito isso, devemos instalar o conjunto de ferramentas para trabalharmos com o OpenShift. Para Linux ou Mac OS, é necessário que Ruby 1.8 esteja instalado na máquina, e, como root, devemos executar:

gem install json_pure
gem install rhc

Fizemos um pequeno screencast para dar uma pequena introdução ao OpenShift Express. Você pode seguir os passos descritos no vídeo abaixo após instalar as gems especificadas acima:

Agora é necessário criar um domínio para hospedar nossas aplicações. Basta digitarmos no terminal:

rhc-create-domain -n meu_dominio -l seu_login

Os parâmetros -n e -l especificam, respectivamente, o nome do domínio que você deseja e seu login no OpenShift. Será solicitada sua senha; digite-a e pronto, seu domínio foi criado.

É importante frisar que o OpenShift utiliza git para controle de versão, por isso é necessário tê-lo instalado em sua máquina antes de criar aplicações.

Em seguida, vamos criar uma aplicação. Além de fornecermos o nome, é necessário também fornecer o tipo da aplicação que iremos deployar – Ruby, Java, Python, Perl ou PHP. Para tanto, executamos o seguinte comando:

rhc-create-app -a minha_app -t jbossas-7.0 -l seu_login

Os parâmetros -a e -t representam, respectivamente, o nome de sua aplicação e o tipo (linguagem) escolhido. Novamente, -l representa seu login no OpenShift. O tipo da aplicação, indicado por -t, pode receber os seguintes valores:

rack-1.1 – Aplicações Ruby
wsgi-3.2 – Aplicações Python
jbossas-7.0 – Aplicações Java
perl-5.10 – Aplicações Perl
php-5.3 – Aplicações PHP

Experimente acessar http://minha_app-meu_dominio.rhcloud.com/. Uma página de index padrão deve aparecer se tudo correu bem.

O OpenShift suporta alguns bancos bastante populares como MySQL e SQLite. Podemos adicionar suporte ao MySQL em nossa aplicação de exemplo digitando o seguinte comando:

rhc-ctl-app -a minha_app -e add-mysql-5.1

O parâmetro -a refere-se ao nome de nossa aplicação, e -e refere-se à ação que desejamos efetuar; no caso, adicionar suporte para MySQL. O OpenShift então irá lhe devolver em seu console alguns dados de sua base, tais como nome, host e senha. Anote e guarde esses dados!

Podemos ainda acessar nosso banco remoto com o auxílio do PHPMyAdmin. Basta digitar o comando:

rhc-ctl-app -a minha_app -e add-phpmyadmin-3.4

Digitamos então o usuário e senha do banco remoto que nos foi fornecido anteriormente e pronto! Temos suporte do PHPMyAdmin.

Todas as etapas até a criação de sua aplicação podem ser realizadas por meio da interface gráfica disponibilizada pelo site do OpenShift. Apenas frisando que criar a aplicação via linha de comando já gera automaticamente um projeto trackeado para a branch remota de sua aplicação no OpenShift. Criar através do assistente gráfico vai requerer que você faça isso manualmente.

Gostou? Atualmente um dos projetos da Caelum, o Calopsita, está no OpenShift. Você também pode obter mais informações acessando a documentação oficial e também nos diversos materiais elaborados pela Red Hat e pela comunidade. Será um forte competidor para as outras plataforma?

21 Comentários

  1. Dennys 02/12/2011 at 09:01 #

    Muito interessante este movimento que está sendo feito para cloud.

    Algum tempo atrás encontrei um PaaS muito simples de usar o Jelastic

    http://jelastic.com/

    Abrs!

  2. Samuel 02/12/2011 at 10:38 #

    Interessante o post.
    Estou começando a estudar esse tema e estou meio perdido no meio de tantas oportunidades.Seria bom o post mostrando as vantagens de cada serviço, como funciona como se cadastra,r algo bem básico mesmo para ajudar quem tá iniciando.
    Desde já obrigado.
    Abraços a equipe caelum.

  3. Caio Ribeiro Pereira 06/12/2011 at 13:01 #

    Muito boa essa dica!

    Acabei de me cadastrar no OpenShift, mas gostaria de saber se é possível eu utilizar o plano Express com um domínio próprio?

  4. Caio Ribeiro Pereira 06/12/2011 at 13:05 #

    Achei a dica para incluir um domínio próprio……

    Segue abaixo para quem estiver na mesma dúvida que eu:

    rhc-ctl-app -a appname -c add-alias –alias dominio.com

  5. hannelita 06/12/2011 at 13:29 #

    Olá, Caio! Sim, é possível, como você mesmo já postou aqui 🙂

    Este pequeno screencast foi apenas uma pincelada do que é possível fazer no Openshift! 🙂
    Dentre outras coisas bacanas, dá até pra usar Jenkins, por exemplo! https://www.redhat.com/openshift/blogs/jenkins-and-more-new-openshift-release-nov-15-2011

  6. Caio Ribeiro Pereira 06/12/2011 at 23:44 #

    Nossa bacana hannelita!!

    Pena que eles não dão suporte a Node.js, aliás conhece algum PaaS para Node.js que de para brincar de graça? rs

  7. Adriano Almeida 08/12/2011 at 01:16 #

    Caio, desde Agosto aproximadamente, o Heroku suporta Node.js. Dá uma olhadinha lá: http://devcenter.heroku.com/articles/node-js

    Abraço

  8. Caio Ribeiro Pereira 10/12/2011 at 14:15 #

    Bacana, andei pesquisando e encontrei o Nodester que é totalmente gratuito e o Nodejitsu.

    Nodester – http://nodester.com/
    Nodejitsu – http://nodejitsu.com/

    Eu recentemente migrei meu blog para o OpenShift Express e ficou muito bom……..confira, até fiz um post sobre o Openshift

    http://www.udgwebdev.com

    Vlw pessoal! Excelente Post!

  9. Renato Sardinha 13/12/2011 at 16:15 #

    Muito bacana o OpenShift.

    Já fiz deploy de um Web Service REST nele:

    http://fatec-sardinha.rhcloud.com/

    A versão 2.3.0.M4 do Jboss Tools tem um plugin para o OpenShift.

    http://docs.jboss.org/tools/whatsnew/openshift/openshift-news-2.3.0.M4.html

  10. Fabricio Lemos 27/12/2011 at 10:49 #

    Eu criei a aplicação utilizando o plugin do Jboss Tools. Pra mim o melhor do OpenShift foi rodar minha aplicação sem precisar fazer hacks para se adaptar à plataforma (como tive que fazer com o GAE um tempo atrás)

  11. Otávio 28/12/2011 at 10:52 #

    O Openshift é fantástico. Há algumas semanas criei uma conta lá e fiz uns testes.

    A grande vantagem em relação ao GAE/J é que você escreve uma aplicação Java normal sem nenhum componente proprietário. Se um dia você precisar trocar de serviço, a mudança no código é praticamente nula. Já no GAE/J você precisa praticamente reescrever boa parte da aplicação.

    O deploy pode ser feito tanto publicando o source no git como usando um WAR ou EAR. Tenho usado o segundo, já que assim posso empacotar a aplicação de forma mais pratica com uma ant task que roda o static scanning do VRaptor e outras coisinhas mais. Ao contrário dá para usar o maven que faz todo o deploy após um commit/push no git.

    O suporte no fórum é muito boa, mesmo para quem usa o express. A galera da Redhat tem implementado rapidamente muitas das feature requests que os usuários tem solicitado.

    Eu tenho usado, e acho que vale muito a pena.

  12. Marcelo Módolo 17/01/2012 at 20:00 #

    Fiz o curso não presencial de VRapor e gostaria de saber se é possível usar o mesmo em uma aplicação OpenShift.
    Tentei adicionar as dependências ao POM mas não funcionou quando publiquei no OpenShift (express).

    Desde já agradeço

  13. Hanneli Tavante 22/02/2012 at 14:47 #

    Olá, Marcelo! Em breve lançaremos um post e um screncast sobre como utilizar o VRaptor no Openshift! 🙂

  14. Guilherme Dio 14/07/2012 at 17:24 #

    Sabem se é possível acessar meu domínio do openshift por uma interface gráfica, dispensando o uso do terminal ?

  15. Guilherme Dio 25/07/2012 at 20:40 #

    Se alguem tiver interesse em criar uma aplicação no openshift rodando o Apache Tomcat, segue uma breve explicação de como fazer, é bem simples:

    Basta criar uma aplicação do tipo DIY(Do-it-yourself) pelo terminal ou pelo próprio Web GUI do Openshift…ela vem com um servidor default do ruby, então tem que exlcluir os scripts de stop e start dele e dar um push para o server:

    Execute os seguintes comandos:

    $cd [nomeApp]/.openshift/action_hooks/
    $rm start
    $rm stop
    $touch start
    $touch stop
    $git commit -a -m “Substituindos scripts ruby”
    $git push

    Depois disso é só conectar pelo SSH na aplicação e baixar o tomcat no diretorio ‘data’:

    $SSH [codigo]
    $cd ~/[nomeApp]/data/
    $wget [linkDownloadTomcat]
    $tar zxvf apache-tomcat-7.0.29.tar
    $rm apache-tomcat-7.0.29.tar

    Depois disso tem que configurar o server.xml que fica em ” ~/[nomeApp]/data/apache-tomcat-7.0.29/conf/server.xml” removendo as referencias nas tags às portas 8009 e 8005, troca por 15009 e 15005, e depois mude o Host apontando pro IP da sua maquina no openshift.

    Para pegar o IP basta executar o seguinte comando:

    $ env |grep INTERNAL_IP

    Salve o server.xml e rode o script ‘startup.sh’:

    $sh ~/[nomeApp]/data/apache-tomcat-7.0.29/bin/startup.sh

    Depois é só acessar a url que o openshift fornece e la estará o manager-gui do Tomcat.

    Qualquer dúvida podem me mandar email:

    ggrdio@gmail.com

  16. tgmarinho 24/08/2012 at 19:21 #

    Olá, gostei do post… muito legal o OpenShift!

    estou testando aqui… Vlw

    @tgmarinho

  17. Kleber 02/01/2013 at 22:48 #

    Olá Hanneli, gostaria de saber se tem como fazer o deploy do um pacote .EAR no openshift?
    Obrigado.

  18. Cleber 11/03/2014 at 15:33 #

    Bem útil esse tópico! Achei também esse outro blog com vários tutoriais: http://www.dev4dev.com.br/2014/02/27/servidor-de-aplicacao-java-gratuito-openshift/

  19. Marckson 29/11/2016 at 08:18 #

    Gostaria de utilizar o magento no openshift, mas estou perdido, não sei como fazer. Não entendo de programação.

Deixe uma resposta