vendredi 3 décembre 2010

Définition de Cloud Computing

En naviguant un peu sur le Web, je m'aperçois qu'il n'y a pas vraiment de définition pour expliquer ce qu'est le "Cloud Computing".
C'est un peu navrant d'avoir un terme à la mode abondamment utilisé sans disposer d'une définition correcte du concept.

Définir Cloud Computing
Le terme "Cloud Computing" provient de l'anglais et signifie littéralement "traitement/exécution dans le nuage".
Le nuage étant le symbole habituellement utilisé pour représenter Internet.
Ainsi donc "Cloud Computing" suggère qu'il est possible d'exécuter un logiciel sur la toile plutôt que sur son propre ordinateur.
Comme de plus en plus d'applications et services sont accessible depuis internet (GMail, Flicker, Amazon, Office.Net, Portail Internet, magasin en ligne, etc), il est presque logique d'imaginer qu'il soit possible de faire fonctionner ces logiciels directement depuis internet lui-même.

En résumé, Cloud Computing est une infrastructure qui permet d'exécuter un logiciel directement depuis internet et non plus depuis des ordinateurs que l'ont doit acheter, installer, configurer, connecter à Internet et maintenir. Une aubaine pour toutes personnes désirant développer des programmes pour le Web.

Aujourd'hui, en tant que développeur, il est donc possible d'écrire un logiciel et de contacter un tel fournisseur de service pour qu'il fasse fonctionner votre logiciel pour vous sur la toile.
En réalité, le programme ne se déplace pas sur internet entre les ordinateurs de monsieur tout le monde pour pouvoir fonctionner. Le programme est hébergé et exécuté dans un centre de donnée spécialement aménagé par le fournisseur de service Cloud Computing.
Il va de soit que le programme doit être conçu et écrit pour fonctionner sur ce type d'infrastructure d'exécution. Chaque acteur dans le domaine (Amazon, Google, Microsoft, ...) disposant de sa propre plateforme d'exécution (Amazone Elastic Compute Cloud, Google AppEngine, Windows Azure) avec ses spécificités et ses langages de programmation.

Ce que l'on paie pour un tel service; c'est le temps d'exécution et les quelques services annexes qui sont loués.
Le fournisseur de service Cloud Computing s'occupe:
  1. De l'infrastructure. C'est-à-dire qu'il s'occupe du centre de donnée, de l'alimentation électrique, les connexions et la configuration des réseaux, la redondance, la connexion internet, etc.
  2. Du matériel. C'est-à-dire qu'il s'occupe d'acheter et de maintenir lui-même le matériel informatique. Pas besoin de se tracasser pour l'achat de matériel, l'espace de stockage, les raccordements, la mise-à-jour, les backups, etc. Le fournisseur fournit les spécifications techniques de ses machines virtuelles.
  3. De l'environnement d'exécution. C'est-à-dire qu'il ne faut pas se soucier du système d'exploitation, des programmes à installer et des licences à payer. Le fournisseur s'occupe de tout cela, il fournit les spécifications de l'environnement d'exécution. Il est seulement nécessaire de fournir le programme à exécuter.


Définition plus technique
Suivant les quelques lectures ci-et-là sur le Web, le "cloud computing" pourrait se définir par le regroupement des services suivants:

  • IaaS - Infrastructure as a Service. 
  • PaaS - Platform as a Service.
  • SaaS - Software as a Service
IaaS - Infrastructure as a Service
C'est l'idée selon laquelle quelqu'un fournit l'infrastructure technique pour faire fonctionner vos applications. Ainsi, vous n'avez pas besoin de vous soucier de devoir spécifier le type de matériel ou le nom physique des machines sur lesquels vos serveurs fonctionneront. l'nfrastructure est fournie avec une spécification donnée et vous pouvez l'utiliser sans devoir vous soucier de qui détient le matériel.
L'idée directrice, c'est que vous pouvez louer le hardawre (machines, réseau, cablable, etc) à un tiers à la minute, heure ou mois.

PaaS - Platform as a Service
C'est l'idée selon laquelle quelqu'un peut vous fournir du hardware (comme le IaaS) plus une certaines quantité de logiciel tels que ceux nécessaires à l'exécution de votre logiciels (librairie, soft spécifique, os) ou bases de données. Il vous reste alors à conduire vos développement en fonction des spécification disponibles.
Par exemple, Salesforce.com offre Force.com qui n'est pas seulement une infrastructure mais aussi un langage de programmation. Il est possible de modifier/compléter (tuning) les applications de SalesForce pour qu'elles répondent mieux à vos besoins. Il est même possible de construire quelque-chose d'entièrement nouveau.
Dans le même ordre d'idée pour Windows Azure, un infrastructure complète et un environnement d'exécution (plateforme .Net + services divers) est mise à votre disposition. A vous de conduire vos développements en fonction des spécifications de la plateforme.
Pour résumer, c'est une Plateforme de développement en ligne, c'est-à-dire du matériel et quelques logiciels non-fonctionnels.

SaaS - Software as a Service
C'est l'idée selon laquelle quelqu'un peut vous offrir l'héberger une ensemble de logiciels que vous ne posséder pas (fonctionnant sur une plateforme et une infrastructure). Si les logiciels ne vous appartiennent pas, par contre vous payez "une location" pour son utilisation (par utilisateur ou quelque autre élément permettant de déterminer la consommation).
Dans ce cas, vous n'avez pas besoin de faire une quelconque tâche de programmation mais vous devez vous connecter et configurer le logiciel (généralement très flexible, configurable et personnalisable.
Dans un modèle SaaS il n'est pas nécessaire d'acheter quoi que ce soit, vous payez pour ce que vous utilisez.

Quelques sources d'informations:

Aucun commentaire: