Le buzz autour du Cloud n’est pas nouveau, le buzz autour du développement sur le Cloud un peu plus. C’est un sujet qui nous intéresse particulièrement chez Kalistick pour deux raisons. La première est que l’objectif de notre solution est d’améliorer le processus de livraison, du développement au déploiement en passant par les tests, ce qui rejoint aussi l’objectif du développement sur le Cloud.
L’autre raison est liée à notre propre infrastructure. La plateforme Kalistick a été conçue dès le début (2007) pour fonctionner en mode SaaS (Software as a Service) et nous avons porté cette plateforme sur le Cloud en 2010 avec deux objectifs : mieux supporter la charge liée à nos analyses de code, et améliorer notre propre processus de livraison en profitant de la flexibilité du Cloud (nous proposerons d’ailleurs prochainement un retour d’expérience sur ce point).
Nous menons donc une veille active sur le thème du développement sur le Cloud, et vu l’emballement des annonces sur ce sujet ces dernières semaines, il nous parait intéressant de proposer une synthèse de l’offre existante et d’aller au-delà du buzz twittosphérique pour montrer ce qu’apporte concrètement ce type de solutions.
Ce premier article vise à clarifier et introduire les concepts-clés du développement sur le Cloud afin d’en dresser un panorama global du marché en s’intéressant plus particulièrement aux solutions annoncées ces dernières semaines dans l’écosystème Java : Amazon Elastic Beanstalk, CloudBees, eXo Cloud IDE, … Les prochains billets se focaliseront sur certaines de ces solutions ou certains types d’utilisations.
Préambule
Avant de présenter les usages et solutions autour du développement sur le Cloud, quelques mots pour préciser le contexte.
Tout n’est pas Cloud
Le terme « cloud » semble valoir cher sur le plan marketing. Ces derniers temps donnent l’impression que tout ce qui se trouve côté serveur est du Cloud ; par exemple un service « online » (ou SaaS) est forcément du Cloud. Ou quand Microsoft fait de la publicité sur des médias nationaux, c’est pour vanter le « Cloud-Power ».
Pas sûr qu’il y ait une définition précise qui fasse l’unanimité, le concept est assez vaste. On considérera ici le Cloud comme une infrastructure avec les caractéristiques suivantes :
- l’élasticité (scaling), à savoir la capacité à faire évoluer l’infrastructure en ajoutant/supprimant facilement des ressources matérielles en fonction des besoins
- Abstraction de l’infrastructure : la localisation géographique et les spécifications matérielles ou logicielles (virtualisation, mutualisation, …) sont transparentes pour l’utilisateur
- Coût à la demande. L’élasticité à la demande des infrastructures Cloud fait qu’elles sont généralement facturées à l’usage
Une application ne devient pas Cloud par magie
Il ne suffit pas d’installer une application sur un Cloud pour qu’elle profite instantanément des avantages du Cloud. De la même manière que toute application ne peut pas être clusterisée sans modifier son implémentation. Un hébergement sur le Cloud nécessite généralement une manière de développer différente : ubiquité des données, résistance aux pannes, capacité de montée en charge, …
dev@cloud et run@cloud
« dev@cloud » et « run@cloud » sont des termes issus du vocabulaire CloudBees, qui sépare son offre Cloud en deux : DEV@cloud pour les services ciblant les développeurs (SCM, intégration continue, …), RUN@cloud pour l’exécution de l’application. Nous reprenons ces termes (avec leur accord) pour mieux segmenter ces 2 types d’utilisation du Cloud ; voici comment nous les positionnons :

Nous définissons le dev@cloud comme un ensemble de services hébergés sur du Cloud et facilitant le processus de développement : édition du code (IDE), intégration continue, assurance qualité (où se positionne Kalistick), bug tracker, … Nous incluons également une partie du run@cloud dans le dev@cloud pour prendre en compte les tests et le déploiement de l’application dans son(ses) environnement(s) de test. Nous verrons en effet qu’il existe des solutions pour déployer automatiquement un livrable généré par l’intégration continue sur un environnement d’exécution sur le Cloud.
Toute la chaîne du développement à la livraison peut donc être réalisée sans recourir au moindre serveur interne et en profitant des avantages du Cloud : provisionnement à la demande des ressources, paiement à l’usage, ubiquité, multiplicité des environnements, …
Nous allons maintenant parcourir la pile de services que peut fournir le dev@cloud en positionnant les différentes solutions du marché. Celles-ci sont de plus en plus nombreuses. On voit bien que les éditeurs disposant d’une offre autour du cycle de développement orientent de plus en plus leur stratégie vers le Cloud, quitte à simplement remarketer leurs produits pour les étiqueter « Cloud ».
NB : le panorama des solutions ne se veut pas exhaustif, il est notamment centré autour des développements Java, et restreint aux produits qui proposent un espace d’évaluation ciblant les développeurs.

Pingback: Mix-IT, can't wait for the next one!