Vous aimez ce que vous lisez sur ce blog ?
Envie d'aller plus loin avec véritable formation d'expertise en Java ?
Venez suivre ma formation Masterclasse Expertise Java !

"Même un développeur experimenté a besoin de continuer à apprendre. Et dans cette formation... j'ai appris beaucoup !" - A.G., Java Champion

Sessions intra-entreprises sur demande : contact[at]mokatech.net.
Inscrivez-vous vite !

SpringOne, DayTwo - Keynote d'Adrian Colyer

La deuxième journée de la conférence SpringOne'09 s'est ouverte sur la Keynote d'Adrian Colyer.

Faisant preuve de beaucoup d'humour (sauce Monty Python) et accompagné d'une marionnette de canard (qui semble être un personnage récurrent de ses shows), il a rappelé le positionnement stratégique de SpringSource en entreprise : fournir les outils permettant de diminuer drastiquement le "time-to-live" (ou "time-to-value"), c'est-à-dire le temps entre l'identification d'un besoin métier et la mise en production du produit y répondant.

Reconnaissant que la productivité d'un département informatique dans son ensemble est directement dépendante de celle ses différentes équipes, SpringSource a élaboré une stratégie globale couvrant l'ensemble de la chaîne de production, du développement à l'exploitation. Si les développeurs en ont été historiquement les premiers bénéficiaires (Spring framework, Groovy, Spring IDE, TC server...), c'est maintenant au tour des équipes d'infrastructure et d'exploitation de se voir proposer disposer des outils puissants et des solutions innovantes.

AdrianColyer.jpg

Sofware as a Service

L'agilité est difficile à atteindre au niveau des datacenters.
Provisionner les serveurs, les installer et les configurer demande du temps, de la place et des ressources humaines importantes. Il n'est donc pas rare d'observer des délais de mise en place de l'ordre du mois, ce qui est très pénalisant pour les entreprises.

Pour résoudre ce problème, des solutions de SaaS (Software as a Service) émergent, qui proposent aux entreprises d'héberger leurs applications sur des environnements online, mutualisés, standardisés et surtout automatiquement clusterisés. Cette solution leur garantit une réactivité et une scalabilité maximales, ainsi qu'une meilleure maîtrise des coûts d'infrastructure, puisque seules les ressources réellement consommées (CPU, bande passante...) sont facturées.
L'offre la plus connue dans ce domaine est celle de Google : le Google App Engine (GAE). Celui-ci propose le support des langages Python et Java, et offre l'accès à toute la panoplie des services Google : l'authentification centralisée (SSO), l'accès à la solution de stockage BigTable, le support des opérations de type batch, l'interrogation du moteur de recherche, les APIs Google Maps, Google Documents...

SpringSource s'intègre dans mouvance en fournissant dans SpringSource Tools Suite (STS) un support pour les principales plateformes de Cloud Computing. Depuis l'éditeur de code, il est ainsi possible de déployer des applications directement sur GAE ; il suffit alors de quelques secondes pour obtenir une application accessible en ligne et parfaitement scalable. Ce cycle de livraison rapide est en adéquation avec les processus de développement agiles.

Pour prouver ses dires, Adrian Colyer a présenté une application web développée en Groovy et tirant parti des services offerts par Google (authentification et APIs Google Maps et Flickr). Après avoir testé l'application dans l'environnement local de GAE, il l'a déployée sur le Cloud en quelques secondes.
Puis il a attiré l'attention sur l'intégration récente du support de GAE dans Grails :

grails install app-engine
grails app-engine run
grails app-engine deploy

A noter que Grails possède un plugin qui permet de déployer des applications sur différents services de cloud.

grails install-plugin cloud
grails cloud-tools-deploy (après avoir configuré les params du cloud dans la config de Grails)

Alors, le paradigme Software as a Service est-il la solution universelle aux problèmes de scalabilité et d'agilité des infrastructures ?
En réalité, il montre ses limites très rapidement. D'une part, les environnements proposés sont standardisés et ne se prêtent donc pas à la personnalisation. D'autre part, les entreprises rechignent souvent à dépendre d'un prestataire extérieur, et acceptent mal de perdre le contrôle absolu sur leurs données. Le fait que la majorité des plateformes de Cloud Computing sauvegardent leurs données sur des serveurs sous juridiction américaine ne plaide pas non plus en leur faveur...
Toutefois, il peut s'agir d'une excellente solution pour de jeunes entreprises proposant des services en ligne : en cas de succès foudroyant, le Cloud leur garantit une scalabilité immédiate.

Datacenter as a Service

Les offres de Datacenter as a Service (DaaS), aussi appelées Platform as a Service (PaaS), proposent un service plus basique que le modèle SaaS, en ce sens que seule la plateforme matérielle (serveurs, bande passante) est mise à disposition du client, qui doit donc fournir toute la pile logicielle, généralement sous la forme d'une machine virtuelle. Si ce système demande davantage d'effort au client, il lui assure la maîtrise totale de l'environnement logiciel (au sens large : OS, serveurs d'application...), l'autorisant par exemple à utiliser des produits sous licence.
La principale offre de PaaS est Amazon EC2.

De la même manière que pour le Google App Engine, SpringSource Tools Suite (STS) fournit une interface simple pour piloter et superviser un ensemble de comptes EC2 : applications déployées, espace disque disponible...
Adrian Colyer en a d'ailleurs fait la démonstration, en pilotant un cluster serveurs TC Server et DM Server déployés sur différentes machines virtuelles. Malgré le déploiement distant, toute la puissante de STS était disponible, notamment la visualisation des interdépendances entre bundles OSGi dans le cas de DM Server. Impressionnant.

My very own Datacenter

Pour autant, les entreprises préfèrent souvent garder la maîtrise de leur infrastructure. Dans ce cas, il est possible de mettre en place une plateforme SaaS ou PaaS interne. Les progrès de la virtualisation rendent cette approche tout à fait réaliste dans les entreprises de taille raisonnable.

En particulier, le partenariat entre SpringSource et VMWare assure une parfaite intégration entre leurs technologies respectives. Il est ainsi possible de gérer un ensemble de machines virtuelles depuis STS (liste des machines disponibles, démarrage et arrêt des instances...).
Autre point intéressant, le VM LabManager permet de visualiser et d'interagir avec les différentes machines virtuelles qu'il gère... directement dans un navigateur web ! Comme le souligne Adrian Colyer, c'est le rêve de tous les schizophrènes : "Hey, I'm a PC, AND a Mac, AND a Linux !"

Long-needle injection

Le plus intéressant était bien entendu gardé pour la fin.

Adrian Coyler a décrit le futur de la gestion agile de plateformes selon SpringSource : la réplication du modèle d'IOC de Spring Framework à l'échelle de la plateforme.
Concrètement, il s'agirait de définir une plateforme cible sous la forme de services abstraits (par exemple une base de données, un load-balancer, plus un cluster de serveurs d'applications...), puis de l'implémenter dynamiquement en fonction des éléments adaptés à l'environnement courant. Par exemple, Hsqldb serait utilisé pour le développement, alors qu'Oracle serait utilisé pour la production ; une référence à la base de données ainsi sélectionnée serait alors injectée dans un cluster de DM servers, lui-même déclaré dynamiquement auprès du load-balancer adéquat...

Toutefois, l'injection de configuration est complexe.
Il faut par exemple pouvoir modifier dynamiquement l'URL de connexion à la base de données dans les configurations Spring des applications, ou auprès des serveurs d'application, et ce en traversant toutes les couches matérielles et logicielles (machine, serveur d'application, webapp). C'est ce qu'Adrian Coyler appelle de la "Long-needle injection" (injection avec une grande aiguille).

A terme, une entreprise pourrait se constituer une bibliothèque de templates de déploiement ("deployment blueprints") réutilisables et capitalisés, accélérant et rationalisant ainsi ses processus.


DeploymentBlueprint.jpg

Conclusion

SpringSource poursuit sa quête de l'agilité sur l'ensemble de la chaîne de production logicielle, de la conception au déploiement.
En multipliant les partenariats stratégiques avec les meilleurs acteurs du marché (VMWare, Terracotta, Zenika...), ils visent à intégrer les meilleurs outils, technologies et compétences existants. Et, si l'on se fie aux annonces et démonstrations réalisées à la SpringOne 2009, le résultat est plutôt encourageant.

Vivement SpringOne 2010 !


Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.