sexta-feira, 15 de março de 2013

Gerenciando suas aplicações no cloud com as ferramentas de cliente

Neste post, irei mostrar a ferramenta rhc, que permite gerenciar em linha de comando todas as aplicações, seu domínio e outras informações referentes à sua conta OpenShift. No primeiro post, eu mostrei muito por cima como criar uma primeira aplicação usando a IDE Eclipse utilizando o Plugin JBoss Tools. Tentarei aqui ser o mais neutro possível a respeito de plataformas então eu vou explicar como instalar a ferramenta no Linux, Mac OS e Windows.

Instalando a ferramenta no Linux

Para poder utilizar a ferramenta no Linux, é preciso instalar os seguintes pacotes:
  • rubygems
  • git
Como podem ver, a ferramenta foi escrita em Ruby e por isso apesar de mencionar a instalação de apenas dois pacotes eles trarão dependências adicionais para poder fazer os pacotes principais funcionarem.
Após a instalação com sucesso dos pacotes, basta executar o seguinte comando para instalar o rhc:
$ sudo gem install rhc

Instalando a ferramenta no Mac

Para instalar a ferramenta no Mac, é preciso ter os seguintes pré-requisitos:
Após a instalação, basta executar o comando:
$ sudo gem install rhc

Instalando a ferramenta no Windows

Para instalar a ferramenta no Windows, é preciso ter os seguintes pré-requisitos:
  • Instalar o Ruby 1.9 for Windows (Lembre-se de marca a opção "Add Ruby executables to your PATH")
  • Instalar o Git for Windows (Marque a opção "Run Git from the Windows Command Prompt")
Feito isso, basta executar o comando:
C:\> gem install rhc

Configuração inicial da ferramenta

O primeiro comando que iremos aprender é o comando:
$ rhc setup
Nele, você irá fazer as configurações iniciais da ferramenta, como gerar as chaves de segurança SSH para o login da ferramenta(muito importante para poder conectar ao repositório git das aplicações), a criação de um nome de domínio(com ele, todas as aplicações criadas pela sua conta levarão esse nome único para identificar aplicações criadas por você), e verificar alguma pendência de configuração exigida pelo OpenShift.
Após o procedimento de setup, ele irá gerar os seguintes arquivos:
<user_dir>/.openshift/express.conf
<user_dir>/.ssh
O primeiro é uma configuração bem básica do Openshift (inicialmente um usuário padrão ao usar o comando rhc, que pode usar outro usuário adicionando a opção -l no comando, e o endereço do servidor Openshift) e o outro é o repositório de chaves SSH para comunicação com os serviços Openshift. Sem isso, você não conseguirá fazer um git clone do repositório.

Criando a aplicação

Depois de preparado o ambiente, estamos prontos para a criação da aplicação. O comando para criar é:
$ rhc app create -a <nome_da_aplicacao> -t <tipo_aplicacao>
Onde o <tipo_aplicacao> pode ser:

  •  dyi-0.1
  • jbossas-7
  • jbosseap-6.0
  • jenkins-1.4
  • nodejs-0.6
  • perl-5.10
  • php-5.3
  • python-2.6
  • python-2.7
  • python-3.3
  • ruby-1.8
  • ruby-1.9
  • jbossews-1.0 (basicamente um Tomcat 6)
  • jbossews-2.0 (basicamente um Tomcat 7)
  • zend-5.6
Como podem ver na lista, a variedade de linguagens/servidores para desenvolvimento no Openshift tem crescido cada vez mais. E ainda podemos criar nosso próprio com o Do-It-Yourself Cartridge (farei um post explicando sobre isso). Essa tarefa irá criar um processo automático que no final irá gerar um endereço do repositório git e também a URL da sua aplicação no formato http://<nome_da_aplicacao>-<nome_do_dominio>.rhcloud.com

Snapshots da aplicação

Caso você queira criar backups de sua aplicação para posteriormente voltar às versões anteriores, o Openshift permite que você crie snapshots da sua aplicação e restaurá-los quando quiser. Em outras palavras, o snapshot é arquivo compactado que contém tudo que sua aplicação precisa para ser recuperada em uma outra gear do Openshift, tais como as variáveis de ambiente, o repositório git, os binários da aplicação, etc. Para criar um snapshot, basta executar o comando:

$ rhc snapshot save -a <nome_da_aplicacao> -f <nome_do_arquivo>

Assim, caso você queira restaurar a aplicação, execute o comando:

$ rhc snapshot restore -a <nome_da_aplicacao> -f <nome_do_arquivo>

Diagnóstico de problemas

Sempre pode ocorrer problemas e que precisam de nossa intervenção para que nossa aplicação possa voltar ao ar ou até mesmo monitorar nossas aplicações para procurar eventuais problemas. Para isso, o rhc possui alguns comando que podem auxiliar o desenvolvedor a encontrar o problema.
O primeiro de todos os comandos irá verificar a saúde da infraestrutura do Openshift:

$ rhc server

Nele, é possível verificar se o problema não é generalizado e portanto se há alguma ação que pode ser realmente tomada por conta da sua aplicação. Caso apareça a mensagem "All systems running fine", então estamos à salvo... =D
O segundo comando inspecionará todos os logs da sua aplicação e irá imprimir (sob demanda) as mensagens deles. O comando é:

$ rhc tail -a <nome_da_aplicacao>

Por fim, pode ser necessário inspecionar a performance em si da aplicação, assim verificando se a mesma está muito lenta, então pode ser necessário inspecionar as Threads do sistema. O comando para gerar o thread dump (um arquivo que descreve todas as Thread em execução do sistema) é:

$ rhc threaddump -a <nome_da_aplicacao>

Após a execução desse comando ele irá retornar uma mensagem dizendo onde o Thread Dump estará disponível, podendo inspecionar utilizando o comando descrito anteriormente. Para ser mais exato, o próprio rhc irá já enviar o comando completo que deve ser executado para inspecionar o Thread Dump.

Conclusão

Espero que esse post seja de muita utilidade a todos pois alguns usuários Openshift como eu adoram em algum momento utilizar a linha de comando para criar suas aplicações e até mesmo automatizar alguns processos. Fica aqui uma dica: todos esses comandos do rhc por trás há uma API REST que é consumida pelos comandos (que são nada mais nada menos que código Ruby). Em um post futuro explicarei sobre a API REST.