Vous êtes sur la page 1sur 6

CHAPITRE 3 : CLOUD COMPUTING

3 .1 : Le concept de cloud

Le calcul sur la toile est un style innovant et passionnant de programmation et d'utilisation d'ordinateurs.
Cela crée des opportunités énormes pour les développeurs de logiciels: le cloud computing peut fournir
une nouvelle plate-forme étonnante pour la construction de nouveaux types d’applications. Dans ce
chapitre, nous examinerons les concepts de base: qu’est-ce que le cloud computing, quand et pourquoi
devriez- vous l'utiliser, et quels types de services basés sur le cloud vous sont disponibles en tant que
développeur d'applications.

Dans le monde moderne de l'Internet et du World Wide Web, il y a des milliers et des milliers
d'ordinateurs dans des centres de données dispersés dans le monde entier. Nous utilisons constamment ces
ordinateurs pour discuter avec d'autres personnes, envoyer des courriels, jouer à des jeux et lire et écrire
des blogs. Lorsque nous faisons une de ces activités quotidiennes, nous accédons à un programme exécuté
sur un serveur, en utilisant notre navigateur en tant que client.

Mais où est le programme en cours d'exécution? Où sont les données? Où sont les serveurs? Ils sont
quelque part, quelque part dans un centre de données, quelque part dans le monde. Vous ne savez pas où
et, plus important encore, vous ne vous souciez pas; il n'y a absolument aucune raison pour que vous vous
en souciez. Ce qui compte pour vous, c'est que vous pouvez accéder au programme et aux données quand
vous en avez besoin.

Regardons un exemple simple. Un individu veut écrire un blog. Pour ce faire, il utilise le service Blogger
de Google. Il utilise son navigateur Web et va à http://goodmath.blogspot.com/admin et commence à
écrire. Quand il a fini, il clique sur le bouton Publier et le message de blog apparait à tous ses lecteurs. De
son point de vue, ça a marché. Tout ce dont il avait besoin était son navigateur web et l'URL, et il pouvait
écrire son blog.

Blogger est un logiciel complexe géré par Google dans l'un de ses centres de données. Il héberge des
centaines de milliers de blogs, et ces blogs sont lus par des millions d'utilisateurs chaque jour. Quand vous
regardez de cette façon, il est évident que le logiciel derrière Blogger fonctionne sur beaucoup
d'ordinateurs. Combien? Nous ne savons pas. En fait, ce n'est probablement même pas un nombre fixe -
quand il n'y a pas beaucoup de personnes qui y accèdent, il n'a pas besoin de fonctionner sur autant de
machines; quand plus de gens commencent à l'utiliser, il a besoin de plus de machines. Le nombre de
machines qui l'utilisent varie. Mais du point de vue de l'utilisateur - que cet utilisateur soit un auteur de
blog ou un lecteur de blog - rien de tout cela n'a d'importance. Blogger est un service, et cela fonctionne.
Quand on veut écrire un post, on peut aller sur Blogger et l'écrire, et quand les gens vont sur la page web
de du blog, ils peuvent lire le post.

C'est l'idée fondamentale du cloud: les programmes et les données sont sur un ordinateur quelque part, et
vous ne savez ni ne vous soucient pas de l'endroit où se trouve cet ordinateur.

Pourquoi appeler cette collection de ressources un nuage? Un nuage est une énorme collection de
minuscules gouttelettes d'eau. Certaines de ces gouttelettes tombent sur votre cour, donnant aux arbres et

1
à la pelouse de l'eau; certains coulent dans le réservoir d'où vient mon eau potable. Et les nuages eux-
mêmes poussent de l'eau évaporée, qui vient de partout. Tout ce que vous voulez, c'est assez d'eau dans
votre cour pour garder les plantes vivantes et assez dans le réservoir pour avoir quelque chose à boire.
Vous vous fichez du nuage qui apporte la pluie; tout est pareil pour moi. Je me fiche de l'origine de l'eau.
Tout n'est que de l'eau, les gouttes sont exactement les mêmes et je ne peux pas faire la différence. Tant
que j'en ai assez, je suis content.

Pensez donc aux différents centres de données à travers le monde où les entreprises ont des grappes
d'ordinateurs. Les plus grands acteurs de l'informatique en réseau, tels que Google, Amazon, Microsoft,
IBM et Yahoo, ont des milliers de machines connectées à des réseaux gérant toutes sortes de logiciels.
Chacun de ces centres est un nuage, et chaque processeur, chaque lecteur de disque, est une goutte d'eau
dans ce nuage. Dans le monde du cloud, lorsque vous écrivez un programme, vous ne savez pas sur quel
ordinateur il fonctionnera. Vous ne savez pas où se trouvent les disques qui stockent les données et vous
n'avez pas besoin de vous en soucier. Vous avez juste besoin de savoir combien de gouttelettes vous avez
besoin.

3.2 Du cloud aux développeurs

Le cloud computing est un changement fondamental par rapport à la façon dont les ordinateurs et les
logiciels ont fonctionné dans le passé. Traditionnellement, si vous vouliez exécuter une application, vous
êtes allé acheter un ordinateur et un logiciel, l'avez installé dans vos propres locaux et exécuté votre
programme. Vous aviez besoin de choisir le système d'exploitation que vous alliez exécuter, de gérer
l'installation de votre logiciel et d'entretenir votre système informatique avec des mises à jour logicielles,
la sécurité, les sauvegardes, etc.

Avec le cloud computing, vous ne faites rien de tout cela. Si vous êtes un utilisateur du cloud, vous
achetez l'accès à l'application que vous souhaitez, puis vous vous connectez depuis n'importe où.
L'installation du logiciel, la maintenance du matériel et des logiciels sur lesquels l'application s'exécute,
garantissant la sécurité et la sécurité des données, ne vous concernent pas. Dans le cloud, vous achetez un
logiciel en tant que service. Si vous avez besoin de plus de stockage qu'un utilisateur classique, vous
achetez un espace de stockage supplémentaire auprès du fournisseur de services. Si cela implique l'achat
et l'installation d'un nouveau lecteur de disque, c'est au fournisseur de le faire. Vous venez d'acheter du
stockage-comme-un-service. Vous leur dites ce dont vous avez besoin, tant du point de vue physique
(«J'ai besoin de 1 To de stockage») que dans des sens de qualité de service non moins tangibles («Je dois
garantir que mon stockage est transactionnel, malléables, les données ne seront jamais perdues. "). Vous
leur dites vos besoins, et un fournisseur de cloud vous vendra un service qui répond à ces exigences.

Cela signifie que lorsque vous développez pour le cloud, au lieu d'acheter un ordinateur et d'exécuter un
logiciel, vous décomposez les éléments constitutifs, achetez ces éléments auprès des fournisseurs de
services et mettez-les en place, un système.

Les blocs de construction sont les ressources dont vous avez besoin pour exécuter un programme ou pour
effectuer une tâche. Les ressources comprennent des éléments comme le temps de traitement, la bande
passante réseau, le stockage sur disque et la mémoire. En tant qu'utilisateur du cloud, vous n'avez pas

2
besoin de vous préoccuper de l'emplacement de ces ressources. Vous savez ce dont vous avez besoin, et
vous achetez cela de la part de celui qui peut vous le fournir le plus commodément.

Pour les développeurs, le cloud computing introduit un changement encore plus grand. Lorsque vous
développez pour le cloud, vous ne construisez pas un logiciel à vendre à vos clients, vous construisez un
service que vos clients peuvent utiliser. Comprendre cette différence est crucial: vous devez concevoir
votre application autour de l'idée que c'est un service que vous allez fournir aux utilisateurs, et non une
application autonome qu'ils vont installer sur leurs ordinateurs. Vos clients vont choisir un service en
fonction des tâches qu'ils souhaitent accomplir, de sorte que votre application doit être conçue en tenant
compte de la tâche et vous devez la fournir de la manière la plus flexible possible.

Pour les développeurs, l'aspect le plus excitant de l'informatique en nuage est son évolutivité. Lorsque
vous développez dans le cloud, vous pouvez écrire un programme simple pour une ou deux personnes,
puis, sans changer de ligne de code, ce programme peut évoluer pour prendre en charge des millions
d'utilisateurs. Le programme est neutre sur le plan de l'échelle: vous l'écrivez pour qu'il fonctionne aussi
bien pour une douzaine d'utilisateurs ou un million d'utilisateurs. Au fur et à mesure que vous obtenez
plus d'utilisateurs, il vous suffit d'acheter plus de ressources et votre programme fonctionnera. Vous
pouvez commencer avec un programme simple exécuté sur un serveur quelque part dans le nuage et
augmenter la taille en ajoutant des ressources jusqu'à ce que vous ayez des millions d'utilisateurs.

3.3 Le modèle cloud contre le modèle client-serveur

À bien des égards, le style de base du développement de logiciels basés sur le cloud est similaire à la
programmation pour l'informatique client-serveur. Les deux sont basés sur l'idée que vous n'exécutez pas
vraiment de programmes sur votre propre ordinateur. Votre ordinateur fournit une fenêtre dans une
application, mais il n'exécute pas l'application elle-même. Au lieu d'exécuter le programme sur votre
ordinateur, tout ce que vous faites sur votre propre ordinateur est exécuté une sorte d'interface utilisateur.
Le vrai programme tourne ailleurs sur un ordinateur appelé un serveur. Vous utilisez le serveur car, pour
une raison quelconque, les ressources nécessaires à l'exécution du programme ne sont pas disponibles sur
votre ordinateur local: il est moins coûteux, plus rapide ou plus pratique d'exécuter le programme ailleurs
où les ressources nécessaires sont faciles à obtenir.
La grande différence entre le cloud et le développement client-serveur réside dans ce que vous savez:
dans les systèmes client-serveur traditionnels, il se peut que vous ayez un ordinateur spécifique qui soit
votre serveur et où vos affaires fonctionnent. L'ordinateur ne peut pas être assis sur votre bureau devant
vous, mais vous savez où il se trouve. Par exemple, quand j'étais à l'université, l'un des premiers gros
ordinateurs que j'ai utilisé était un VAX 11/780 surnommé «Gold». Gold vivait dans le laboratoire
informatique de l'université Rutgers à Hill Centre. J'ai utilisé l'or à peu près tous les jours pendant au
moins un an avant de pouvoir le voir. Le centre de données comptait au moins trente autres ordinateurs:
plusieurs DEC 20, quelques pyramides, un S / 390 et un groupe de soleils. Mais de ces machines, j'ai
spécifiquement utilisé l'or. Chaque programme que j'ai écrit, j'ai écrit spécifiquement pour courir sur l'or,
et c'est le seul endroit où je pourrais le faire fonctionner.
Dans le cloud, vous n'êtes pas confiné à un serveur spécifique. Vous avez des ressources informatiques,
c'est-à-dire que quelqu'un vous loue un certain montant de calcul sur une collection d'ordinateurs quelque
part. Vous ne savez pas où ils sont; vous ne savez pas quel genre d'ordinateur ils sont. Vous pourriez avoir
deux machines massives avec 32 processeurs chacun et 64 giga-octets de mémoire; ou ils pourraient être

3
64 petites machines monoprocesseur avec 2 giga-octets de mémoire. Les ordinateurs sur lesquels vous
exécutez votre programme peuvent posséder de grands disques ou des machines sans disque qui accèdent
au stockage sur des serveurs de stockage dédiés. Pour vous, en tant qu'utilisateur du cloud, cela n'a pas
d'importance. Vous avez les ressources que vous payez, et où elles ne font aucune différence tant que vous
obtenez ce dont vous avez besoin.

3.4 Quand développer pour le cloud ?


Alors maintenant vous savez ce qu'est le nuage. C'est une façon révolutionnaire de penser à
l'informatique. C’est un univers de serveurs sur lequel vous pouvez construire une application; c'est un
monde de services que vous pouvez construire ou que vous pouvez utiliser pour construire d'autres
choses. Maintenant, la question est, quand devriez-vous l'utiliser?
Vous pouvez écrire presque n'importe quelle application que vous voulez dans le nuage. En fait, beaucoup
de gens croient fermement que tout devrait être dans le nuage qu'il n'y a plus aucune raison de développer
des applications pour les ordinateurs personnels autonomes. Pour ne pas aller si loin: de nombreuses
applications sont bien adaptées au cloud, mais cela ne veut pas dire que c'est la plate-forme idéale pour
tout. Vous pouvez créer n'importe quoi en tant que service dans le cloud, mais cela peut être beaucoup
plus difficile que de le développer en tant qu'application autonome.

Il y a trois types d'applications qu'il est logique de construire dans le cloud :

Applications collaboratives.
Si l'application que vous créez sera utilisée par des groupes de personnes pour travailler ensemble,
partager des données, communiquer ou collaborer, alors vous devriez vraiment construire cette
application dans le nuage. La collaboration est la niche naturelle du nuage.

Services.
Si vous demandez: «Que fait mon application?» Et la réponse la plus naturelle sonne comme un service,
alors vous cherchez une application cloud. La différence entre une application et un service peut être
subtile; vous pouvez décrire presque n'importe quoi comme un service. La question clé ici est quelle est la
description la plus naturelle de celui-ci? Si vous voulez décrire l'application iTunes d'un ordinateur de
bureau, vous pourriez dire: «Cela permet aux gens de gérer leurs collections de musique», ce qui
ressemble à un service sonore. Mais il ne tient pas compte des propriétés clés de l'application de bureau
iTunes: elle gère une collection de fichiers musicaux sur les ordinateurs des utilisateurs et leur permet de
synchroniser cette musique avec leur iPod à l'aide d'un câble série. Décrit de cette dernière manière, il est
clair que c'est une application de bureau, pas une application cloud.
D'un autre côté, si vous regardez quelque chose comme eMusic, vous arriverez à une conclusion
différente. eMusic est un site Web par abonnement qui permet aux utilisateurs de parcourir une énorme
collection de musique et d'acheter un certain nombre de chansons par mois. eMusic est clairement un
service: il permet aux utilisateurs de rechercher dans une bibliothèque de centaines de milliers de pistes
musicales, leur permettant d'écouter des extraits, de lire des critiques, de commenter des choses qu'ils ont
écoutées, d'obtenir des suggestions pour de nouvelles choses sur ce qu'ils aiment, et finalement
sélectionner les choses à acheter. C'est clairement un service, et il est logique de le garder dans le nuage.

Calculs haute performance

4
Votre application est-elle destinée à effectuer un calcul massif, ce que vous ne pourriez jamais vous
permettre si vous deviez acheter vos propres ordinateurs pour l'exécuter? Si c'est le cas, le cloud vous
permet d'acheter du temps sur une batterie de serveurs d'ordinateurs de manière abordable et d'exécuter
votre application. C'est génial pour les gens comme les chercheurs en génétique, qui ont besoin
d'effectuer des calculs massifs, mais n'ont pas l'argent ou d'autres ressources pour mettre en place un
centre de données dédié pour leurs calculs. Au lieu de cela, ils peuvent acheter du temps sur des centres
de données commerciaux, qu'ils partagent avec de nombreux autres utilisateurs.

3.5 Quelques exemples d’environnement de Cloud Computing


Il y a plusieurs façons de programmer le nuage. Avant de commencer à écrire des programmes, nous
allons jeter un coup d'œil à quelques exemples pour vous donner une idée des types d'options disponibles.
Amazon EC2
Amazon fournit une variété de services basés sur le cloud. Leur principal outil de programmation
s'appelle EC2, Elastic Computing Cloud. EC2 est vraiment une famille de services connexes. Par rapport
à App Engine, EC2, qui fournit une suite d'API unique et étroitement ciblée, est totalement indépendante
des API de programmation. Il fournit des centaines d'environnements différents: vous pouvez exécuter
votre application dans EC2 en utilisant Linux, Solaris ou Windows Server; vous pouvez stocker des
données en utilisant DB2, Informix, MySQL, SQL Server, or Oracle; vous pouvez implémenter votre
code en Perl, Python, Ruby, Java, C ++ ou C #; vous pouvez l'exécuter en utilisant IBM WebSphere ou
sMash, Apache JBoss, Oracle WebLogic ou Microsoft IIS. Selon la combinaison que vous préférez et la
quantité de ressource (stockage, processeur, bande passante réseau) que vous prévoyez d'utiliser, les coûts
varient.

Amazon S3
Amazon fournit un autre service de cloud extrêmement intéressant, qui est très différent de la plupart des
autres offres de cloud. S3, Simple Storage Service, est un système de stockage pur. Il ne fournit pas la
possibilité d'exécuter des programmes; il ne fournit aucun système de fichiers; il ne fournit aucune
indexation. C'est du stockage en bloc pur: vous pouvez allouer un morceau de stockage qui a un
identifiant unique, et ensuite vous pouvez lire et écrire des octets à partir de ce morceau en utilisant son
identifiant.
Divers systèmes ont été créés pour le stockage: systèmes de fichiers basés sur le Web, systèmes de
fichiers du système d'exploitation natif, systèmes de base de données et systèmes de stockage de table.
C'est un exemple merveilleux du paradigme basé sur les ressources du cloud: le calcul impliqué dans le
stockage est complètement séparé du stockage de données lui-même. Lorsque vous avez besoin de
stockage, vous achetez un tas d'octets d'espace de stockage à partir de S3. Lorsque vous avez besoin de
calcul, vous achetez des ressources EC2.
S3 est un système vraiment fascinant. C'est très concentré: il fait exactement une chose et le fait d'une
manière incroyablement étroite. Mais dans un sens important, c'est exactement ce que le nuage est à
propos. S3 est un service parfaitement ciblé; il stocke des octets pour vous.

Les frais S3 sont basés sur deux critères: la quantité de données que vous stockez et la bande passante
réseau que vous utilisez pour stocker et récupérer vos données. Dans le même ordre d'idées, Google
propose un service cloud très similaire, appelé Google Developer Storage, qui reproduit les
fonctionnalités de base de S3 dans le cloud Google.

5
IBM Computing On Demand
IBM fournit une plateforme de services de type cloud basée sur la suite de développement de services
web d’IBM qui utilise WebSphere, DB2 et les outils de collaboration Lotus. La plateforme de IBM est la
même que celle de EC2, mais elle tourne dans les data centers de IMB contrairement à Amazone.

Microsoft Azure
Microsoft a développé et déployé une plate-forme cloud appelée Azure. Azure est une plate-forme
Windows qui utilise une combinaison de technologies de services Web standard (telles que SOAP, REST,
Servlets et ASP) et d'API propriétaires de Microsoft, telles que Silverlight. Par conséquent, vous avez la
possibilité de créer des applications extrêmement puissantes qui ressemblent beaucoup aux applications
de bureau standard. Mais l'inconvénient est qu'il est étroitement lié à la plate-forme Windows, de sorte
que les clients de l'application s'exécutent principalement sous Windows. Bien qu'il existe des
implémentations Silverlight pour d'autres plates-formes, les applications ont tendance à être fiables
uniquement sur les plates-formes Windows et uniquement entièrement fonctionnelles dans Internet
Explorer.

Donc, c'est ça le cloud. Maintenant que nous savons ce que c'est, nous allons commencer à apprendre
comment construire des applications dans le nuage. Google a mis en place une plate-forme vraiment
formidable, appelée App Engine, pour vous permettre de créer et d'exécuter vos propres applications
cloud. Nous utiliserons Python pour le développement d’applications cloud avec Google App Engine.

Vous aimerez peut-être aussi