By

Une mise en production en moins de 5 minutes....

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% (2222), done. Writing objects: 100% (3030), 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) `