You are on page 1of 5

heroku_

Heroku
Implantando Aplicações Java no

Descubra como é fácil ter sua aplicação rodando


em Cloud Computing

O que é o
Heroku? ligados e desligados de
Heroku é uma plataforma de acordo com a necessidade. O Heroku possui controle
cloud computing que foi criada para facilitar a im- para distribuir a carga das requisições entre os dy-
plantação de aplicações, utiliza o modelo de cloud nos ativos, garantindo um bom aproveitamento dos
computing chamado de PaaS (Platform as a Service), recursos disponíveis.
que oferece ferramentas para o desenvolvimento e Juntamente com uma infraestrutura muito bem
implantação de aplicações de forma que os custos e organizada, o Heroku utiliza um fluxo de implanta-
a complexidade de implantação sejam reduzidos. ção baseado no GIT. Para implantar aplicações no
Inicialmente o Heroku foi criado para rodar apli- Heroku, basta apenas um simples push para o re-
cações escritas na linguagem Ruby, mas a medida positório do Heroku e a aplicação será atualizada
que a plataforma foi evoluindo, outras linguagens automaticamente de maneira transparente para o
foram sendo incorporadas à lista de linguagens su- usuário.
portadas. Atualmente, são suportadas seis lingua- O objetivo deste artigo é mostrar como tirar
gens: Ruby, Java, Python, Clojure, Scala e Node.js. proveito de algumas funcionalidades oferecidas pelo
Além de suportar diversas linguagens, a plata- Heroku de maneira fácil.
forma do Heroku possibilita a integração com diver-
sas ferramentas para facilitar o desenvolvimento, Rodando Java no Heroku
e essas ferramentas são conhecidas como add-ons. O Heroku pode rodar qualquer aplicação Java
Existem add-ons para integração com banco de que rode sobre o OpenJDK6 e utiliza o Maven para
dados, para monitoramento das aplicações, para construir as aplicações e instalá-las nos dynos.
implementações de fila, entre outros. A lista com- Para facilitar a vida de quem quer ver algo ro-
pleta de add-ons pode ser encontrada no endereço dando no Heroku, a equipe do Heroku disponibilizou
addons.heroku.com. algumas aplicações de exemplo para serem usadas
Juntamente com os add-ons, o Heroku fornece como base durante o desenvolvimento. Atualmente,
uma API para controle de seus serviços que pode ser estão disponíveis quatro modelos de aplicação de
acessada por uma interface de linha de comando ou exemplo:
por interface REST, facilitando a manutenção e mo- Web app with Spring and Tomcat: aplicação que
nitoramento dos recursos e serviços. utiliza Spring MVC e Hibernate e roda em um Tom-
A parte mais importante de toda a plataforma cat.
do Heroku são as unidades de processamento, co- Containerless web app with Embedded Jetty:
nhecidas como Dynos. Os dynos são elásticos, ou aplicação baseada em servlets rodando em um Jetty
seja, a qualquer momento novos dynos podem ser embutido.

/ 28
João Paulo Gomes dos Santos | jpjcjbr@gmail.com
Formado em Engenharia da Computação na ETEP Faculdades. Atua como desenvolvedor Java na VPSA. Possui as certificações
SCJP, SCWCD, SCBCD e SCEA

Com o grande crescimento das oportunidades para negócios na web,


as empresas estão cada vez mais em busca de alternativas para ofe-
recer seus produtos com qualidade e com custos reduzidos, tornan-
do-os assim competitivos. Para conseguir colocar um sistema em
produção, um dos custos que deve ser levado em consideração é o
custo referente à infraestrutura para execução da aplicação. Uma
das opções é o uso de infraestrutura própria, que é mais custosa
inicialmente e muitas vezes inviável para startups. Cloud Compu-
ting pode ajudar na redução dos custos durante a implantação de
soluções web. Este artigo mostra como criar uma aplicação Java e
implantá-la no Heroku de forma simples e rápida.
Web app with Play! Framework: aplicação base- Em seguida, deve-se clicar no botão Create App
ada no framework Play! da primeira opção (Web app with Spring and Tom-
RESTful API with JAx-RS: aplicação que exem- cat) para iniciar a criação da aplicação. Lembre-se
plifica o uso de REST rodando em um Jetty embutido. que, para realizar a criação da aplicação, o usuário
As aplicações de exemplo já possuem uma arqui- deve se autenticar no Heroku. Quando a criação da
tetura básica definida, mas isso não significa que elas aplicação for finalizada, o usuário será redireciona-
estejam limitadas a essas arquiteturas predefinidas. do para a aplicação recém-criada que já está rodan-
O desenvolvedor tem total liberdade para adicionar do no Heroku, como representado na figura 2. Um
novas dependências ao projeto, para isso o desenvol- nome aleatório é criado para cada aplicação que é
vedor deve modificar o arquivo pom.xml do projeto feita no Heroku. Para este exemplo, foi criada uma
incluindo as novas dependências necessárias. aplicação e o nome gerado pelo Heroku foi radiante-
Neste artigo, é utilizada a primeira opção para -window-2008 e o link para acesso é http://radiant-
exemplificar a implantação de uma aplicação Java -window-2008.herokuapp.com.
com Spring MvC e Hibernate no Heroku.
O primeiro passo consiste na realização do ca-
dastro no Heroku, e para isso, deve-se acessar o link
https://api.heroku.com/signup. e, em seguida, con-
cluir o cadastro. Logo após a conclusão do cadastro,
deve-se acessar a página com informações específi-
cas para aplicações Java no Heroku: http://java.he-
roku.com. Nesta página, estão disponíveis algumas
opções, conforme a figura 1.

Figura 2. Aplicação criada.

A partir deste momento, pode-se acessar um


CRUD que vem implementado como exemplo através
do seguinte endereço: http://radiant-window-2008.
herokuapp.com/people/. A figura 3 representa o
CRUD de exemplo.
Figura 1. Aplicações de exemplo disponíveis no Heroku.

29 \
Figura 3. CRUD de exemplo.

Configurando o ambiente para


desenvolvimento
Depois de finalizada a criação da aplicação de
exemplo, o próximo passo é mostrar como configurar
um ambiente de desenvolvimento utilizando o Eclip-
se como IDE e alguns plugins do Eclipse para integra-
ção com o Git e com o Maven.
Para a confecção deste artigo, foi utilizado um Figura 5. Tela de configuração de SSH do Heroku.
plugin para o Eclipse chamado EGit, que é utilizado
Neste momento, o ambiente de desenvolvimen-
para facilitar a integração entre o Eclipse e o Git e,
to já está pronto para se comunicar com o Heroku. O
diante disto, deve-se assegurar que o Eclipse a ser
próximo passo é copiar e executar o código no Eclip-
utilizado possua o plugin do EGit instalado. Mais
se.
detalhes sobre a instalação e configuração do EGit
Para importar o projeto do Heroku, deve-se ir ao
podem ser encontrados em http://unicase.blogspot.
menu File -> Import -> Git -> Projects From Git e cli-
com.br/2011/01/egit-tutorial-for-beginners.html.
car em Next, como mostra a figura 6.
Além do plugin para integração com o Git, tam-
bém será necessário instalar o plugin para integração
com o Maven (http://www.eclipse.org/m2e).
Depois de concluir a instalação dos plugins ne-
cessários, é hora de configurar o Eclipse para aces-
sar o código gerado para a aplicação. Primeiramente,
deve-se abrir o Eclipse e acessar o menu Window ->
Preferences -> General -> Network Connections ->
SSH2, como pode ser observado na figura 4.

Figura 6. Tela de importação de projeto.


Figura 4. Configuração SSH para acesso ao código. Na próxima tela, selecione a opção URI e clique
Ainda na figura 4, na aba Key Management, deve- em Next, como mostra a figura 7.
-se clicar no botão Generate RSA Key para gerar a
chave criptográfica que será usada na comunicação
entre o Eclipse e o repositório de código do Heroku.
Depois de gerar a chave, deve-se associar essa chave
à conta do usuário no Heroku através do endereço ht-
tps://api.heroku.com/account/ssh, conforme a figura
5. Figura 7. Seleção da fonte de repositórios.

/ 30
Em seguida, é exibida a tela para configurar o en-
dereço do repositório do projeto. O campo URI deve
ser configurado com o endereço do repositório que
pode ser obtido através da listagem de aplicativos do
Heroku (https://api.heroku.com/myapps). O campo
Host deve ser preenchido com heroku.com, o campo
Repository Path deve ser configurado com o nome da
aplicação (que neste caso é radiante-window-2008)
com a extensão .git e os outros campos não devem
ser alterados para este exemplo. As configurações do Figura 10. Importando o projeto para o Eclipse.
repositório utilizadas neste artigo estão representa-
Depois de importar o projeto no Eclipse, tem-se a
das na figura 8.
seguinte estrutura, conforme a figura 11.

Figura 8. Configuração do repositório.

Depois de ter configurado o repositório, deve-


-se escolher o branch master e clicar em Next, como
Figura 11. Estrutura de diretórios da aplicação no Eclipse.
mostra a figura 9.

Atualizando a aplicação no Heroku


Para finalizar, algumas alterações serão feitas
na aplicação e em seguida ela será implantada no-
vamente no Heroku. Para isso, o arquivo src/main/
webapp/WEB-INF/jsp/people.jsp será modificado de
acordo com a Listagem 1.
Figura 9. Seleção do branch a ser importado. <div class=”container”>
<div class=”row”>
Depois de selecionado o branch, deve-se escolher <div class=”span8 offset2”>
o diretório de destino para o código. Para este artigo, <div class=”page-header”>
foram escolhidas as opções que já vêm configuradas <h1>Listagem de Pessoas MundoJ</h1>
por padrão e em seguida deve-se clicar em Next. Nes- </div>
<form:form method=”post” action=”add”
te momento será iniciado o processo de importação
commandName=”person” class=”form-vertical”>
do projeto do Heroku, e quando este processo de im- <form:label path=”firstName”>Nome </
portação terminar, deve-se selecionar a maneira pela form:label>
qual o projeto será incluído no Eclipse. Deve-se sele- <form:input path=”firstName” />
cionar a opção Import as general Project e em segui- <form:label path=”lastName”>
da clicar em Next e Finish, como mostra a figura 10. Sobrenome</form:label>
<form:input path=”lastName” />

31 \
<input type=”submit” value=”Adicionar”
class=”btn”/>
/para saber mais
</form:form> Para saber mais sobre Java em Cloud Computing, a leitura
<c:if test=”${!empty peopleList}”> dos artigos Java Google App Engine da edição 43 e Google
<h3>Pessoas</h3>
App Engine com GWT da edição 47 da revista MundoJ são
<table class=”table table-bordered table-
recomendadas.
striped”>
<thead>
<tr>
<th>Nome</th>
<th>&nbsp;</th>
</tr> Para garantir que tudo funcionou como era es-
</thead> perado, pode-se acessar o link http://radiant-win-
<tbody> dow-2008.herokuapp.com/people/ novamente e
<c:forEach items=”${peopleList}” verificar que as alterações que foram feitas estão pre-
var=”person”> sentes na versão atual, como mostra a figura 13.
<tr>
<td>${person.lastName}, ${person.
firstName}
</td>
<td>
<form action=”delete/${person.id}”
method=”post”>
<input type=”submit” class=
“btn btn-danger btn-mini”
value=”Delete”/>
</form>
</td>
</tr>
</c:forEach> Figura 13. Aplicação atualizada rodando no Heroku.
</tbody>
</table> O exemplo apresentado neste artigo, apesar de
</c:if> ser bem simples, serve como base para aplicações re-
</div> ais sem problemas.
</div>
</div>
Considerações finais
Depois de modificar o código, deve-se atualizar o Este artigo mostra como é simples e fácil implan-
ambiente do Heroku com as modificações que foram tar aplicações Java no Heroku. Essa facilidade é obti-
feitas. Para isso, deve-se clicar com o botão direito da com o uso das aplicações de exemplo disponíveis
sobre o projeto e selecionar a opção Team -> Commit no Heroku e da integração entre o Heroku e o Git para
e, em seguida, deve-se clicar novamente com o botão controlar o fluxo de implantação das aplicações.
direito sobre o projeto e selecionar a opção Team -> A execução de aplicações em Cloud Computing é
Push to Upstream. Pode-se observar na figura 12 que uma abordagem que vem conquistando muito espaço
a mensagem “http://radiant-window-2008.herokua- nas empresas pela facilidade e redução de custos que
pp.com deployed to Heroku” mostra que a implan- é possível se obter com ela.
tação da aplicação com as modificações foi efetuada
com sucesso.
/referências

> http://java.heroku.com/

> https://devcenter.heroku.com/categories/platform-basics

> https://devcenter.heroku.com/categories/addon-overview

> https://devcenter.heroku.com/articles/git

Figura 12. Resultado da implantação das modificações.

/ 32

You might also like