J’ai assisté pour commencer par une présentation très riche et très intéressante des services d’Amazon et ensuite de la solution open-source Elastic Grid.
Amazon offre des services en location vous permettant de louer de l’espace de stockage, de louer de la puissance machine, de la base de données ou encore de louer un système de messages. Le business model est similaire à ce que propos finalement une compagnie d’électricité : vous ne payez que la consommation.
Les services disponibles :
– Amazon Simple Storage Service (S3) est un espace de stockage repliqué automatiquement.
– Amazon Elastic Compute Cloud (EC2) est une solution de location de puissance machine. Vous vous retrouvez avec la possibilité d’avoir 3000 serveurs le temps d’un week-end par exemple pour y faire tourner votre serveur d’application… Windows Server 2003, Linux RedHat Enteprise, Debian, Ubuntu, OpenSolaris…
– Amazon SimpleDB offre une interface de type web service (REST ou Soap) pour stocker, rechercher et indexer des données, le tout basé sur EC2 et S3.
– Amazon CloudFront est une offre d’hébergement pour les données statiques des sites webs commes les images ou les CSS. Il faut savoir que sur les gros sites internet, il est plus intéressant de faire héberger les données statiques en dehors du serveur afin d’économiser la bande passante et d’éviter de solliciter un serveur d’app ou PHP pour charger des images.
– Amazon Simple Queue Service est un web service qui permet de poster et de récuperer des messages, comme sur une Queue. Les messages sont limités à 8KB au format texte, une application de ce système est de permettre à n’importe quelle de vos applications de s’échanger des événements simples.
La communauté des utilisateurs de AWS (Amazon Web Service) est de plus de 440 000 développeurs. Il y avait en octobre 2008 plus de 25 milliards d’objets dans le cloud Amazon S3. En octobre 2008 il y avait 800 millions d’objets stockés dans S3… L’activité de la plateforme AWS est deux fois plus importante que la plateforme classique Amazon.com… qui tourne elle-même sur EC2 et S3…
Un site de partage de photos comme SmugMug.com a réalisé une économie de 500 000 USD en arrêtant d’utiliser un datacenter classique pour basculer vers un système basé sur S3… Autant dire que lorsqu’un financier lira ses lignes, j’espère que nous aussi nous arrêterons de faire héberger un site de tirage photos chez un prestataire classique…
S3 est asez intelligent pour se rendre compte aussi de l’usage des fichiers que vous y placer. S’il s’avère qu’un fichier est souvent demandé, il va alors le répliquer dans le nuage afin que son accès soit plus rapide. Il va aussi le déplacer des USA vers l’Europe si finalement la majorité des clients sont en Europe.
Cher lecteur, imagines ton site web entrain de déménager pendant la nuit vers l’Asie car des Indiens lisent tes articles, puis qu’ensuite il soit en Europe quelques heures après… Vive les déménageurs virtuels !
Du côté des adresses IP, le moteur d’Amazon a pensé à tout. Vous pouvez louer pour une partie de jeux en réseaux des serveurs, avec un lot d’adresse IP, le temps d’un week-end.
Le site Animoto propose un système de création de slideshows avec vos photos. En bref : vous mettez les photos de l’anniversaire de votre fille, une petite musique, et Animoto réalise un montage automatiquement. Jusqu’ici tout va bien. Animoto utilise 80 serveurs sur Amazon EC2. Un lundi matin, un développeur a l’idée de coder un gadget pour FaceBook. Ce gadget a pour effet de multiplier les visites du site par 10 en quelques heures. 2 jours plus tard, le moteur d’Amazon est sollicité et les administrateurs d’Animoto activent alors 3500 instances d’EC2… Pensez-vous honnêtement que cela serait possible en vrai dans un datacenter ? en 2 JOURS !!!
Pensez à un site qui vend des skis et des snowboards. En février, 50 serveurs. En juiller, 1 seul serveur… Amazon ne vous fait payer que ce que vous utilisez. De même qu’en hiver la facture d’électricité est plus élevée, ce site de ski a amélioré sa rentabilité avec peu d’efforts.
Enfin le service EC2 a été lancé en Europe il y a quelques jours, et donc il n’y a plus de raisons de ne pas le tester. Il vous faut une carte bleu et c’est tout.
Dans le future, les gens d’Amazon souhaitent améliorer les fonctions de monitoring, de répartition de charges et de montées en charge automatiquement.
Elastic Grid
Jérôme Bernard prend ensuite la parole afin de présenter Elastic Grid, projet open-source qui permet d’ajouter de la flexibilité intelligente au moteur d’Amazon.
Tout d’abord, si vous commencez par vous même à déployer votre serveur avec votre application, il faut savoir que de bonnes connaissances Unix seront nécessaires. Il faut créer une image Amazon (AMI) qui contient le système d’exploitation et votre serveur installé. C’est ce principe d’image (similaire à une ISO) qui permet ensuite à Amazon EC2 de monter en charge rapidement et facilement.
Jérôme commence par faire la démonstration d’Elasticfox un plugin pour firefox qui permet de piloter ses instances sur Amazon directement via son navigateur. Je vois qu’en quelques mois la communauté a été très active et qu’en effet ce plugin permet de voir son système démarrer, comme il l’a montré durant la démonstration.
L’image EC2 AMI est donc un bootstrap.
Une limitation d’Amazon EC2 est l’absence de multi-casting. Comme jérôme l’explique, cela peut poser des problèmes pour les applications réparties basées sur des solutions comme JGroups, bien que JGroups soit aussi capable de faire du TCP (et pas que de l’UDP). Il faut ensuite faire attention que le système de fichier par défaut ne doit pas être considéré comme non résilient, et qu’à tout moment nous pouvons perdre nos fichiers. Pour cette raison, il faut associer l’espace de stockage Amazon S3 à une instance EC2 pour que les données qui doivent être persistées soient stockées dans le cloud.
La solution Elastic Grid qu’il présente est donc un moteur qui améliore la productivité du développeur en fournissant des services de provisioning, de déploiement et de développement pour le développeur. Sans la solution Elastic Grid, ce sera à vous de créer votre image AMI à chaque fois, de vous débrouiller pour déployer et gérer votre image. La solution Elastic Grid améliore la productivité en utilisant un moteur unique basé sur Rino et JNI afin de piloter les instances EC2. Il est ainsi capable de redémarrer automatiquement une application qui est tombée, de doubler le nombre de machines afin de répondre à un pic de demande ou au contraire, de réduire le nombre de machine afin d’économiser de l’argent.
Voici comment je vois ce concept : je rentre chez moi, les lumières s’allument automatiquement, la télé et la musique aussi. Je consomme alors 5Kw. Ensuite rentre mon épouse et les enfants. Le système le détecte et active alors les lumières des chambres, le chauffage de la salle-de bain ect. Finalement ma maison s’adapte au nombre d’occupant. Arrive la nuit, tout le monde dort, le système se charge alors de réduire la consommation d’électricité.
L’un des concepts d’Elastic Grid est donc ce provisioning intelligent basé sur l’utilisation des ressources.
De facto, la solution donne un niveau de service certifié (SLA) et permet de répondre aux mauvaises surprises sans intervention humaine.
Jérôme termine par une démonstration basée sur Spring dmServer. Tout d’abord définir où se trouve l’image de dmServer, l’application à déployer et Elastic Grid se charge de tout.
Pour terminer Jérôme parle de la notion de CloudBursting. Ce principe serait d’offrir la possibilité temporaire d’augmenter la capacité machine de votre infrastructure en s’appuyant sur EC2 et S3. Il faudrait qu’il nous explique un peu plus cette idée car c’est intéressant.
Bref j’ai bien aimé cette présentation qui m’a donné une nouvelle vision pour l’avenir sur l’hébergement des applications.
Site d’Elastic Grid:
http://www.elastic-grid.com