09 novembre 2009

Google Wave Tech Talk à Zurich

Lundi 2 novembre 2009, j’ai eu le plaisir de participer au Google Wave Tech Talk à Zurich (merci Google). Juste pour rappeler ce qu’est Wave, Stephanie Hannon et Lars Rasmussen nous ont montré la vidéo "What is Google Wave?".

L’équipe de Google Wave a ensuite enchaîné sur une présentation des gadgets (exécution limité à une Wave) et robots (interaction avec la Wave). Même si les gadgets sont amusant et parfois utiles (ex : sudoku à plusieurs, planificateur de vacances, sondage à la minute, …, http://wave-samples-gallery.appspot.com/) ce qui m’intéressent plus particulièrement dans ce domaine ce sont les robots. Un robot peut lire le contenu d'une Wave à laquelle il participe, il peut en modifier le contenu, il peut aussi ajouter ou supprimer des participants et finalement il peut créer de nouveaux blip (un bloc de conversation) et de nouvelles Wave. Un robot peut-être considéré comme un participant et effectuer un grand nombre des actions qu’un participant peut faire. Ça fait peur, mais je pense que ça sera utile.
Personnellement, j’espère que les équipes de Blogspot (qui héberge ce blog - merci) et de Google Wave vont rapidement collaborer pour développer Bloggy le robot qui me permettra de gérer mon blog et les commentaires depuis Wave, tout en lisant mes Twitt avec Twitty, mes flux RSS avec RSSy ???, …

Le deuxième volet de cette présentation portait sur le protocole utilisé par Wave (http://www.waveprotocol.org/). Le "Google Wave Federation Protocol" est une extension du protocole XMPP, qui permet communication (synchronisation de Wave) quasi instantanée entre deux serveurs. Une Wave est un document XML que l’on peut schématiser comme dans l’image ci-dessous.
Schema XML Wave

Cette structure simple permet de stocker une conversation (Wave) composée de Wavelets, composées elles-mêmes de blip ou toutes autres types de document (j’ai déjà mis des documents word, des phtos, … dans une Wave), de gérer les droits, mais aussi de rejouer tout l’historique de sa création.

Pour conclure cet article je peux dire que ce protocole ouvert me semble prometteur, car Google a la force d’imposer un nouveau standard, mais selon l’équipe de Google il nécessitera encore beaucoup de réflexion et d’amélioration pour garantir sa stabilité et sa performance.

Ma première définition du "Cloud Computing"

Dans mes articles précédents, j’ai défini les 5 concepts de base du "Cloud Computing". Ces concepts sont repris dans les nombreuses définitions relevées par les auteurs des articles [G_09, VRCL_09]. Ce que j’ai constaté en lisant ces derniers, c’est que les notions de "service", de "scalabilité" et de "virtualisation" sont des concepts primordiaux qui ressortent dans plus de 50% des définitions. Deux autres notions sont moins souvent mentionnées, mais elles ne me semblent pas anodines. Pour la première, il s’agit de l’idée de "centralisation" relevée par Aaron Ricadela [G_09], qui me rappelle le concept de terminal/serveur. La seconde est encore trop souvent mise de côté, mais elle va devenir la clé pour choisir un prestataire, il s’agit de la notion de "service-level agreements" (SLA). Le SLA est une notion qui devient importante lors de la première panne. Ces pannes sont rares, mais peuvent bloquer des millions d’utilisateurs et font donc généralement l’objet de milliers d’articles, et de millions de Twitt.

En me basant sur mes lectures, ainsi que sur mes réflexions, je vais donc vous donner ma première définition :
Le "Cloud Computing" est un méga ordinateur (scalable et élastique), pour lequel on ne paie que ce que l’on consomme. Il héberge des services (software, hardware ou middleware) que l’on accède depuis l’internet.
Une version mise à jour de cette définition est disponible dans mon article sur la pyramide du "Cloud Computing"!

C’est tout simple, mais ça m’a pris beaucoup de temps et cette définition a fait l’objet de nombreuses discussions avec mes collègues. Avec l’avancement de mon mémoire d’ingénieur durant les 6 prochains mois, je pense que cette définition risque encore d’évoluer !

[G_09] Jeremy Geelan, Twenty-One Experts Define Cloud Computing, http://cloudcomputing.sys-con.com/node/612375, publié en janvier 2009, consulté le 12/08/2009
[VRCL_09] Luis M. Vaquero, Luis Rodero-Merino , Juan Caceres, Maik Lindner, A Break in the Clouds: Towards a Cloud Definition, publié en 2009

07 novembre 2009

Public et Private Cloud

Le cinquième concept du "Cloud Computing", que j’ai cité dans mon article Tout n’est pas "Cloud"! Le "Cloud Computing" c’est …, est l’internet (au sens réseau IP). De manière générale je peux dire qu’un "Cloud" est composé d’un ou plusieurs data-centre (n’importe où dans le monde) interconnectés par un réseau haut débit. Ce type de solutions est aussi communément appelé "Public Cloud".

Les "Clouds" public sont généralement exploités par des sociétés tierces comme Amazon, Google, Microsoft, GoGrid, etc. Ce sont des infrastructures mutualisées et partagées par un grand nombre d’utilisateurs. Les "Clouds" public permettent de réduire les prix grâce aux économies d’échelles et les risques par la multiplication des infrastructures. Ce modèle permet aussi d’assurer les capacités de scalabilités et d’élasticités que doit offrir le "Cloud Computing". Le "Cloud" public étant hébergé dans un environnement partagé et exploité par une société tierce, son exploitation peut poser un certain nombre de problèmes comme :
  • La confidentialité des données peut-être mise ne danger par les autres utilisateurs.
  • En fonction d’où sont hébergées les machines, certaines lois peuvent porter un préjudice à l’utilisateur [AFG_09].
  • Les performances ne sont pas constantes, car dépendantes de l’activité des autres utilisateurs.

Les "Clouds" privés sont des solutions dédiées à un client. Ils sont hébergés soit au sein de l’entreprise ou chez un prestataire de services (infrastructure dédiée). Le client a par conséquent un contrôle total sur ses données, il maîtrise la sécurité et bénéficie d’un niveau de service garanti. Par compte, les "Clouds" privés sont souvent limités dans leurs capacités techniques.

Les "Clouds" hybride combinent les deux types de "Cloud". Ce modèle permet de garantir la sécurité et la confidentialité des données tout en offrant la possibilité d’absorber une plus grande charge de manière temporaire. Ils sont généralement utilisés pour absorber les piques de charge. Le problème majeur de ce modèle est le transfert des données entre les deux solutions.

En résumé je peux dire que les termes public et privé ne définissent pas forcément ou se trouve physiquement le "Cloud", même si souvent le terme "public" connote que la solution de "Cloud Computing" est hébergée quelque part sur l’internet et le terme "privé" qu’elle est hébergée au sein de l’entreprise, mais quel est la nature de son contenu.


[AFG_09] Michael Armbrust, Armando Fox, Rean Griffith, Anthony D. Joseph, Randy H. Katz, Andrew Konwinski, Gunho Lee, David A. Patterson, Ariel Rabkin, Ion Stoica et Matei Zaharia, Above the Clouds: A Berkeley View of Cloud Computing, http://www.eecs.berkeley.edu/Pubs/TechRpts/2009/EECS-2009-28.html publié en février 2009

06 novembre 2009

Virtualisation

Je continue ma série par la notion de virtualisation, une notion qui est de plus en plus employée en informatique.
Le concept de virtualisation, d’une manière générale, offre une vue logique plutôt que physique de la puissance de calcul, de la capacité de stockage, et des autres ressources informatique. Elle permet de faire tourner sur une même machine physique une ou plusieurs machines logiques, ce qui permet de diminuer le gaspillage des ressources. Ces machines logiques peuvent fonctionner avec des systèmes d’exploitation différents. Nous pouvons donc faire tourner virtuellement un Linux sur une machine Windows et vice versa.
La virtualisation découple le système d’exploitation et les applications du système physique sur lequel ils fonctionnent. Ce principe permet soit de les porter sur des nouveaux environnements physiques, soit de les migrer d’une machine à une autre. La virtualisation offre aussi des mécanismes capables de capturer l’état de la mémoire vive, ce qui accélère et simplifie le déplacement ou la duplication d’une instance de machine virtuelle.
En virtualisant les différents éléments hardware d’une machine physique, il devient alors très facile d’augmenter ou de diminuer la taille de chacun de ces éléments en fonction des besoins du moment.

05 novembre 2009

Scalabilité et d’élasticité

Le troisième concept mentionné dans mon article Tout n’est pas "Cloud"! Le "Cloud Computing" c’est … est l’"élasticité". Quand on parle de "Cloud Computing", cette notion est souvent associée à la scalabilité. Je vais donc vous donner mon point de vue et mes défintions sur ces notions.

Le concept de scalabilité et d’élasticité offrent à l’utilisateur l’impression d’avoir en permanence des ressources de calcul et/ou de stockage illimitées [MG_09]. Ces ressources peuvent être facilement et rapidement ajoutées ou retirées, de manière automatique parfois, afin de répondre aux besoins de l’utilisateur.
La scalabilité est la capacité d’un système à s’adapter aux dimensions du problème qu’il a à traiter [1]. C'est-à-dire que la puissance de calcul, la mémoire ou le stockage utilisé par le système peuvent facilement être augmentés ou diminués en fonction des besoins.
L’élasticité est l’aptitude d'un corps à reprendre, après sollicitations, la forme et les dimensions qu'il avait avant d'être soumis à ces sollicitations [2]. Dans notre cas le "corps" est le système informatique et les "sollicitations" sont les besoins en matière de puissance, de mémoire ou de stockage.
L’élasticité permet donc d’automatiser le mécanisme de scalabilité des ressources informatique mise à disposition sur le "Cloud Computing".

[1] CNAM, Cours CMSL - Icssea 2001, http://deptinfo.cnam.fr/CMSL/icssea/icssea2001/cours.html, publié en décembre 2001, consulté le 17/10/2009
[2] larousse.fr
[MG_09] Peter Mell, Tim Grance, Draft NIST Working Definition of Cloud Computing (V15), publié en août 2009

04 novembre 2009

Pay as you go

Je continue ma série avec un deuxième concept. Le concept de "pay as you go" permet à l’utilisateur de payer que ce qu’il consomme réellement sans forfait minimum. Le prix est donc calculé à l’aide de ratios tel que processeurs par heure, giga-octets de disques par mois, etc. Cela permet de réduire drastiquement les coûts liés aux infrastructures informatiques.
Selon Sun et AMD dans leur live "Virtualization for Dummies" [GS_08] seulement 10 à 15% de la puissance des machines sont utilisés à l’heure actuelle. Même sous utilisées, ces machines consomment de l’énergie et elles occupent de la place inutilement. Cette sous utilisation est courante dans les entreprises, mais elle est nécessaire pour répondre à des piques de demandes.

Les graphiques ci-dessous illustrent les différents cas de sous et de sur utilisation des ressources informatique. Le premier graphique ci-dessous présente le cas d’une société qui a les ressources informatique pour absorber tous les piques. Les zones grisées montrent la part de budget perdue dû à une sous utilisation des ressources. Cette part dépasse généralement les 50%.
Sur capacité

Ce deuxième graphique, présente le cas d’une société qui ne peut pas absorber tous les piques. Cette compagnie risque de perdre des clients car ces derniers ne seront pas satisfaits de la prestation offerte. Les zones grisées montrent la part de temps où les capacités informatique ont été sous-estimées. Cette zone est généralement difficile à estimer d’un point de vue technique, mais encore plus d’un point de vue budgétaire.
Sous capacité

Finalement, ce dernier graphique montre le cas idéal. La société dispose toujours de la capacité demandée et elle ne paie que pour ce qu’elle consomme.
Capacité idéale

En conclusion, je peux dire que le "Cloud Computing" avec son modèle économique "pay as you go" permet d’éviter le gaspillage des ressources informatique et donc diminuer les coûts d’exploitation lié à l’informatique.

[GS_08] Bernard Golden, Clark Scheffy, Virtualization for Dummies, publié en 2008



03 novembre 2009

Service

Dans mon article précédent : Tout n’est pas "Cloud"! Le "Cloud Computing" c’est …, j’ai mentionné les 5 concepts qui font selon moi le "Cloud Computing". Je commence donc une série d’article sur ce concept.

Service : usage que l'on peut faire de quelque chose [1]. En trente ans, l’informatique a été développé afin de devenir comme l’eau, l’électricité ou le téléphone un service.
Avec le développement du web durant les années nonante, des startups ont commencé à proposer aux entreprises de louer des applications métiers en ligne au travers d’interfaces web simple ou d’une interface type client-serveur [P_09]. Ce nouveau modèle d’affaire a été appelé "ASP" (Application Service Provider). Pour les clients, l’"ASP" permettait de se débarrasser de la problématique d’exploitation, souvent lourde et coûteuse, de leurs applications. Ces startups ont aussi permis l’accès aux PME à des solutions comme Oracle General Ledger ou toutes autres solutions coûteuses et difficiles à installer, pour un prix moindre grâce au partage du coût des licences et des ressources informatique entre plusieurs clients.
Avec le développement du concept de "client riche" durant la première décade des années deux milles, les solutions type "ASP" ont été remplacées par des solutions appelées "SaaS" (Software as a Service). Le "client riche" est une évolution des "clients légers" ou pages web (utilisé par certains "ASP") qui intègrent les fonctionnalités des "clients lourds" ou applications de type client-serveur (utilisé par les autres "ASP"). Le "client riche" est utilisé dans le browser et il met en œuvre des technologies tel qu’AJAX, Flex, WPF, etc. pour afficher les pages web et reproduire le comportement des applications de type "client lourd". Le terme "RIA" (Rich Internet Application) est aussi communément utilisé pour désigner les applications de type "client riche". Salesforce.com, docs.google.com, zoho.com ou Yahoo ! mail sont considérés comme des "SaaS".
Le concept de "SaaS", a ensuite été adapté pour l’utilisation à distance de hardware "HaaS" (Hardware as a Service) ou "IaaS" (Infrastructure as a Service) grâce au développement de la virtualisation et des RIA. Ce concept permet d’administrer et exploiter un "data centre" virtuel hébergé sur le "Cloud". Avec ces services l’entreprise cliente ne paie que ce qu’elle utilise. Ce type de service évite aussi à l’entreprise les désagréments liés à l’exploitation d’un "data centre", tel que la redondance des infrastructures, la sécurité au sens large, les piquets, etc. Ce modèle économique permet aussi de diminuer les couts en matière d’infrastructure et de ressources humaines, pour l’entreprise cliente. Amazon EC2 est des acteurs majeurs de ce secteur du "IaaS".
Afin de répondre aux besoins des développeurs informatiques, qui ne soucient guère des problèmes de hardware et d’infrastructure, le concept de "? as a Service" a été adapté selon les mêmes principes que pour le "SaaS" et le "IaaS" dès 2008 [2, 3], pour leur offrir une plate-forme d’hébergement d’applications en ligne. Ce type de solution est communément appelé "PaaS" (Platform as a Service). L’architecture technique des "PaaS" repose en générale sur une couche appelée "middleware" qui permet aux développeurs d’applications de faire abstraction du système sur lequel leur application tournera. Comme pour le "SaaS" et le "IaaS" le développeur accède à sa plate-forme au travers d’internet. Microsoft Azure et Google App Engine sont deux solutions de type "PaaS".
Avec le développement du web, des RIA et la mise en place de solution de "Cloud Computing" la notion de service est devenue une réalité. L’informatique est un consommable de première nécessité pour les entreprises, comme l’eau, l’électricité et le téléphone.

[2] Google, Introducing Google App Engine, http://googleappengine.blogspot.com/2008/04/introducing-google-app-engine-our-new.html, publié le 07/04/2008, consulté le 15/06/2009
[3] itbusiness.ca, Windows in the cloud and a services offering from Microsoft, http://www.itbusiness.ca/IT/client/en/CDN/News.asp?id=50556, publié le 30/10/2008, consulté le 15/06/2009
[P_09] Guillaume Plouin, CLOUD COMPUTING et SaaS, publié en 2009