Jun 252012
 

Je ne sais pas vous, mais dans ma carrière, j’ai eu à mettre en production de nombreuses applications web. Actions qui pouvaient prendre beaucoup de temps en fonction du nombre d’intermédiaire ou de la procédure “sécurisé” de mise en production.

Et bien quand j’ai eu l’occasion d’essayer la plateforme Heroku, j’ai tout simplement halluciné !

Heroku est une plateforme dite “Cloud”, de type “PaaS” (Platform as a Service). Elle vous offre la possibilité de déployer vos applications (Java Servlet, Rails, Node.js mais aussi Play! Framework) avec une base de données PostgreSQL associées.

J’ai donc voulu voir si c’était vraiment utilisable. Après avoir ouvert un compte Gratuit chez Heroku, j’ai paramétré mes clés SSH comme il le fallait, j’ai ensuite essayer de livrer en production une application Play! Framework from scratch.

ps : n’est pas comptabilisé dans le temps, l’installation de Java et de Play! Framework, considérant que cela fait partie de mon environnement de travail.

Le mode opératoire est le suivant :

  • Installation du Heroku Toolbelt
  • Création d’un nouveau projet avec Play! Framework
  • Connexion à Heroku
  • Création de l’instance sur la plateforme heroku
  • Git init -> add . -> commit
  • Git push sur le repository mis à disposition par héroku
  • Ouverture du navigateur

Résultat:

Début : 16:13:35
Fin : 16:18:20
Soit 04 Minutes 45 Secondes

En moins de 5 minutes vous avez une application Play Framework Up and Ready, accessible sur le Net, avec une base de données…


Voilà la trace de mon expérimentation pour les curieux

nicogiard@bespin:~/workspace$ date
lundi 25 juin 2012, 16:13:35 (UTC+0200)

nicogiard@bespin:~/workspace$ wget -qO- https://toolbelt.heroku.com/install.sh | sh
...

nicogiard@bespin:~/workspace$ play new playOnHeroku
~ _ _
~ _ __ | | __ _ _ _| |
~ | '_ \| |/ _' | || |_|
~ | __/|_|\____|\__ (_)
~ |_| |__/
~
~ play! 1.2.4, http://www.playframework.org
~
~ The new application will be created in /home/nicogiard/workspace/playOnHeroku
~ What is the application name? [playOnHeroku]
~
~ OK, the application is created.
~ Start it with : play run playOnHeroku
~ Have fun!
~
nicogiard@bespin:~/workspace$ cd playOnHeroku

nicogiard@bespin:~/workspace/playOnHeroku$ cp ../Procfile ./

nicogiard@bespin:~/workspace/playOnHeroku$ heroku login
Enter your Heroku credentials.
Email: monCompte@heroku
Password (typing will be hidden):
Authentication successful.

nicogiard@bespin:~/workspace/playOnHeroku$ heroku create --stack cedar
Creating falling-night-3220... done, stack is cedar
http://falling-night-3220.herokuapp.com/ | git@heroku.com:falling-night-3220.git
! New default stack: Cedar. To use Bamboo, run `heroku create -s bamboo`.

nicogiard@bespin:~/workspace/playOnHeroku$ git init
Initialized empty Git repository in /home/nicogiard/workspace/playOnHeroku/.git/

nicogiard@bespin:~/workspace/playOnHeroku$ git add .

nicogiard@bespin:~/workspace/playOnHeroku$ git commit -m "Initial Commit"
[master (root-commit) 502a8e7] Initial Commit
16 files changed, 364 insertions(+)
create mode 100644 Procfile
create mode 100644 app/controllers/Application.java
create mode 100644 app/views/Application/index.html
create mode 100644 app/views/errors/404.html
create mode 100644 app/views/errors/500.html
create mode 100644 app/views/main.html
create mode 100644 conf/application.conf
create mode 100644 conf/dependencies.yml
create mode 100644 conf/messages
create mode 100644 conf/routes
create mode 100644 public/images/favicon.png
create mode 100644 public/javascripts/jquery-1.6.4.min.js
create mode 100644 public/stylesheets/main.css
create mode 100644 test/Application.test.html
create mode 100644 test/ApplicationTest.java
create mode 100644 test/BasicTest.java
create mode 100644 test/data.yml

nicogiard@bespin:~/workspace/playOnHeroku$ git remote add heroku git@heroku.com:falling-night-3220.git

nicogiard@bespin:~/workspace/playOnHeroku$ git push heroku master
Counting objects: 30, done.
Compressing objects: 100% (22/22), done.
Writing objects: 100% (30/30), 38.06 KiB, done.
Total 30 (delta 1), reused 0 (delta 0)

-----> Heroku receiving push
-----> Play! app detected
-----> WARNING: Play! version not specified in dependencies.yml. Default version: 1.2.4 being used....
-----> Installing Play! 1.2.4.....
-----> done
-----> Installing ivysettings.xml..... done
-----> Building Play! application...
~ _ _
~ _ __ | | __ _ _ _| |
~ | '_ \| |/ _' | || |_|
~ | __/|_|\____|\__ (_)
~ |_| |__/
~
~ play! 1.2.4, http://www.playframework.org
~
1.2.4
Building Play! application at directory ./
Resolving dependencies: .play/play dependencies ./ --forProd --forceCopy --silent -Duser.home=/tmp/build_2eici4qw4ugfc 2>&1
:: loading settings :: file = /tmp/build_2eici4qw4ugfc/.ivy2/ivysettings.xml
~ Resolving dependencies using /tmp/build_2eici4qw4ugfc/conf/dependencies.yml,
~
~
~ No dependencies to install
~
~ Done!
~
Precompiling: .play/play precompile ./ --silent 2>&1
Listening for transport dt_socket at address: 8000
14:15:13,659 INFO ~ Starting /tmp/build_2eici4qw4ugfc
14:15:14,293 INFO ~ Precompiling ...
14:15:19,587 INFO ~ Done.
-----> Discovering process types
Procfile declares types -> web
-----> Compiled slug size is 26.5MB
-----> Launching... done, v4
http://falling-night-3220.herokuapp.com deployed to Heroku

To git@heroku.com:falling-night-3220.git
* [new branch] master -> master
nicogiard@bespin:~/workspace/playOnHeroku$ heroku open
Opening http://falling-night-3220.herokuapp.com/

nicogiard@bespin:~/workspace/playOnHeroku$ date
lundi 25 juin 2012, 16:18:20 (UTC+0200)

  2 Responses to “Une mise en production en moins de 5 minutes….”

  1. [...] Il y’a quelque temps, j’ai écris un article sur le déploiement d’une application Play Framework sur Heroku. [...]

Leave a Reply