Categorias
Java www

migre suas aplicações Java para nuvem Heroku

Uma das grandes vantagens de usar o serviço de nuvem não é ficar na moda ou usar a última tecnologia disponível, é sim usar somente o que precisa, nada a mais e pagar apenas pelo que usa.

Alguns afirmam que a tecnologia em nuvem é o maior avanço desde a criação das redes elétricas e distribuidoras de energia prestando serviço de distribuição.

Imagine se você tivesse que pagar 300 reais por mês de energia elétrica, independente se gastasse mais ou menos que isso. Um absurdo, não ? Mas é o que acontece com um serviço de hospedagem do seu site… você contrata uma tecnologia, escolhe um plano e usando ou não você paga por aquilo.

Existem excelentes serviços de nuvem que permitem que você use uma quota gratuita e se passar ultrapassar, paga uma taxa proporcional pelo serviço utilizado.

Isso é exatamente o que eu procurava e vou mostrar aqui com detalhes …

Eu tirei o meu site dessa situação:

Para essa:

Para fazer isso na sua aplicação, os passos são simples:

  1. Heroku – faça o cadastro e acesse o tutorial para aplicações Java
  2. Maven – migre sua aplicação para Maven 3
  3. Banco de dados – migre sua base para PostgreSQL

Provavelmente a sua base está em MySQL, então vale a pena seguir os dois tutoriais disponíveis.

Duas dicas para essa conversão de MySQL para PostgreSQL:

  1. tipos booleanos não são convertidos
  2. coloque o nome das tabelas em minúsculo para evitar o erro relation “[tabela]” does not exist

É importante saber também que o PostgreSQL é um banco de dados open source bem robusto e que possui características semelhantes ao Oracle Database, o que pode ser algo positivo para o seu caso. Além disso, ele acompanha a excelente ferramenta cliente pgAdmin, que é pau para toda obra.

O interessante também é que o Heroku foi feito para facilitar o deploy das aplicações, ele fornece uma ferramenta cliente para fazer todas as operações: atualizar a aplicação, atualizar a base, subir a aplicação, entre outras coisas.

Exemplo de alguns comandos:

 fb@cascao ~/ > heroku pg:info HEROKU_POSTGRESQL_AQUARIUS 
=== HEROKU_POSTGRESQL_AQUARIUS (DATABASE_URL)
Connections: 0
Created:     2012-06-08 02:15 UTC
Data Size:   10.6 MB
Fork/Follow: Unavailable
PG Version:  9.1.5
Plan:        Dev
Rows:        4797/10000 (In compliance)
Status:      available
Tables:      46

 fb@cascao ~/ > heroku ps 

=== web: `java $JAVA_OPTS -jar target/dependency/jetty-runner.jar --port $PORT target/*.war`
web.1: up for 20h

 fb@cascao ~/ > heroku logs -t 

2012-10-28T21:42:56+00:00 heroku[nginx]: 201.80.25.250 - - [28/Oct/2012:21:42:56 +0000] "GET / HTTP/1.1" 200 455 "http://www.google.com.br/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDAQFjAB&url=http%3A%2F%2%2F&ei=3aWNUM7yAoSm8gS0voDgAw&usg=AFQjCNHdT6664yXVdBOWUIZEZ0URPwC7KQ&sig2=-gSGuQSfmuy4j76IYUI7wQ" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4" 
2012-10-28T21:42:56+00:00 heroku[nginx]: 201.80.25.250 - - [28/Oct/2012:21:42:56 +0000] "GET /js/browser.js HTTP/1.1" 200 502 "http://www.meusite.com.br/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4" www.meusite.com.br
2012-10-28T21:42:56+00:00 heroku[router]: GET www.meusite.com.br/js/browser.js dyno=web.1 queue=0 wait=1ms service=49ms status=200 bytes=502
2012-10-28T21:42:57+00:00 app[web.1]: DEBUG [qtp744814285-29 - /games/index-home] (IndexAction.java:77) - iniciando IndexAction HOME...
2012-10-28T21:42:57+00:00 app[web.1]:  INFO [qtp7
44814285-29 - /games/index-home] (InfoHelper.java:106) - usuario anonimo!
2012-10-28T21:42:57+00:00 app[web.1]:  INFO [qtp744814285-29 - /games/index-home] (TelaDeJogoDAO.java:125) - [trazendo a lista ...]:

Depois de sua aplicação migrada, é possível ver as opções gratuitas contratadas:

Se, por exemplo, o seu sistema precisar de algo mais, sempre é possível contratar serviços adicionais em https://addons.heroku.com/ , como por exemplo o serviço de envio de email MailGun, que também possui uma cota gratuita de 300 mensagens por dia, se sua aplicaçào envia menos que isso, o serviço ficará de graça!

Também é possível registrar o domínio do seu site da Heroku aqui no Brasil pela Registro.br ou lá fora, por exemplo pela GoDaddy.

Fernando Boaglio, para a comunidade!

Por Fernando Boaglio