Screencast: sua App no Cloud com OpenShift

Postado em 01. dez, 2011 por Hanneli Tavante em Arquitetura, Inovação, Java

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?

Hanneli Tavante

Mais sobre o autor

Tags: , , , , ,

18 Respostas para “Screencast: sua App no Cloud com OpenShift”

  1. Dennys

    02. dez, 2011

    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. dez, 2011

    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. dez, 2011

    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. dez, 2011

    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. dez, 2011

    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. dez, 2011

    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. dez, 2011

    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. dez, 2011

    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. dez, 2011

    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. dez, 2011

    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. dez, 2011

    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. jan, 2012

    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. fev, 2012

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

  14. Guilherme Dio

    14. jul, 2012

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

  15. Guilherme Dio

    25. jul, 2012

    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. ago, 2012

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

    estou testando aqui… Vlw

    @tgmarinho

  17. Kleber

    02. jan, 2013

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

Trackbacks/Pingbacks

  1. Hospedando Wordpress no cloud OpenShift - Underground WebDev - dezembro 10, 2011

    [...] da versão Express do OpenShift que é uma opção excelente em relação Custo/Benefício.Fontes:Blog Caelum – Sua App no Cloud com OpenShiftRed Hat OpenShift 10/12/2011 • PaaS • Cloud, express, OpenShift, PaaS, WordPress [...]

Deixar uma Resposta