lundi 12 juillet 2010

Sophiaconf 2010 - Ruby On Rails

En tant que développeur java, il est important de regarder de temps à autre ce qui se fait chez les voisins afin de ne pas rester sur une certaine vision, voir comment une problèmatique se résoud dans une autre communauté.
Rails aura 2 conférences, une pas technique et l'autre technique.

Pourquoi Rails est génial ?

La première partie est faite par Camille Roux, jeune développeur qui pratique le développement Ruby depuis 1 an et a 3 ans de développement web derrrière lui. Pour les plus curieux, son site perso : http://www.camilleroux.com
Une question importante de se poser avant tout est : Qu'est ce qu'un bon framework ?
Camille nous présente un nuage important de critères, parmis eux : pas cher, rapide à développer, utilisé par beaucoup de monde, sécurisé, ...
Rails répond à tout ces critères.

Le langage à la base de Rails est Ruby, un langage interprété, multiparadigme (aussi bien object que procédural). Ruby a été crée pour être "un langage pour les hommes, pas pour les machines". En plus d'être multiplateforme, il est aussi multi-implémentation :
  • Ruby, la plateforme de base
  • JRuby, pour nous les développeurs java qui voulons réutiliser toutes nos bibliothèques
  • Rubinus, plateforme très prometteuse

Quelques chiffres sur Ruby :
  • 14 000 gem (librairies pacakgé et facile à utiliser)
  • 185 000 projet sur github
  • 10 ème langage le plus utilisé

Ruby est assurement un langage incontournable.
Ruby On Rails est un framework basé sur ce langage. On peut l'appeler ROR ou Rails pour les intimes. Ce framework a été initié par un développeur au nom imprononcavle que toute la communauté nomme DHH.
Rails posséde une philosophie basé sur le fameux "convention over configuration". On ne veut pas passer du temps du temps sur la config de divers fichiers (parce que c'est assez chiant à faire), on préfère obéir à des conventions comme nommer sa table de la même façon que son objet par exemple. Un point de cette philosophie est l'agilité : on aime le déploiement facile, et l'abondance de test.

Qu'est ce qui est si génial en Rails ?
  • Projet construit : on ne se casse pas la tête. Un autre avantage est qu'il sera plus facile à intégrer un nouveau developpeur car il connait déjà les conventions.
  • Migration : on créer un classe qui décrit les tranformations
  • Active record : les méthodes d'opérations comme save sont appelées sur l'objet lui même
  • Scafolding : Génération de code MVC. Très pratique pour une développer rapidement et facilement une interface d'admin

  • Environnement : Rails permet d'en définir facilement plusieurs : test, dev, prod, autant qu'on veut... On peut aussi avoir des gems spéciaux pour un env (test par exemple, log différents, base différente bien sûr, ...)

  • Sécurité : il est facile d'ajouter de la sécurité à son application rails
  • Javascript : Prototype est disponible. Rails donne une certaine abstraction dans l'utilisation de javascript, il est pa exemple possible de faire un bouton de rafraichissement sans faire de javascript, rails le gère pour nous.
  • Test : Avec Rails la partie test est très importante et fait parti du projet. Une partie des tests sont générés à la création du projet. Rails permets d'avoir du code testable tout au long du projet.

D'ici environ un mois, sortira Rails 3 :
Rails 3, c'est la fusion de Rails 2 et de Merb
Cette fusion des 2 projets donne un résultat très confortable au développement.

Au programme de cette 3 ème version :
  • Modularité
  • Bundles
  • Performance
  • Support du html 5


Certains reprochent à Ruby d'être lent. Qu'en est il vraiment ?
Il faut d'abord savoir qu'il y a beaucoup de benchmark qui disent beaucoup de choses, et sont parfois contradictoire. Selon de bons benchmark, il serait à la hauteur de python et de php.
Mais les performances sont elles vraiment si importantes ?
Après tout, ce qui est le plus important, c'est la vitesse de développement, la fiabilité, la facilité de maintenance. De plus, Ruby est soutenu par une communauté. On peut ainsi trouver un gem pour chacun de ses développement.
La forte présence de cette communauté permet un appentissage facilité par des forms, des tutoriaux, des screencast, des conférences comme celle çi, et bien sûr des livres

Qui utilise Rails ?

Beaucoup de sites, dont Yellow Pages (les pages jaunes américaines), White Pages, Brightlite, Github, ....
Notons que la plupart de ces sites, sont à fort traffic et que rails tient la charge.
Il y aussi des entreprises comme Amazon qui dont du ruby, même si on ne sait pas vraiment ce qu'il en font.

Au niveau hébergement, il y a aussi de bons services cloud :
  • Engine Yard : Permet de déployer sur Amazon EC2 et S3, de redimensionner à chaud le volume de machine. Pour déployer, il suffit de lui indiquer où est le repository github du code. Il permet aussi de faire le suivi de l'activité et de faire des backup
  • Heroku : 2 lignes de commandes suffisent à déployer gratuitement. Lors du déploiement, il s'occupera de télécharger les gems et leur dépendances. On pourra aussi régler le volume de machines ou s'occuper de la configuration des machines. Bien sûr, toutes les possibilités ne sont pas toutes gratuites.

Et pour le suivi de votre application, New Relic s'occupe du monitoring.

Exemple d'un succès de Rails :

Yellow Pages, un site web à très fort traffic : 1500 req/sec.
Il y a quelques années, ils étaient en JavaEE avec des EJB et connaissait des problèmes de design et de scalabilité. Le code était de 125 000 lignes et ne contenait aucuns tests.
En 2007, ils ont adopté Rails et ont refait entèrement leur site avec.
Pour des performances égales, leur code est passé à 20 000 lignes en comptant les tests.
Cette refonte, a pris 3 mois avec une équipe de 5 développeurs.
Rails est un framework qui plait, c'est d'ailleurs pour celà qu'il est copié : Grails ou Play!
Dans la salle quelques retours disent qu'ils n'est pas facile de faire du Ruby/Rails sur Windows. Git ne facilite pas non plus le problème.

Camille nous dira que Git n'est pas tout obligatoire, mais qu'il s'agit d'un produit que la communauté ruby adore.
Et pour finir, selon Camille, être développeur Ruby, c'est comme être un guerrier avec un sabre laser : ce sont des passionnés qui en font et qui font vivre.

Acte 2

Pour la 2ème partie de double présentation, c'est au tour de Maxime Menant de s'y coller. Jeune aussi, développeur de 25 ans et qui travaille avec Camille. Il nous fait aussi part de l'adresse de son blog : http://blog.maximemenant.fr
"On vous a dit pourquoi c'est génial, maintenant on va vous le montrer"

Ruby qu'est ce que c'est ?
  • Libre
  • 100% objet
  • Interprété
  • Multii-Paradgime
  • Syntaxe proche langage naturel
  • Code compact
  • Méta programmation et c'est surtout ce qui fait sa puissance

Nous voyons d'abord les bases du langages : variables, contantes, accesseurs, boucles, condition, symboles, tableau, hashmaps, définition de classe, mixins.
Je ne rentrerai pas dans les détails sur ces derniers points. Ruby offre un certain confort d'écriture.
Comme il l'a été dit, il existe plusieurs implémentations :
  • JRuby
  • IronRuby : pour .net
  • MacRuby : Objective C , maintenu directement par Apple
  • Rubinus, la nouvelle jvm ruby.

Nous voyons un exemple de JRuby de création d'une frame et de son affichage. Le code mélange de Java et Ruby. Dans ce seule l'instantiation change :

frame = java.swing.JFrame.new()

Le reste sera comme en java.

Zoom sur les Gems.

C'est un peu comme des .deb : ça s'installe facilement (gem install XXX) et ça installe aussi les dépendances. Bien qu'il existe beaucoup dendroits où en trouver, la référence est http://www.rubygems.org

Rails s'appuie sur 2 principes :
  • DRY : Don't Repeat Yourself
  • Convention Over Configuration

Au niveau architecture, on s'appuie sur les principes de REST et de MVC.
S'en suit, un coding live, où Maxime développera une application de gestion de tâches pour d'un projet.
Le code sera bien sûr codé sous Rails 3 dont la release finale verra bientôt le jour.
En ligne de commande, le projet est crée avec toutes sa structure.
Une autre ligne suffira à créer une entitée Projet avec son interface d'administration et ses tests.
Bien sûr, par défaut, il n'y a pas de validation. Ces régles se définissent facilement et rapidement dans le code. Des "validates" seront ainsi posé sur la présence ou la taille de certains champs.

Et pour sécuriser ? 2 lignes suffiront.

Cette présentation est assez convaincante de la puissance de Rails. On voit aussi, que Play! S'en inspire beaucoup et en tire ce qu'il y a de bon. Ce dernier était d'ailleurs lui aussi à la sophiaconf, présenté par Nicolas Leroux, mais malheureusement en parrallèle de cette session.

Aucun commentaire:

Enregistrer un commentaire