Dreamforce2010 : avec le rachat d'Heroku, Salesforce se renforce dans le Paas
En mettant la main sur Heroku, Salesforce.com se dote d'une plate-forme applicative moderne conçue spécifiquement pour l'exécution d'applications ruby dans le cloud. La plate-forme d'Heroku héberge déjà plus de 100 000 applications ruby et devrait à terme pouvoir exécuter d'autres technologies comme des applications Javascript serveur ou des applications PHP.
Champion historique du Saas, Salesforce.com accélère sa transformation en un spécialiste du PaaS. A l’occasion de sa conférence annuelle Dreamforce qui ce tient ici à San Francisco, l’éditeur a annoncé l’acquisition d’Heroku, une société basée à San Francisco qui a développé une solution de PaaS pour les applications Ruby on Rails. Cette solution de Paas Ruby vient s’ajouter à la solution de Paas Java lancé récemment en bêta avec VMware sous le nom VMForce. L’architecture d’Heroku, largement masquée aux développeurs, s’appuie sur un cloud d’infrastructure open source basé sur des serveurs x86 sous Debian Linux.
Au niveau le plus bas de l’architecture d’Heroku figure une couche de base de données construite sur PostGresQL et frontée par une couche de cache «in-Memory» motorisée par memcached. Au dessus vient se greffer la partie «serveur d’application», fournie par une infrastructure distribuée baptisée Dynogrid. Chaque «Dyno» est un fait un conteneur motorisé par Debian sur lequel est instancié un interpréteur Ruby (MRI) et un serveur web, en l'occurrence le serveur "Thin" qui s’appuie sur trois librairies fondamentales (le parseur Mongrel, la librairie Event Machine - pour la gestion des entrées/sorties - et Rack -qui assure la liaison entre le serveur web et les frameworks Ruby comme Rails ou Sinatra). Les applications développées par les utilisateurs s'exécutent sur ces «dynos».
La distribution de la charge et des requêtes, l'une des clés du succès d'Heroku, s’effectue au travers d’une couche propriétaire développée par la société et baptisée erlang. Erlang assure la distribution des requêtes HTTP entrantes entre les différents «dynos» souscrit par l’utilisateur. Des dynos additionnels peuvent être instanciés à la volée par cette couche de distribution en cas d’augmentation brutale de la charge et peuvent être à l’inverse éteints lorsque la charge redevient normale.
Ruby aujourd'hui, Javascript serveur et PHP demain ?
Comme l’a expliqué Byron Sebastian, le CEO d’Heroku, la plate-forme construite par la société se concentre sur l’exécution d’applications Ruby, mais n’est pas limitée à ce seul langage. D’autres runtimes pourraient très bien être proposés à terme sur la plate-forme d’Heroku. Répondant à une question du MagIT, Sebastian a ainsi indiqué qu’une implémentation bêta de node.js existe aujourd’hui chez l’éditeur pour l’exécution d’applications serveurs Javascript, à l’instar de ce que propose un Joyent. L’approche «Dyno» d’Heroku ressemble d’ailleurs furieusement à celle des «accélérateurs» de Joyent. On peut ainsi imaginer à terme que la société propose des dynos capables d'interpréter d'autres langages tels que PHP.
Il est à noter que Salesforce n’exlut pas non plus de supporter d’autres langages que Java au dessus de VMForce. Le support de Jruby pourrait ainsi être proposé à terme dans VMForce, laissant le choix aux utilisateurs de la plate-forme sur laquelle il souhaitent faire tourner leur code Ruby. A l’inverse on pourrait très bien imaginer un Dyno faisant tourner le serveur d’application tcServer et le framework Spring (même si Salesforce et Heroku n’ont absolument pas mentionné cette possibilité dans les discussions que nous avons pu avoir avec les responsables des deux sociétés).
Terminons en signalant qu’en l’état la plate-forme d’Heroku s’appuie sur sa propre couche de base de données (à base de PostgreSQL) mais qu’il est aussi fort probable qu’une des premières intégrations entre la plate-forme de Salesforce et celle d’Heroku pourrait être la possibilité pour les développeurs de choisir entre cette couche et celle de Database.com, la base de données en nuage de Salesforce.