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

heroku Heroku Implantando Aplicações Java no · PDF filepleta de add-ons pode ser encontrada no endereço ... no Heroku e da integração entre o Heroku e o Git para controlar o

Embed Size (px)

Citation preview

Page 1: heroku Heroku Implantando Aplicações Java no · PDF filepleta de add-ons pode ser encontrada no endereço ... no Heroku e da integração entre o Heroku e o Git para controlar o

/ 28

heroku_

Implantando Aplicações Java no

Heroku

O que é o Heroku?

Heroku é uma plataforma de cloud computing que foi criada para facilitar a im-plantação de aplicações, utiliza o modelo de cloud computing chamado de PaaS (Platform as a Service), que oferece ferramentas para o desenvolvimento e implantação de aplicações de forma que os custos e a complexidade de implantação sejam reduzidos.

Inicialmente o Heroku foi criado para rodar apli-cações escritas na linguagem Ruby, mas a medida que a plataforma foi evoluindo, outras linguagens foram sendo incorporadas à lista de linguagens su-portadas. Atualmente, são suportadas seis lingua-gens: Ruby, Java, Python, Clojure, Scala e Node.js.

Além de suportar diversas linguagens, a plata-forma do Heroku possibilita a integração com diver-sas ferramentas para facilitar o desenvolvimento, e essas ferramentas são conhecidas como add-ons. Existem add-ons para integração com banco de dados, para monitoramento das aplicações, para implementações de fila, entre outros. A lista com-pleta de add-ons pode ser encontrada no endereço addons.heroku.com.

Juntamente com os add-ons, o Heroku fornece uma API para controle de seus serviços que pode ser acessada por uma interface de linha de comando ou por interface REST, facilitando a manutenção e mo-nitoramento dos recursos e serviços.

A parte mais importante de toda a plataforma do Heroku são as unidades de processamento, co-nhecidas como Dynos. Os dynos são elásticos, ou seja, a qualquer momento novos dynos podem ser

ligados e desligados de acordo com a necessidade. O Heroku possui controle para distribuir a carga das requisições entre os dy-nos ativos, garantindo um bom aproveitamento dos recursos disponíveis.

Juntamente com uma infraestrutura muito bem organizada, o Heroku utiliza um fluxo de implanta-ção baseado no GIT. Para implantar aplicações no Heroku, basta apenas um simples push para o re-positório do Heroku e a aplicação será atualizada automaticamente de maneira transparente para o usuário.

O objetivo deste artigo é mostrar como tirar proveito de algumas funcionalidades oferecidas pelo Heroku de maneira fácil.

Rodando Java no HerokuO Heroku pode rodar qualquer aplicação Java

que rode sobre o OpenJDK6 e utiliza o Maven para construir as aplicações e instalá-las nos dynos.

Para facilitar a vida de quem quer ver algo ro-dando no Heroku, a equipe do Heroku disponibilizou algumas aplicações de exemplo para serem usadas como base durante o desenvolvimento. Atualmente, estão disponíveis quatro modelos de aplicação de exemplo:

Web app with Spring and Tomcat: aplicação que utiliza Spring MvC e Hibernate e roda em um Tom-cat.

Containerless web app with Embedded Jetty: aplicação baseada em servlets rodando em um Jetty embutido.

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

Page 2: heroku Heroku Implantando Aplicações Java no · PDF filepleta de add-ons pode ser encontrada no endereço ... no Heroku e da integração entre o Heroku e o Git para controlar o

29 \

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.

João Paulo Gomes dos Santos | [email protected] Formado em Engenharia da Computação na ETEP Faculdades. Atua como desenvolvedor Java na VPSA. Possui as certifi cações

SCJP, SCWCD, SCBCD e SCEA

Web app with Play! Framework: aplicação base-ada no framework Play!

RESTful API with JAx-RS: aplicação que exem-plifi ca o uso de REST rodando em um Jetty embutido.

As aplicações de exemplo já possuem uma arqui-tetura básica defi nida, mas isso não signifi ca que elas estejam limitadas a essas arquiteturas predefi nidas. O desenvolvedor tem total liberdade para adicionar novas dependências ao projeto, para isso o desenvol-vedor deve modifi car o arquivo pom.xml do projeto incluindo as novas dependências necessárias.

Neste artigo, é utilizada a primeira opção para exemplifi car a implantação de uma aplicação Java 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 fi gura 1.

Figura 1. Aplicações de exemplo disponíveis no Heroku.

Em seguida, deve-se clicar no botão Create App da primeira opção (Web app with Spring and Tom-cat) para iniciar a criação da aplicação. Lembre-se que, para realizar a criação da aplicação, o usuário deve se autenticar no Heroku. Quando a criação da aplicação for fi nalizada, o usuário será redireciona-do para a aplicação recém-criada que já está rodan-do no Heroku, como representado na fi gura 2. Um nome aleatório é criado para cada aplicação que é feita no Heroku. Para este exemplo, foi criada uma aplicação e o nome gerado pelo Heroku foi radiante--window-2008 e o link para acesso é http://radiant--window-2008.herokuapp.com.

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 fi gura 3 representa o CRUD de exemplo.

Page 3: heroku Heroku Implantando Aplicações Java no · PDF filepleta de add-ons pode ser encontrada no endereço ... no Heroku e da integração entre o Heroku e o Git para controlar o

/ 30

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 plugin para o Eclipse chamado EGit, que é utilizado para facilitar a integração entre o Eclipse e o Git e, diante disto, deve-se assegurar que o Eclipse a ser utilizado possua o plugin do EGit instalado. Mais detalhes sobre a instalação e configuração do EGit podem ser encontrados em http://unicase.blogspot.com.br/2011/01/egit-tutorial-for-beginners.html.

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 4. Configuração SSH para acesso ao código.

Ainda na figura 4, na aba Key Management, deve--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 5. Tela de configuração de SSH do Heroku.

Neste momento, o ambiente de desenvolvimen-to já está pronto para se comunicar com o Heroku. O próximo passo é copiar e executar o código no Eclip-se.

Para importar o projeto do Heroku, deve-se ir ao menu File -> Import -> Git -> Projects From Git e cli-car em Next, como mostra a figura 6.

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

Na próxima tela, selecione a opção URI e clique em Next, como mostra a figura 7.

Figura 7. Seleção da fonte de repositórios.

Page 4: heroku Heroku Implantando Aplicações Java no · PDF filepleta de add-ons pode ser encontrada no endereço ... no Heroku e da integração entre o Heroku e o Git para controlar o

31 \

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 repositório utilizadas neste artigo estão representa-das na figura 8.

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 mostra a figura 9.

Figura 9. Seleção do branch a ser importado.

Depois de selecionado o branch, deve-se escolher o diretório de destino para o código. Para este artigo, foram escolhidas as opções que já vêm configuradas por padrão e em seguida deve-se clicar em Next. Nes-te momento será iniciado o processo de importação do projeto do Heroku, e quando este processo de im-portação terminar, deve-se selecionar a maneira pela qual o projeto será incluído no Eclipse. Deve-se sele-cionar a opção Import as general Project e em segui-da clicar em Next e Finish, como mostra a figura 10.

Figura 10. Importando o projeto para o Eclipse.

Depois de importar o projeto no Eclipse, tem-se a seguinte estrutura, conforme a figura 11.

Figura 11. Estrutura de diretórios da aplicação no Eclipse.

Atualizando a aplicação no HerokuPara 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.

<div class=”container”> <div class=”row”> <div class=”span8 offset2”> <div class=”page-header”> <h1>Listagem de Pessoas MundoJ</h1> </div><form:form method=”post” action=”add” commandName=”person” class=”form-vertical”> <form:label path=”firstName”>Nome </form:label> <form:input path=”firstName” /> <form:label path=”lastName”> Sobrenome</form:label> <form:input path=”lastName” />

Page 5: heroku Heroku Implantando Aplicações Java no · PDF filepleta de add-ons pode ser encontrada no endereço ... no Heroku e da integração entre o Heroku e o Git para controlar o

/ 32

<input type=”submit” value=”Adicionar” class=”btn”/> </form:form> <c:if test=”${!empty peopleList}”> <h3>Pessoas</h3> <table class=”table table-bordered table-striped”> <thead> <tr> <th>Nome</th> <th>&nbsp;</th> </tr> </thead> <tbody> <c:forEach items=”${peopleList}” var=”person”> <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> </tbody> </table> </c:if> </div> </div></div>

Depois de modificar o código, deve-se atualizar o ambiente do Heroku com as modificações que foram feitas. Para isso, deve-se clicar com o botão direito sobre o projeto e selecionar a opção Team -> Commit e, em seguida, deve-se clicar novamente com o botão direito sobre o projeto e selecionar a opção Team -> Push to Upstream. Pode-se observar na figura 12 que a mensagem “http://radiant-window-2008.herokua-pp.com deployed to Heroku” mostra que a implan-tação da aplicação com as modificações foi efetuada com sucesso.

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

Para garantir que tudo funcionou como era es-perado, pode-se acessar o link http://radiant-win-dow-2008.herokuapp.com/people/ novamente e verificar que as alterações que foram feitas estão pre-sentes na versão atual, como mostra a figura 13.

Figura 13. Aplicação atualizada rodando no Heroku.

O exemplo apresentado neste artigo, apesar de ser bem simples, serve como base para aplicações re-ais sem problemas.

Considerações finais Este artigo mostra como é simples e fácil implan-

tar aplicações Java no Heroku. Essa facilidade é obti-da com o uso das aplicações de exemplo disponíveis no Heroku e da integração entre o Heroku e o Git para controlar o fluxo de implantação das aplicações.

A execução de aplicações em Cloud Computing é uma abordagem que vem conquistando muito espaço nas empresas pela facilidade e redução de custos que é possível se obter com ela.

> http://java.heroku.com/

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

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

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

/referências

Para saber mais sobre Java em Cloud Computing, a leitura

dos artigos Java Google App Engine da edição 43 e Google

App Engine com GWT da edição 47 da revista MundoJ são

recomendadas.

/para saber mais