Accueil Nos publications Blog Le cloud 1/3 – Les concepts de base

Le cloud 1/3 – Les concepts de base

Lors du mois de Juillet 2011 a eu lieu le ParisJUG où Patrick Chanezon accompagné de guest stars a fait une présentation sur le Cloud.

Plutôt que de faire un compte-rendu exhaustif de la soirée très bien retranscrite par Olivier Croisier sur TheCoderBreakfast et par Nicolas Martignole (avec pas moins de 3 articles : Patrick Chanezon au ParisJUG, Didier Girard, SFEIR, Création de valeur et compétitivité avec le Cloud et CloudFoundry présenté par Guillaume Laforge, Soirée Patrick Chanezon), je vais plutôt tenter de faire une synthèse de ce qu’est le Cloud de manière générale, et quel est son impact pour les développeurs, en m’appuyant sur un certain nombre d’éléments évoqués par les différents intervenants.

Cet article est divisé en trois articles :

  1. Le cloud 1/3 – Les concepts de base
  2. Le cloud 2/3 – Le Cloud pour les développeurs
  3. Le cloud 3/3 – Ses limites et points faibles

Les concepts généraux du Cloud Computing

D’où vient le Cloud?

Le Cloud Computing (que nous appellerons ici Cloud par simplification) n’est pas un concept nouveau en tant que tel puisqu’il ne s’agit finalement que d’un retour aux origines de l’informatique avec des contenus distants et des terminaux pour y accéder.

Le concept de Cloud s’articule autour d’un certain nombre de sujets qui convergent les uns vers les autres depuis quelques temps :
La mobilité : L’explosion des smartphones, des tablettes et des PC portables fait que les gens veulent leurs données accessibles tout le temps, de n’importe où et de n’importe quel périphérique.
La dématérialisation : Nous stockons de plus en plus de données et, bien que les capacités de stockages augmentent vite, tout le monde ne peut pas s’offrir un datacenter pour assurer la pérennité de ses données.
La rationalisation des coûts : Le hardware coûte de moins en moins cher. Ce qui coûte cher est l’infrastructure, l’administration et l’électricité. Il est donc très intéressant de regrouper les infrastructures dans de gros datacenter.

Si vous rajoutez autour de cela les avancées technologiques qui font qu’Internet commence à atteindre une vitesse suffisante pour la transmission de gros volumes de données et qu’il est devenu relativement facile et peu cher de gérer des datacenters de millions de machines, vous arrivez à un environnement propice à l’avènement du Cloud.

Qu’est-ce que le Cloud?

Sur un plan pratique

Finalement le Cloud, c’est un concept très simple : déporter quelque chose sur un réseau distant et accessible de n’importe où.

Cela peut être :
– Les outils de travail classiques : mails (gmail, hotmail, etc.), rédaction de documents (google docs, office 365)
– Les outils de communication : msn web, plate forme de blogs et éditoriales (wordpress, drupal, blogger), twitter, diffusion de mailing liste
– Le stockage de données : picasa, flickr, icloud
– Les outils autour du développement : suivi d’anomalies, intégration continue, gestion de sources
– Les outils de développements : plateforme de déploiement, IDE en ligne

Comme vous pouvez le constater, c’est vague, vaste et cela impact tous les domaines de l’informatique personnelle et professionnelle de tous les jours.

Par exemple, cet article a été, initialement, rédigé dans Google Docs, puis des discussions autour ont été faites via Google Talk et gmail. Enfin, au final, il est hébergé sur un site WordPress. Pour résumer : personne n’a eu de copie locale de cet article sur son ordinateur.

Sur un plan technique

Le Cloud permet de répondre aux contraintes de montée en charge et de croissance de l’espace de stockage de façon inimaginable il y a encore quelques décennies. Cela impose des architectures évolutives et une gestion des défaillances matérielles importante.

La plupart des concepts sous-jacents aux Clouds actuels ont été définis par les sites grand public tels que Google, Yahoo, Twitter, Amazon ou encore Facebook.

Ils doivent gérer des sites supportant des montées en charge de plusieurs dizaines de millions d’utilisateurs, stocker des peta-octets de données, le tout dans des contextes extrêmement réactifs avec, entre autre, de la recherche instantanée et de la diffusion en continue.

Par exemple, dans le cas de Facebook les chiffres parlent d’eux-mêmes :

  • Plus de 500 millions de comptes actifs
  • Environ 250 millions de connexions quotidiennes
  • 1 million de commentaires toutes les 2 minutes
  • 750 millions de photos ajoutées le week-end du nouvel an
  • Des millions d’actions différentes (partage de liens, mise à jour de status, envoi de photos, envoi d’invitations, etc.) par minutes
  • Tout cela est géré par 60 000 serveurs.

Cela impose des architectures très particulières basées sur la distribution et la redondance des informations sur des milliers de serveurs généralement peu puissants et susceptibles de tomber en panne. Cependant, ces serveurs sont facilement modifiables et remplaçables.

Le gros mainframe coûteux et peu extensible des années 60 a donc été remplacé par des fermes de machines identiques et peu onéreuses. S’il vient à manquer de machines ou si la panne d’une d’entre elles se produit, il devient alors aisé d’en ajouter une ou de la remplacer.

Le datacenter Free pour les Dedibox (crédit : online.fr)

Sur un plan logiciel

Afin de pouvoir utiliser toutes ces machines, un environnement logiciel adapté est nécessaire, à savoir :

  • Un système de monitoring permettant de savoir quand une machine tombe en panne.
  • Un système de déploiement automatique permettant d’installer automatiquement l’environnement sur une nouvelle machine dès qu’elle est raccordée au système.
  • Un système de distribution de charge entre les machines assurant la réplication des données.

Note : Une des solutions souvent associée au Cloud et très en vogue également en ce moment est le principe de NoSQL. Les différentes technologies qui composent ce terme générique permettent de stocker des données de manière distribuée et d’avoir des temps d’accès très faibles sur des volumes de données conséquents. Cependant, il existe de nombreux systèmes de Cloud qui restent basés sur des SGBD traditionnelles.

Les différentes familles de Cloud

L’architecture du Cloud est séparée en trois couches distinctes : IaaS, PaaS et SaaS. Chaque couche s’adressant à un public en particulier :

(Crédit saasblogs.com)

Si un parallèle était fait avec un ordinateur, on aurait l’équivalence suivante :

  • IaaS <=> machine
  • PaaS <=> système d’exploitation
  • et le SaaS <=> logiciels

Software As A Service (SaaS)

La première chose à passer dans le Cloud furent les logiciels il y a une dizaine d’année. A l’heure actuelle presque tout le monde consulte ses courriels en ligne, la plupart d’entre nous partageons nos photos de vacances en ligne via Picasa, Flickr ou autres.

Les usages du SaaS sont multiples et tendent à se diversifier et à s’imposer de plus en plus. L’arrivée de Chrome OS marque le point d’orgue de tout cela : il n’est plus possible d’installer une application au sens traditionnel du terme. Tout passe par le navigateur.

Infrastructure As A Service (IaaS)

Au fur et à mesure de la démocratisation du SaaS, les besoins en terme de puissance de calcul se sont intensifiés. Amenant les sociétés les hébergeant à concevoir des systèmes extrêmement modulaires et extensibles. Il n’a pas fallut attendre longtemps pour qu’elles ouvrent ces infrastructures à l’extérieur et de voir naître l’IaaS.

Le fournisseur IaaS le plus connu est probablement Amazon AWS qui permet d’héberger des données et des applications en ne payant que le temps de calcul et l’espace consommé.

Car l’intérêt de ce système est bien là. En mutualisant l’infrastructure, des économies d’échelle sont réalisées et il n’est plus nécessaire de payer une infrastructure résistant aux pics de charge.

Dans cette catégorie entre également, toutes les entreprises louant des serveurs telles que OVH par exemple.

Plateform As A Service (PaaS)

Le dernier arrivé chronologiquement, le PaaS comble un manque entre le IaaS et le SaaS. En effet, nous pouvons héberger nos données et nous pouvons les manipulées mais il n’y avait rien pour gérer tout l’environnement de déploiement et de développement des applications.

Ce marché est occupé par Google App Engine, VMware Cloud Foundry, CloudBees, Heroku, etc.

Il s’agit de la partie du Cloud la moins connue car elle est plus récente et ne concerne, finalement, que les développeurs et les opérationnels. C’est pourtant celle qui nous intéressera le plus et qui impactera le plus notre métier de développeur.

Son principal intérêt est la rapidité de déploiement et de mise en place d’un environnement de développement avec de l’intégration continue, des serveurs de test et de recette, etc.

Conclusion

Le Cloud computing n’est finalement qu’un agrégat de technologies qui forment un ensemble cohérent et où il existe de nombreux acteurs. De plus, il s’agit d’un concept relativement ancien (à l’échelle de l’informatique) et bien plus répandu que ne le laisse penser l’effet de mode actuel.

Nous verrons dans la prochaine partie, ce que le Cloud peut apporter aux développeurs.