Présenté par
Encadran Jurys :
t : AL
Mr Rachid
AZAMI Boukharrazi
Mr Wail Bassou
Année 2015/2016
Dédicace
Je dédie ce travail :
A ms chers parents qui m’ont donnés la vie grâce à Allah et qui m’ont apportés les
soutiens nécessaires à mon bonne éducation et à mes succès scolaires, au prix de nombreux
sacrifices, qu'ils trouvent ici l'expression de mon entière reconnaissance.
A mes frères et sœurs pour leur soutien qu’ils trouvent ici l’expression de ma gratitude.
A tous mes frères et sœurs en Islam qui m’ont aidé d’une manière ou d’une autre.
Tout d’abord je remercions ALLAH de m’avoir accordé toutes les facultés afin d’arrivé au
terme de notre cycle.
Dédicace---------------------------------------------------------------------------------------------------i
Remerciements-----------------------------------------------------------------------------------------ii
Liste des tableaux--------------------------------------------------------------------------------------v
Listes des figures--------------------------------------------------------------------------------------vi
Listes des sigles et abréviations-------------------------------------------------------------------vi
Résume---------------------------------------------------------------------------------------------------ix
Introduction générale---------------------------------------------------------------------------------1
Chapitre 1 : Etat de l'art sur le Cloud computing----------------------------------------------3
Introduction-------------------------------------------------------------------------------------------- 4
I. Définition du Cloud computing----------------------------------------------------------------4
II. Historique du Cloud Computing--------------------------------------------------------------5
III. Les différents services du Cloud computing---------------------------------------------6
IV. Les Modèles de déploiement du Cloud computing-------------------------------------9
V. Avantages et inconvénients du Cloud computing----------------------------------------11
VI. Cloud Computing et le Cluster------------------------------------------------------------13
VII. Sécurité dans le Cloud Computing-------------------------------------------------------13
VIII. Le Cloud Computing : les Différents Acteurs-------------------------------------------18
Conclusion--------------------------------------------------------------------------------------------- 20
Chapitre 2 : Mise en place d’une solution Cloud (SaaS)------------------------------------21
Introduction------------------------------------------------------------------------------------------ 22
I. Solutions existantes---------------------------------------------------------------------------- 22
II. Etude comparative des différentes solutions existantes-------------------------------23
III. Choix de la solution retenue---------------------------------------------------------------24
IV. Présentation détaillée de la solution choisie retenue ( Google App Engine)----24
Conclusion--------------------------------------------------------------------------------------------- 37
Chapitre 3 : Implémentation de la solution---------------------------------------------------38
Introduction------------------------------------------------------------------------------------------ 39
I. Installation de Google App Engine avec Eclipse----------------------------------------39
II. Mise en place du projet------------------------------------------------------------------------ 43
III. Utilisation du service Users---------------------------------------------------------------48
Résume
Introduction générale
Les étudiants en fin de cycle de l’école Sup Management doivent réaliser un projet de fin
d’étude qui consiste en la résolution d'un problème scientifique et technique. Ce travail doit
être l'occasion pour l'étudiant de mettre au service d'un organisme public ou privé une
démarche synthétique, faisant intervenir tout ou partie des connaissances qui lui ont été
enseignées au cours de sa formation. La période de mémoire est divisée en deux parties: une
première partie qui se déroule à la faculté, parallèlement aux cours théoriques, et pendant
laquelle l'étudiant est supposé faire des recherches bibliographiques concernant son thème de
mémoire et une deuxième partie qui se déroule au sein de l'organisme concerné par le thème
de mémoire. C'est au cours de cette seconde partie que l'étudiant procède à la réalisation
concrète du travail qui lui est demandé.
Le sujet qui m’a été proposé s'intitule donc avec raison « Mise en place d'une solution Cloud
Computing(SaaS) » dans le but d’obtention d’un diplôme d’ingénier en Réseau Sécurité et
Telecom.
Le terme Cloud Computing, ou « informatique dans les nuages », est un nouveau modèle
informatique qui consiste à proposer les services informatiques sous forme de services à la
demande, accessibles de n'importe où, n'importe quand et par n'importe qui. Cette nouvelle
technologie permet à des entreprises d'externaliser le stockage de leurs données et de leur
fournir une puissance de calcul supplémentaire pour le traitement de grosse quantité
d'information.
C'est certainement ce qui a motivé mon Directeur de mémoire Mr Akram Elazami a proposé
ce thème que moi aussi j’ai choisie et que nous avons réalisé sous sa supervision.
Mon travail sera divisé en quatre chapitre, chaque chapitre sera subdivise en des points. Le
premier chapitre portera sur l’état de l'art sur le Cloud computing, le deuxième chapitre sur la
Introduction
Le Cloud computing, s'appuyant sur le WEB 2.0, offre des occasions aux sociétés de réduire
les coûts d'exploitation des logiciels par leurs utilisations directement en ligne. Celui-ci
consiste en une interconnexion et une coopération de ressources informatiques, situées au sein
d’une même entité ou dans diverses structures internes, externes ou mixtes. Et dont les modes
d’accès sont basés sur les protocoles et standards Internet.
Divers fournisseurs comme Google, Amazon, IBM offrent une vaste gamme de services de
Cloud Computing. Cette technologie vient juste d'éclore, elle est au début de son exploitation
mais déjà plusieurs acteurs majeurs cités précédemment adoptent leurs propres stratégies de
pionnier qui déterminera l'utilisation du Cloud computing des entreprises souhaitant investir.
De plus, on remarque aussi que des plus petits acteurs se battent pour une part de marché.
Le National Institue of Standards and Technologie (NIST) en a donné une définition qui est
souvent citée comme référence. Cette définition a été reprise dans le magazine Global
Security Mag :
« L’informatique dans les nuages » est une nouvelle façon de délivrer les ressources
informatiques, et non une nouvelle technologie. »
C’est un modèle qui permet l’accès au réseau à la demande. Les ressources sont partagées et
la puissance de calcul est configurable en fonction des besoins. Le client peut bénéficier d’une
flexibilité importante avec un effort minimal de gestion. Il se caractérise par :
Le Cloud computing n'est pas nouveau, il est exploité depuis les années 2000, les
changements qui ont permis l'apparition du Cloud computing sont nombreux. Ainsi on peut
citer l'apparition du SaaS (Software as a Service), le produit délivré par le Cloud.
Puis il y a le concept de virtualisation qui permet une mutualisation des serveurs et offre donc
une mise en production simplifiée et un meilleur ratio d'utilisation des ressources.
Le Cloud computing est donc la juxtaposition de ces technologies pour passer à la vitesse
supérieure sur l'exploitation de données à travers Internet.
Le concept du Cloud Computing a été mis en œuvre en 2002 par Amazon, un leader du e-
business, à travers l'histoire d'Amazon Web Services pour absorber la charge importante des
commandes faites sur leur site au moment des fêtes de Noël en mettant en place une très
grosse infrastructure technique qui est constituée de plusieurs serveurs regroupés dans des
grands entrepôts appelés Datacenter.
Aujourd’hui des grandes entreprises du secteur informatique comme IBM, Microsoft, Google,
SAP, DellOracle, Apple, Hewlett-Packard, Thales Services ou Orange Business Services font
aussi la promotion du Cloud computing, qui constitue un important changement de
paradigmedes systèmes informatiques, jusque-là constitués de serveurs situés au sein même
de l'entreprise.
Du point de vue économique, le Cloud computing est essentiellement une offre commerciale
d'abonnement économique à des services externes. Selon le National Institute of Standards
and Technology il existe quatre catégories de services qui peuvent être offerts en Cloud
computing.
C'est le service de plus bas niveau. Il consiste à offrir un accès à un parc informatique
virtualisé. Des machines virtuelles sur lesquelles le consommateur peut installer un système
d'exploitation et des applications. Le consommateur est ainsi dispensé de l'achat de matériel
informatique.
Dans ce type de service, situé juste au-dessus du précédent, le système d'exploitation et les
outils d'infrastructure sont sous la responsabilité du fournisseur. Le consommateur a le
contrôle des applications et peut ajouter ses propres outils. La situation est analogue à celle de
l'hébergement web où le consommateur loue l'exploitation de serveurs sur lesquels les outils
nécessaires sont préalablement placés et contrôlés par le fournisseur. La différence étant que
les systèmes sont mutualisés et offrent une grande élasticité - capacité de s'adapter
automatiquement à la demande, alors que dans une offre classique d'hébergement web
l'adaptation fait suite à une demande formelle du consommateur.
Pour ce genre de service les cibles sont les développeurs. Google App Engine est le principal
acteur proposant ce genre d'infrastructures.
Dans ce type de service, des applications sont mises à la disposition des consommateurs. Les
applications peuvent être manipulées à l'aide d'un navigateur web ou installées de façon
locative sur un PC, et le consommateur n'a pas à se soucier d'effectuer des mises à jour,
d'ajouter des patches de sécurité et d'assurer la disponibilité du service. Gmail est un exemple
de tel service. Il offre au consommateur un service de courrier électronique et le
consommateur n'a pas à se soucier de la manière dont le service est fourni. Autre
exemple, Office 365 propose un ensemble de services en abonnement dont la suite logicielle
Office qui se met automatiquement à jour, l'utilisateur ne se soucie pas de racheter un
nouveau logiciel ou de le mettre à jour. On parle ici de location de services hébergés par
Microsoft. D'autres exemples de logiciels mis à disposition en Saas sont Google Apps, Office
Online ou LotusLive (IBM). Un fournisseur de software as a service peut exploiter des
services de type platform as a service, qui peut lui-même se servir de infrastructure as a
service.
Avantage : plus d'installation, plus de mise à jour (elles sont continuées chez le
fournisseur), plus de migration de données etc. Paiement à l'usage. Test de nouveaux
logiciels avec facilité.
Inconvénient : limitation par définition au logiciel proposé. Pas de contrôle sur
le stockage et la sécurisation des données associées au logiciel. Réactivité des
applications Web pas toujours idéale.
Les cibles sont les utilisateurs finaux. On retrouvera des entreprises comme Sales Force ou
Diva (projet lancé par une équipe de l'école d'ingénieur EPITECH).
Correspond à la mise à disposition de données délocalisées quelque part sur le réseau. Ces
données sont principalement consommées par ce que l'on appelle des mashups. C'est le cas
d'Amazon S3 (un service d'Amazon Web Services) qui vous propose autant d'espace de
stockage que nécessaire.
Par ailleurs, le NIST distingue quatre modèles de déploiement pour le Cloud : privé, public,
communautaire ou hybride, correspondant à des usages différents.
Plateforme de Cloud Computing qui vise à fournir de manière externalisée, les services et
garanties équivalents à ceux offert par un Cloud privé interne tout en ajoutant le bénéfice d’un
hébergement et de services de gestion opérés par un tiers. Il peut être accessible par Internet
ou par un réseau privé.
Le Cloud Communautaire, est un Cloud utilisé par plusieurs entités ou organisations, qui sont
animées de besoins communs. Il peut être employé pour des applications génériques, avec des
particularités ajustées aux contraintes du groupe. Nous pouvons trouver en exemple le
stockage Communautaire monté par la GSA aux Etats Unis, pour les organisations
gouvernementales américaines. Ce type de plateforme peut héberger une application métier
spécifique, louée en commun par plusieurs entreprises.
Le Cloud public (public Cloud) : les ressources sont fournies par un prestataire et mutualisées
pour un usage partagé par plusieurs clients. L'infrastructure est mise à la disposition du grand
public (c'est-à-dire de plusieurs entreprises) mais elle appartient à un fournisseur de services
informatiques, le niveau de service étant défini par le fournisseur et identique pour tous les
utilisateurs.
L’idée de combiner le Cloud privé avec le Cloud public, a entraîné la conception d’un autre
pseudo-type de Cloud, le Cloud hybride ou mixte. En réalité, ce type de plateforme hybride
n’est pas un Cloud à part entière. Puisqu’on cherche à mettre ensemble et à faire
communiquer les deux modes précités, le Cloud hybride sert donc uniquement de liaison entre
eux. La tendance actuelle des services de stockage s’oriente vers l’adoption du Cloud hybride.
Dès que nous pensons à déployer un Cloud privé, nous devons considérer également celui
public en excès, en prévision des surcharges de nos capacités internes. Et l’hybride vient
compléter l’ensemble. Mais la mise en place d’une plate-forme de fédération des identités, ou
l’utilisation d’un service Cloud, n’est pas un Cloud hybride.
V.1. Avantages
Le Cloud computing est généralement associé à une multitude d’avantages qui créent
l’unanimité parmi les professionnels de l’entreprise. Notons toutefois que ces avantages
demeurent théoriques, étant donné la nature même du concept :
V.2. Inconvénients
Notre rôle, à ce niveau, consiste à veiller à ce que notre fournisseur propose une sécurité
suffisamment exhaustiveet à ce qu’il mette à notre disposition une politique de confidentialité
englobant toutes nos données.
En fonction du fournisseur choisi, notre marge de manœuvre peut être limitée par la nature de
l’offre proposée. Par exemple, si nous souhaitons accéder à certaines fonctionnalités de notre
choix, notre fournisseur pourrait être dans l’impossibilité de les proposer. A vérifier avec
notre fournisseur.
Le but du Cloud computing est de construire un nuage de clusters, c'est à dire d'interconnecter
un ensemble de machines sur un réseau défini. Les utilisateurs peuvent ensuite déployer des
machines virtuelles dans ce nuage, ce qui leur permet d'utiliser un certain nombre de
ressources.
En 2009, le groupe "Cloud security alliance" a été formé pour promouvoir les bons usages en
matière de sécurité dans le milieu du Cloud. Depuis ce groupe compte 40 000 membres.
Le client peut utiliser le chiffrement des données pour le stockage dans le Cloud, mais il
reste à définir qui doit contrôler les clés de chiffrement et de déchiffrement. En toute
logique, ceci doit être géré par le client.
Dans le Cloud, il est nécessaire d'assurer l'intégrité des données pendant un transfert ou
un stockage. Il faut donc que les opérations sur les données soient contrôlées afin de
n'effectuer que les opérations qui sont autorisées. Il n'existe actuellement pas de
standard commun entre les fournisseurs de Cloud.
Dans le respect du PaymentCardIndustry Data Security Standard (PCI DSS), les logs
doivent être fournis au gestionnaire de sécurité.
Le stockage
La confidentialité
Le propriétaire des données doit savoir quelles informations sont gardées et dans
certains cas être capable de demander leur suppression. Pour ce qui est du paiement
sécurisé ou PaymentCardIndustry Data Security Standard (PCI DSS), les données
bancaires et la trace des transactions doivent pouvoir être transférées aux autorités et
personnes chargées des régulations.
La sécurité physique
L'audit
Le fournisseur de Cloud doit être audité sur la sécurité de ses infrastructures et de ses
solutions par une société externe ou passer acquérir une certification.
Afin de bénéficier des mises à jour de sécurité sur les produits qui sont installés ou
utilisés sur l'infrastructure Cloud, le client doit s'assurer d'effectuer régulièrement les
mises à jour.
Le Cloud est basé sur la virtualisation, ceci permet au fournisseur de créer une image de
base sécurisée et à jour afin de déployer à la demande d'un client une machine ou un
service. Elle permet au fournisseur de mettre en place des patchs de sécurité mais
également de tester les impacts de l'installation de celui-ci
Dans le Cloud, les données d'un particulier ou d'une entreprise sont hébergées chez le
fournisseur. Les lois concernant le transfert de données personnelles ainsi que la
conservation des données peuvent différer d'un pays à l'autre. Dans le cas où des
données violent la loi de l’État où elles résident il y a un risque potentiel de saisie par le
gouvernement.
Le client doit connaître l'utilisation de ses données et pouvoir faire valoir ce droit de
confidentialité devant la justice afin que le fournisseur justifie de l'utilisation de ses
données.
VII.4. L'isolation
Le problème d'isolation réside dans le fait que l’environnement (machine virtuelle) d'un
attaquant peut potentiellement se retrouver sur la même machine physique d'un utilisateur
cause que cette dernière héberge de multiples machines virtuelles. Cela lui permet de mettre
en place différentes attaques matérielles ou logicielles pour écouter ou perturber les autres
machines virtuelles
Les composants de sécurité telle que les pare feu ou les systèmes de détection d'intrusion, ne
sont pas adaptés pour détecter les attaques distribuées. Ces attaques sont donc subdivisées en
sous attaques afin d'être indétectable par de tel système de sécurité :
Balayage de port
L'attaque par balayage de port permet à celui-ci de découvrir des ports de communication
exploitables. Cette attaque peut être évitée grâce à des systèmes de sécurité comme un pare-
feu ou encore un système de détection d'intrusion( IDS) : Intrusion System Détection. Les
infrastructures du Cloud sont sensibles à ce type d'attaque si celle-ci est effectuée en parallèle.
Un système tel que l'IDS analyse une partie du trafic et ne détecte donc pas une attaque par
scan de port si celle-ci est effectuée avec différents scanner. Les solutions de sécurité actuelle
ne sont pas adaptées pour ce type d'attaque sur une telle infrastructure.
Déni de service
L'attaque par déni de service a pour but de rendre un service indisponible par une surcharge
réseau par exemple. Le fournisseur doit mettre en œuvre les solutions contre ces attaques.
Cette attaque peut être évitée grâce à la scalabilité du Cloud. Des services comme Amazon
permettent dynamiquement de mettre davantage de ressources ou d'instances suivant le
besoin. Néanmoins, les clients n'utilisant pas les services de scalabilité sont soumis aux
risques de ces attaques, il est dans ce cas difficile de détecter ces attaques pour les bloquer
cause du potentiel nombre d'attaques simultanées.
Le client et le fournisseur doivent s'assurer que les logiciels qu'ils utilisent sont à jour afin
d'éviter l'exploitation des bogues logiciels. Cette action ne permet pas de les éviter mais de
limiter les risques.
L'attaque de l'homme du milieu est dans le but d'intercepter les communications entre un
client et un serveur afin de consulter, capturer et contrôler la communication en toute
transparence.
Analyseur de paquets
L'analyseur de paquets est une application ou un périphérique qui permet de lire, capturer les
données qui transitent sur un réseau. Cette attaque permet à l'attaquant de récupérer les
données puis les lire.
Le principe de cette attaque est d'injecter sur une des plateforme du Cloud (Saas, Iaas, Paas)
du code malicieux afin de compromettre l'infrastructure victime.
Amazon, Microsoft, Google, Salesforce, IBM : autant d'acteurs majeurs dont il faut parler
pour comprendre les directions que prendra le Cloud Computing d'ici peu. Car, qu'on le
veuille ou non, le Cloud dépend en grande partie de ces géants du web et de l'informatique,
mais également de nos équipements de télécommunications.
Les éditeurs et autres fournisseurs de logiciels de gestion en mode Cloud (souvent d'anciens
pionniers de l'ASP) constituent de loin le principal moteur de croissance de ce marché. Le
SaaS génère à lui seul plus de 80% des revenus du monde du Cloud aujourd'hui. Sa cible est
large : les entreprises de toutes tailles, et en particulier les PME. Ces dernières années, nous
assistons à la multiplication des offres SaaS, avec une accélération en 2010. Les domaines
applicatifs les plus touchés par la vague du SaaS sont historiquement les applications de
collaboration d'entreprise (messagerie, agenda partagé, gestion de projet, conférence web,
etc.), la GRH (gestion de la paie et des ressources humaines ), le CRM (gestion de la relation
clients, campagnes e-mailing...), la finance (gestion de trésorerie, des notes de frais, de la
facturation, etc.), la gestion des achats (gestion d'appels d'offres, e-sourcing, e-procurement,
etc.). Plus récemment, l'ERP, pourtant plus difficile à externaliser vu son caractère critique
pour l'entreprise, devient lui aussi candidat au SaaS, surtout à destination des PME ou des
départements de grands comptes.
Conclusion
En conclusion nous pouvons dire que le Cloud computing est actuellement un hype qui n'est
pas prêt à disparaître. On ne peut toutefois qu'apprécier le fait de pouvoir synchroniser tous
types d'appareils vers des espaces de stockage, qu'il s'agisse de PC, de smartphones ou autres :
tout est fait pour centraliser le traitement et la gestion des données, et c'est plutôt une bonne
chose. Laissons les différents acteurs contribuer au développement du Cloud Computing, en
espérant toutefois que le succès du concept ne crée pas une trop forte demande de plus en plus
avantageuse pour les prestataires et éditeurs, mais de plus en plus pénible pour la
compréhension des internautes.
Introduction
Dans le domaine du Cloud computing, plusieurs acteurs sont impliqués : les fournisseurs
d’offres publiques et ceux proposant le système sous forme de logiciels pouvant être
employés en privé. Les solutions du Cloud sont ainsi classées en deux grandes catégories : les
solutions propriétaires et les solutions open source.
I. Solutions existantes
Actuellement, trois acteurs potentiels existent sur le marché du Cloud computing public.
Windows par sa plateforme Azure, Google par sa plateforme de développement
d’applications AppEngine et Amazon par ses services EC2 de l’informatique virtuelle.
Azure est une plateforme de Microsoft pour les services PaaS du Cloud computing. Il s’agit
d’une plateforme de développement d’applications fournissant les services d’exécution et
d’administration d’applications en offrant les outils nécessaires. Elle permet aux développeurs
de programmer et de stocker directement leurs applications sur Internet en leur allouant
dynamiquement des machines virtuelles de son centre de données (data center). Windows
Azure est une plateforme flexible qui supporte plusieurs langages de programmations tels que
Java, PHP, Python, etc. De plus, elle supporte les standards et protocoles tels que SOAP,
XML, etc.
L’infrastructure soutenant la plateforme Azure est basée sur la solution de virtualisation Xen.
AppEngine est une offre de Google pour les services de type PaaS. Le développement et le
déploiement d’applications sur la plateforme de Google sont rendus possibles grâce à un
SDK(22) conçu par Google et mis à la disposition des utilisateurs afin de leur permettre de
développer en local pour ensuite déployer l’application vers l’Internet. L’idée est de permettre
aux utilisateurs d’employer l’infrastructure de Google pour héberger leurs applications avec la
possibilité de définir le groupe d’utilisateurs de cette dernière. Ces applications bénéficient de
la haute disponibilité des infrastructures de Google.
L’utilisation des services d’Amazon est facturée selon le temps d’utilisation des machines
louées.
Tableau n°1 : Etude comparatives des trois grandes solutions existantes du PaaS
Avantages Inconvenie
Service Langages IDE nts
Editeur Basesdedonnées
Amazon Amazon Web Containers Extensions AWS Amazon RDS, Richesse des Complexité
ElasticBe Services Docker, Java Toolkit pour DynamoDB, offres et de du pricing
anstalk (Tomcat), Eclipse et SimpleDB, SQL l'écosystème
.NET, Microsoft Visual Server, Oracle, Amazon Web
Node.js, PHP, Studio IDBM DB2, Services,
Python, Ruby Informix disponible
(Passenger) tant sur les
architectures
Linux que
.NET
Google Google Java, Google Plugin for Cloud SQL Richesse du Peu de
App Python, PHP Eclipse pour Java catalogue langages
Engine 5.4, Go d'offres supportés,
Cloud pricing
Google complexe
oft
Google App Engine pour Java est une solution complète pour le développement Java
d'entreprise: une IHM Ajax dans un navigateur pour la facilité d'utilisation, le support des
outils Eclipse, et Google App Engine en bout de chaine. La facilité d'utilisation et l'outillage
sont les points forts de Google App Engine pour Java par rapport à d'autres solutions de Cloud
computing. Le développement d'applications dans App Engine pour Java implique l'utilisation
des ressources de Google pour stocker et retrouver les objets Java. Le stockage des données
est basé sur BigTable, mais les intarfaces JDO et JPA permettent d'écrire du code qui n'est pas
directement lié à Big Table.
En fait, Google fournit un support pour bon nombre d'APIs standards afin que nous puissions
écrire du code qui n'est pas lié à 100% à la plateforme App Engine pour Java.
App Engine pour Java repose sur les APIs Java standards qui suivent:
Une interface JCache (JSR 107) implémentée par Memcache pour fournir un stockage
temporaire à la fois rapide et distribué pour les requêtes et les calculs.
Pour rentrer un peu plus dans le détail du fonctionnement de Google App Engine,
commençons par savoir que Google propose plusieurs services Cloud :
Google App Engine permet d'exécuter nos applications web sur l'infrastructure de Google.
Les applications App Engine sont faciles à construire, faciles à maintenir, et supportent
facilement la montée en charge de notre trafic et de nos besoins croissants de stockage de
données. Avec App Engine, il n'y a pas de serveurs à maintenir: Nous chargeons juste nos
applications, et elles sont aussitôt disponibles pour nos utilisateurs.
il fera appel à une autre zone de serveurs appelée DataStore (c'est en quelque sorte la base de
données).
Voici les 4 langages supportés par Google à l’heure actuelle (cette liste est susceptible
de s'agrandir à l'avenir) :
Go : C’est un langage créé par Google assez spécifique et encore expérimental.
PHP 5.4
En réalité, tout langage pouvant utiliser la machine virtuelle Java peut aussi fonctionner : c’est
le cas de Ruby et de Scala par exemple. Dans la pratique, la plupart des gens utilisent soit
Java, soit Python.
App Engine nous offrent beaucoup d'autres services. Mais Notre site web ne sert à rien si
vous ne savons pas comment y stocker des données. Nous allons donc passer du temps à
découvrir les choix qu’App engine offre à nous, puis à apprendre à nous servir des différents
moyens de stockage à travers une architecture Cloud qui est une notion indispensable pour
comprendre ce service.
Le serveur web : c'est lui qui répond directement aux requêtes des clients et
qui exécute les instructions de la page en Java, Python, PHP... Son rôle et de renvoyer
une page HTML au client.
Le serveur de stockage de fichiers : il se contente de stocker des fichiers
statiques (donc pas de Java, Python ou PHP là). Ca concerne aussi bien les images de
notre site, les images uploadées par nos visiteurs, les fichiers CSS, les fichiers JS, etc.
Ces fichiers peuvent être efficacement servis via un CDN (un ensemble de serveurs
répartis sur la planète).
Le serveur de base de données : il enregistre les informations de façon
structurée. Il stocke la liste des membres, la liste des messages, la liste des commandes,
etc.
Ces serveurs peuvent être tous regroupés au sein d'une même machine physique. Une
seule machine peut en théorie faire toutes ces choses-là à la fois. C'est l'architecture
serveur la plus simple.
App Engine nous fournit une flopée de services pour résoudre nos problèmes les plus
courants.
Pour répondre à ces besoins, Google App Engine fournit différents services :
Une base de données relationnelle SQL : c'est le service Google Cloud SQL. Il
s'agit en fait d'une base de données MySQL gérée en Cloud.
Une base de données non relationnelle NoSQL : c'est le service Datastore. Il
est basé sur Big Table, le système de stockage créé par Google pour ses propres
services pour des besoins de performance.
A noter qu'il existe aussi le Blobstore qui fait globalement la même chose mais avec moins de
fonctionnalités.
Les bases de données SQL sont en général connues des développeurs web,
Google Cloud SQL est en fait d'une base de données MySQL dans le Cloud. Si
nous avons un dump (une sauvegarde) d'une base MySQL, nous pouvons le stocker
dans Google Cloud SQL et commencer à l'utiliser tout de suite.
On peut aussi utiliser Google Cloud SQL de façon totalement indépendante. Si
nous avons "juste" besoin d'une base de données gérée dans le Cloud (pour ne pas avoir
à nous occuper de l'installation, de la configuration et de la maintenance), Google Cloud
SQL est la réponse que nous cherchons.
Google Cloud SQL ne peut pas être utilisé gratuitement même si on a un petit
trafic. Il faut payer pour pouvoir l'utiliser. Le prix dépend de la puissance nécessaire et
du temps que vous souhaitez l'utiliser
Google Cloud Storage est une service Web en ligne de stockage de fichiers et l' accès aux
données sur l’infrastructure de google.Le service combine les performances et l'évolutivité du
Cloud de Google avec des capacités de sécurité et de partage avancés.Il est une infrastructure
en tant que service ( IaaS ), comparable à Amazon S3 service de stockage en ligne.
Notons qu’App Engine ne nous permet pas de stocker les données sur leurs serveurs web
pour une raison simple : ceux-ci ne communiquent pas entre eux et chaque serveur peut être
arrêté à tout instant.
Malgré ces éléments qui peuvent être rebutants au début, il possède de nombreux avantages :
Google Cloud Storage est clairement la solution la plus complète. Elle constitue le futur du
stockage de fichiers pour les applications App Engine. Néanmoins, le Blobstore ne manque
pas d'intérêt lui aussi, parce qu'on peut l'utiliser gratuitement (jusqu'à une certaine limite) et
qu'il est plus simple à configurer au sein d'une application App Engine.
Nous présenterons donc les deux solutions, en commençant par le Blobstore qui nous
permettra de gérer nos premiers uploads rapidement.
Une fois qu'il a fini de stocker les fichiers uploadés par le visiteur, il renvoie le reste du
formulaire à votre application... sans les fichiers mais avec des informations sur
l'emplacement où les fichiers ont été sauvegardés. Notre application peut ensuite effectuer le
reste du traitement, comme sauvegarder les données du formulaire dans le Datastore.
Figure 8 : Le Blobstore stocke les fichiers transmis et renvoie le formulaire à traiter
Nous allons nous 'intéresses maintenant à un autre service de stockage, Google Cloud
Storage, qui est plus récent et pluscomplet (mais aussi plus complexe à prendre en main).
Google Cloud Storage nous permet de stocker sur les serveurs de Google toutes sortes de
fichiers d'une taille pouvant allerjusqu'à plusieurs Teraoctets. Les fichiers peuvent être stockés
soit aux Etats-Unis soit en Europe, ce qui peut être pratique pouroptimiser les temps d'accès et
pour la confidentialité des données. Les fichiers sont eux-mêmes répartis sur plusieurs
datacenterspour éviter les pertes accidentelles de données.
Les projets : nous pouvons gérer plusieurs projets Cloud Storage. En général,
un projet correspond à un site web. On créeces projets dans l'API Console de Google.
Les buckets: chaque projet peut gérer plusieurs buckets, qui sont des espaces
de stockage différents. On peut les voircomme des dossiers mais les buckets ne peuvent
pas être imbriqués contrairement aux dossiers. Chaque bucket définitdes droits d'accès
différents.
Les objets : ce sont les fichiers et dossiers que vous stockez. Les fichiers
peuvent peser jusqu'à plusieurs Teraoctets. Unfichier se trouve dans un et un seul bucket
à la fois.
IV.1.4. Objectify
On vient de voir que le Datastore est un système puissant mais son API bas niveau est assez
délicate à utiliser, notamment son système de requêtes. De l'avis de plusieurs développeurs de
de Google, il estrecommandé d'utiliser la bibliothèque Objectify pour travailler avec le
Datastore aujourd'hui.
Contrairement au Datastore lui-même, la lib Objectify n'est pas maintenue par Google lui-
même mais par un développeur externe. Objectify est particulièrement suivi et maintenu, c'est
donc un excellent choix pour développer avec le Datastore.
Objectify se veut être une API "ni trop bas niveau, ni trop haut niveau". Elle est
(heureusement) plus haut niveau que l'API debase que nous venons de découvrir, mais elle ne
nous empêche pas d'effectuer des actions basiques si nécessaire.
Objectify est un peu comme un ORM pour le Datastore : son rôle est de persister (stocker) nos
objets dans le Datastore.
Figure 9 : Objectify permet de stocker des objets dans le Datastore et de les ressortir
Google App Engine nous permet en un rien d'effort de créer une section membres sur notre
site. Nos membres pourront seconnecter avec leur compte Google ou même avec un OpenID,
et nous n'avons presque rien à coder pour ça.
D'envoyer des e-mails : notre application peut envoyer des e-mails en bénéficiant de
l'architecture de serveurs mail deGoogle (la même que GMail !).
De recevoir des e-mails : notre application peut recevoir et traiter automatiquement
des e-mails qu'on lui envoie.
Conclusion
Apres avoir vu les différentes solutions existantes du PaaS, nous avons choies la plateforme
de Google qui est une plateforme performante et nous avons fait une présentation détaillée de
cette dernière, nous avons une vue générale de ce que propose l'App Engine pour Java et nous
avons vu aussi les différentes services de stockage offert par googleappengine.
Dans le chapitre suivant,nous allons explorer les possibilités offertes aux développeurs Java
qui travaillent sur l'App Engine, pour mettre en application toutes ces connaissances que nous
avons apprises sur appengine, nous allons mettre en place deux applications à base d’app
engine. La première application permet a des utilisateurs de poster des message en ligne sur
un forum de discussion et une seconde application Ecommerce de vente en ligne qui permet
a des utilisateur d’effectuer des achat en ligne.
Introduction
Dans ce chapitre, nous commencerons la plateforme assez excitante pour développer en Java:
Google App Engine pour Java, en exploitantles différents types de services applicatifs qu'il
propose en utilisant le plugin Eclipse fourni par Google, nous créerons une application de
gestion de message sur un forum et une seconde application Ecommerce de vente en ligne
qui permet a des utilisateur d’effectuer des achat en ligneen utilisant ces technologies.
Google nous fournit tous les outils dont nous avons besoin pour développer. Ces outils varient
en fonction du langage que nous utilisons : Java, Python ou GO. La plupart des développeurs
Java utilisent un IDE comme Eclipse. Google y a pensé et nous fournit un kit de
développement App Engine sous la forme d'un plugin Eclipse.
La version la plus téléchargée est "Eclipse for Java EE developers", c'est celle qui convient le
mieux dans notre cas. Lors du premier lancement, Eclipse nous demande de choisir un
"workspace", un dossier dans lequel il déposera nos projetsde développement Java. nous
pouvez laisser la valeur proposée par défaut et continuer.
Installer le plugin Google App Engine dans Eclipse est vraiment très simple. Nous allons dans
le menu Help > Install New Software. Une fenêtre apparaît, où l'on nous demande où trouver
de nouveaux plugins.
http://dl.google.com/eclipse/plugin/4.2
Appuyons sur Entrée. La liste des plugins disponibles se charge, et on coche ceux-ci :
Nous pouvons installer d'autres plugins si nous le voulons mais ça ne nous sera pas nécessaire
dans ce projet. Cliquons ensuite sur Next.
On nous demande de vérifier ce que nous allons installer. Cliquons encore sur Next.
Nous devons valider la licence d'utilisation. Cliquons sur "I accept the terms of the license
agreements" et cotunions.
L'installation commence.
Eclipse avertit qu'il y a du contenu non signé (qui pourrait ne pas provenir de Google) dans
ce que noustéléchargeons. En réalité il n'y a pas de problème, cliquons sur OK pour continuer
l'installation.
Une fois Eclipse redémarré, c'est fini ! Si nous lançons un nouveau projet ou que nous
fermons simplement l'écran de bienvenue, nous devrions voir une icône Google (représentée
par un "g") qui nous donne accès aux fonctionnalités de Google App Engine que nous avons
installé :
Créationd’un nouveau projet en cliquant sur le New Web Application (bouton dans la
barre d'outils:
Java App Engine utilise l'API Java Servlet pour interagir avec le serveur web. Une servlet
HTTP est une classe d'application qui peut traiter et répondre à des requêtes Web. Cette classe
doit hériter soit de la classe javax.servlet.GenericServlet soit de la classe
javax.servlet.http.HttpServlet.
Notre projet commence avec une classe servlet simple qui affiche un message.
Lorsque le serveur Web reçoit une requête, il détermine la classe servlet à appeler en utilisant
un fichier de configuration appelé «descripteur de déploiement d'application web ». Ce fichier
est nommé web.xml réside dans le war/WEB-INF/ WEB-INF / et web.xml font partie de la
spécification des servlets.
Le fichier déclare une servlet nommée Furumapp, et lui associe un chemin d’url /Furumapp.
web.xml donne le chemin à l’intérieur de l’application WAR d’un fichier htlm (ici
index.html) qui sera utilisé par le serveur chaque fois que l'utilisateur récupère une URL qui
n'est pas déjà associé à une servlet.
App Engine a besoin d'un fichier de configuration supplémentaires pour trouver la façon de
déployer et d'exécuter l'application. Ce fichier est nommé appengine-web.xml réside dans
WEB-INF/ à côté de web.xml. Il inclut un identificateur (l'ID de application), le numéro de
version de notre application, et des listes de fichiers qui doivent être traités comme des
fichiers statiques (tels que des images et des feuilles de style CSS) et les fichiers de ressources
(telles que les JSP et autres données d'application). Eclipse crée une zone vide, à nous de la
remplir plus tard,appengine-web.xml est spécifique à App Engine et ne fait pas partie de la
norme servlet. Les schémas XML décrivant le format de ce fichier est dans le répertoire du
sdk App Engineappengine-java-sdk/docs.
II.4.Exécution du projet
Le SDK App Engine inclut un serveur Web de développement utilisé pour tester votre
application. Le serveur simule l'environnement App Engine et les services correspondants, y
compris les restrictions du bac à sable (sandbox), le stockage des données, et les services.
Pour lancer :
Google App Engine fournit de nombreux services très utiles basés sur l'infrastructure Google
et accessibles aux applications utilisant les bibliothèques du kit de développement de logiciels
(SDK). Parmi eux, le service Users permet d'intégrer les comptes d'utilisateurs Google à notre
application. Avec le service Users, les internautes peuvent se connecter à notre application à
l'aide d'un compte Google existant.
Nous allons maintenant faire appel au service Users pour personnaliser le message de
bienvenue de cette application.
Toutes les modifications apportées aux classes, aux pages JSP, aux fichiers statiques et au
fichier appengine-web.xml sont immédiatement prises en compte sans avoir besoin de
redémarrer le serveur en cours d'exécution.
http://localhost:8888
Au lieu d'afficher le message, le serveur nous invite à saisir une adresse e-mail. Entrons une
adresse e-mail (par exemple, sayoudi@example.com), puis cliquons sur "Log In"
(Connexion). L'application affiche un message, avec l'adresse e-mail que nous avons saisie.
Le nouveau code de la classe FrumappServlet utilise l'API Users pour vérifier que l'utilisateur
est connecté à un compte Google. Si ce n'est pas le cas, l'utilisateur est redirigé vers la page de
connexion de Google Accounts. userService.createLoginURL(...) renvoie l'URL de l'écran de
connexion. Le système de connexion redirige l'utilisateur vers l'application à l'aide de l'URL
transmise à createLoginURL(...), qui correspond dans notre cas à l'URL de la page en cours.
Lorsque nous exécutons l'application sur App Engine, nous sommes redirigés vers l'écran de
Google Accounts.
Nous sommes maintenant connectés à notre application de test. Si nous rechargeons la page,
le message s'affiche de nouveau.
Pour permettre à l'utilisateur de se déconnecter, nous devons fournir un lien vers l'écran de
déconnexion, généré par la méthode createLogoutURL(), ce lien déconnectera l'utilisateur de
l'ensemble des services Google.
Bien qu'il soit possible de générer une sortie HTML pour l'interface utilisateur directement à
partir du code de servlet Java, cela serait trop difficile et compliqué. À la place, nous allons
utiliser un modèle, avec l'interface utilisateur conçue et implémentée dans des fichiers séparés
avec une logique et des emplacements réservés pour insérer les données fournies par
l'application. Un grand nombre de modèles disponibles sous Java sont compatibles avec App
Engine.
Nous utiliserons les pages JavaServer (JSP) pour implémenter l'interface utilisateur du furum
de discutions.
Notre application écrit les chaînes dans un flux de sortie standard, mais elles pourraient
également être écrites en tant que page JSP. Commençons par adapter la dernière version de
l'exemple à JSP.
Dans le répertoire war/, créons un fichier appelé furumapp.jsp avec les éléments suivants :
Dans le cadre de notre furum de discussion, nous voulons que cette page soit la page d'accueil
qui s'affiche lorsqu'un utilisateur accède à l'URL /. La méthode la plus simple consiste à
déclarer dans web.xml que furmapp.jsp est le servlet de "bienvenue" associé à ce chemin.
<welcome-file-list>
<welcome-file>furumapp.jsp</welcome-file>
</welcome-file-list>
Notre furum nécessite maintenant un formulaire Web pour que les utilisateurs puissent poster
un nouveau message, ainsi qu'une méthode de traitement de ce formulaire. Le contenu HTML
du formulaire sera transmis à la page JSP. La destination du formulaire sera une nouvelle
URL, /sign, traitée par une nouvelle classe de servlet, SignfurumappServlet.
SignfurumappServlet traitera le formulaire, puis redirigera le navigateur de l'utilisateur vers
/furumapp.jsp. Pour le moment, le nouveau servlet consignera simplement le message posté
dans le fichier journal.
Modifions le fichier furumapp.jspet insérons les lignes suivantes juste avant la balise </body>
fermante :
</form>
</body>
</html>
Créons une classe nommée SignfurumappServlet dans le package furumapp. Insérons les
éléments suivants dans le fichier source :
<servlet><servlet-name>sign</servlet-name>
<servlet-class>furumapp.SignfurumappServlet</servlet-class>
</servlet><servlet-mapping><servlet-name>sign</servlet-name>
<url-pattern>/sign</url-pattern>
</servlet-mapping>
... </web-app>
Ce nouveau servlet se sert de la classe java.util.logging.Logger pour écrire les messages dans
le journal.
Nous avons créé une interface qui permet aux utilisateurs d'entrer des messages de bienvenue.
Nous créons et nous gérons des applications dans App Engine via la console d'administration.
Une fois l'identifiant de notre application enregistrée, utilisons-le pour transférer notre
application vers App Engine à l'aide du plug-in Eclipse ou d'un outil de ligne de commande
livré avec le kit de développement de logiciels (SDK).
V.1.Enregistrement de l'application
Pour créer et gérer des applications Web App Engine, servons-nous de la console
d'administration App Engine qui est accessible à l'adresse suivante :
https://appengine.google.com/
Connectons-nous à App Engine à l'aide de notre compte Google. Si nous n'en possédons pas,
nous pouvons créer un compte Google avec une adresse e-mail et un mot de passe.
Pour créer une application, cliquons sur le bouton "Create an Application" (Créer une
application). Suivons les instructions pour enregistrer un identifiant d'application, le nom
unique de l'application concernée. Si nous optons pour le nom de domaine gratuit
appspot.com, l'URL complète de notre application sera http://application-id.appspot.com/.
Nous pouvons également acheter un nom de domaine de premier niveau pour notre
application ou en utiliser un que nous avons déjà enregistré.
Nous pouvons transférer votre application à l'aide d'Eclipse ou d'une invite de commande.
Nous pouvons transférer nos fichiers et notre code d'application à partir d'Eclipse via le plug-
in Google.
Pour transférer notre application depuis Eclipse, cliquons sur le bouton de déploiement App
Objectify est une bibliothèque créée par un développeur tiers. Elle n'est pas installée
automatiquement avec le plugin AppEngine pour Eclipse. Heureusement, son installation et sa
configuration sont simples.
Pour utiliser Objectify, on doit télécharger 2 bibliothèques sous la forme de fichiers .jar :
5.1.12.jar)
Guava: c'est une bibliothèque offrant des fonctionnalités de base de Java, créée par
Google et utilisée notamment parObjectify. Nous en aurons besoin pour faire fonctionner
Objectify. Nous pouvons télécharger le .jar sur le site de Guava.
Reprenons notre application furumapp qui permet aux utilisateurs de poster des messages sur
le furum et d’uploader et poster des images public et de l'adapter à Objectify.
Le tableau ci dessous nous résume un peu comment doit ressemble notre projet en donnant
un résumé de nos fichiers et leurs descriptions :
Commençons par définir la classe Message qui doit nous servir de model. Elle représentera
les objets que nous allons persister dans le Datastore.
La classe doit définir la structure de nos objets persistables. On doit y écrire des annotations
qui indiquent à Objectify où est l'ID et les champs qui doivent être indexer.
Le code suivant montre la classe Message représentant un message posté par l'utilisateur:
importcom.googlecode.objectify.Key;
importcom.googlecode.objectify.annotation.Entity;
importcom.googlecode.objectify.annotation.Id;
importcom.googlecode.objectify.annotation.Index;
importcom.googlecode.objectify.annotation.Parent;
importjava.lang.String;
importjava.util.Date;
importjava.util.List;
@Entity
publicclass Message {
@Parent Key<Furumapp>lefurum;
public Message() {
this();
} else {
this.contenu = contenu;
this(furum, contenu);
auteur_email = email;
auteur_id = id;
import com.googlecode.objectify.annotation.Entity;
import com.googlecode.objectify.annotation.Id;
@Entity
Pour utiliser Objectify dans une JSP, nous avons besoin d'une classe d'aide qui enregistre
chaque classe de modèle dans le contexte de servlet JSP. Le code suivant dans OfyHelper.java
montre comment faire:
packagefurumapp;
importcom.googlecode.objectify.Objectify;
importcom.googlecode.objectify.ObjectifyFactory;
importcom.googlecode.objectify.ObjectifyService;
importjavax.servlet.ServletContextListener;
importjavax.servlet.ServletContextEvent;
publicclassOfyHelperimplementsServletContextListener {
publicvoidcontextInitialized(ServletContextEventevent) {
ObjectifyService.register(Furumapp.class);
ObjectifyService.register(Message.class);
publicvoidcontextDestroyed(ServletContextEventevent) {
Ce fichier fait référence aux Message des classes modèles utilisés dans l'échantillon.
Le fichier web.xml :
Le fichier web.xml qui doit comporter les lignes spécifiques à Objectify pour que notre
application puisse fonctionner correctement :
<filter>
<filter-name>ObjectifyFilter</filter-name>
<filter-class>com.googlecode.objectify.ObjectifyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ObjectifyFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>furumapp.OfyHelper</listener-class>
</listener>
N'oublions pasla JSP qui récupère simplement une liste de messages et fait une boucle pour
les afficher, rien de bien particulier.
Les importations suivantes dans le fichier JSP montrent les classes du modèle Cloud
Datastore et les classes objectiver requises:
<%
// Create the correct Ancestor key
Key<Furumapp>theBook = Key.create(Furumapp.class, furumappName);
// Run an ancestor query to ensure we see the most up-to-date
// view of the Greetings belonging to the selected Guestbook.
List<Message> messages = ObjectifyService.ofy()
.load()
.type(Message.class) // We want only Greetings
.ancestor(theBook) // Anyone in this book
.order("-date") // Most recent first - date is indexed.
.limit(5) // Only show 5 of them.
.list();
if (messages.isEmpty()) {
%>
<p>Lefurum n'a pas de message.</p>
<%
} else {
%>
<p>Messages danslefurumdediscution .</p>
<%
// Look at all of our greetings
for (Message message : messages) {
pageContext.setAttribute("message_contenu", message.contenu);
String auteur;
if (message.auteur_email == null) {
auteur = "Une personne anonyme";
} else {
auteur = message.auteur_email;
String auteur_id = message.auteur_id;
if (user != null&&user.getUserId().equals(auteur_id)) {
auteur += " (Vous)";
}
}
pageContext.setAttribute("message_user", auteur);
%>
<p><b>${fn:escapeXml(message_user)}</b> a ecrit:</p>
<blockquote>${fn:escapeXml(message_contenu)}</blockquote>
<%
}
}
%>
<formaction="/sign"method="post">
<div><textareaname="content"rows="3"cols="60"></textarea></div>
<div><inputtype="submit"value="Poster le message"/></div>
<inputtype="hidden"name="furumappName"value="${fn:escapeXml(furumappName)}"/>
</form>
Lorsque l'utilisateur charge la page, le modèle effectue une requête dans le datastore pour tous
les Message des entités qui utilisent le même Furumaap dans leur clé. La requête est triée par
date dans l'ordre chronologique inverse, et les résultats sont limités aux cinq salutations les
plus récentes.
Le reste du modèle affiche les résultats sous forme de HTML, et rend aussi la forme que
l'utilisateur peut utiliser pour poster un nouveau message d'accueil.
Le SignfurumappServlet.java :
Le SignfurumappServlet servlet est le POST gestionnaire pour les salutations postées par les
utilisateurs. Il prend le message d’accueil de la demande et le stocke dans Cloud Datastore
entrant comme un entité:
packagefurumapp;
importcom.google.appengine.api.datastore.*;
importcom.google.appengine.api.users.User;
importcom.google.appengine.api.users.UserService;
importcom.google.appengine.api.users.UserServiceFactory;
importjava.io.IOException;
importjava.util.Date;
importjavax.servlet.http.*;
importcom.googlecode.objectify.ObjectifyService;
@SuppressWarnings("serial")
@Override
Message message
UserServiceuserService = UserServiceFactory.getUserService();
if (user != null) {
} else {
ObjectifyService.ofy().save().entity(message).now();
resp.sendRedirect("/furumapp.jsp?furumappName=" + furumappName);
Notons que les propriétés des magasins de servlet tels que le contenu du message, la date a la
quelle il a été poste, ID et l'adresse électronique de l'utilisateur serons enregistre si l'utilisateur
est connecté.
Dans cette dernière partie, nous déployer notre application, y compris la génération des index
Google Cloud Datastore requis pour le déploiement.
Génération d'index :
<datastore-indexes>
<datastore-indexkind="Message"ancestor="true"source="manual">
<propertyname="date"direction="desc"/>
</datastore-index>
Pour déployer notre application depuis Eclipse, cliquons sur le bouton de déploiement App
Cliquons tout simplement sur "Deploy" : Notre site part alors sur les serveurs de Google.
Conclusion
Dans ce chapitre nous avons appris de façoncomplète comment installer le plugin Google App
Engine pour Java et nous avons appris la façon de créer une application a base des servlet en
utilisant ce plugin Eclipse pour l'App Engine et comment déployer notre application sur les
serveurs de google.
Nous avons vu de long en large qu’est que le datastore ainsi qu’ojectify, les différentservices
offert par Google appengine, comment authentifier nos utilisateurs en local et comment nous
pouvions stocker des données sur Google App Enginedans leDatastore, dans le Datastore via
Objectify.
Cela nous a permis d’implémenter une application a base des servlet qui permet a des
utilisateurs de poster des messages sur un furum de discussion.
Nous verrons dans le chapitre suivant comment fonctionne cette application de façon
persistante.
Introduction
Ce chapitre nous présente les possibilités d'utilisation d’application furumapp à
Il faut aussi savoir que Google nous génère automatiquement une administration pour
contrôler et surveiller notre application. Nous pouvons yaccéder en allant à l'adresse
http://localhost:8888/_ah/admin :
Donc nous pouvons autoriser toute personne possédant un compte Google à se connecter à
notre application. Les comptes Google sont généralement des adresses e-mail @gmail.com
mais il peut parfois s'agir d'autres emails dans certains cas.
Si nous testons cette l’application en local, nous verrons que le serveur "simule" une mini-
page de connexion qui ressemble à ceci :
Nous pouvons rentrer n'importe quelle adresse, nous serons immédiatement connectés.
Pour se déconnecter il suffit tout simplement de cliquer sur déconnecter nous serrons
automatiquement déconnecter de l’application.
Bien sûr, une fois notre application en ligne, nos utilisateurs passeront par le vrai processus de
connexion d'un compte Google :
On voit qu’il est connecter et qu’il est entrant d’ecrire un message, une fois qu’il poster le
message il sera affiche en haut du furum, car chaque fois utilisateur envoi un message, le
message sera afficher en haut.
On voit apparu en haut le message poster par aljazira qui : salut je suis aljazira.
Sachez bien que n’importe quel utilisateur peut poster de message sans pour avoir
s’authentifier, dans ce cas il ne sera pas identifier dans le furum on verra seulement qu’une
personne anonyme aposter un message.
Simulons toujours cela avec l’utilisateur aljazira lorsqu’il vase déconnecter et poster de
message.
On voit qu’une personne anonyme aposter un message qui est : salut je ne suis pas authentifie.
Elle permet a l’administrateur de faire plusieurs taches, de savoir qui est qui on poste de
message sur le furum, le cotenu et la date ala quelle le message est poste,atravers la base des
données datastore.
Noter bien que l’administrateur peut gérer plusieurs taches à travers cette console.
Conclusion
Cette partie de mise en n’œuvre de la solution implémentée met en évidence toutes les
compétences que nous acquises tous au longues de ce travail a fin de comprendre le
fonctionnement de façon explicite de notre application en simule quelque services et certaines
fonctionnement que nous offre app engine pour pouvoir manœuvrer notre application, pour
pouvoir tester la connexion en et authentifier nos utilisateurs en local.
Face au phénomène médiatique que représente le Cloud Computing actuellement, nous avons
ici effectué une définition pragmatique de cette technologie à partir de la littérature d'experts
en système d'information et en Cloud. Cette technologie en plein essor permet aux entreprises
de disposer d'infrastructures et de progiciels directement en ligne sur Internet. On a distingué
les différents types de Cloud possibles avec l'IAAS pour les infrastructures techniques, le
PAAS pour les infrastructures habillées avec des outils de middleware comme les bases de
données par exemple et le SAAS pour les services logiciels.
Ces trois types peuvent se déployer sous quatre formes de topologies différentes : le Cloud
public pour du déporté en ligne, le Cloud privé pour l'utilisation des concepts du Cloud en
interne à l'organisation, le Cloud hybride pour l'utilisation commune du public et du privé et
enfin le mode communautaire pour des entreprises géographiquement proches ou à intérêts
communs.
Le second chapitre a consisté en la mise en place d’une solution Cloud en mode SaaS ce qui
nous permis des faire une étude détaillée des différentes plateformes du PaaS existantes ce a
mené notre choix au niveau de la plateforme de Google qui est appengine dont nous avons
aussi étudié en détaille au cours du troisième chapitre pour pouvoir mettre en place une
application de discussion que nous avons mis en pratique au cours du dernier chapitre.
Notons bien que le thème de «Mise en place d’une solution Cloud (SaaS)» sera si Dieu le
veut d'un apport considérable pour nous car nous ayant permis d'apprendre beaucoup, àtravers
les nombreuses recherches et les pratiques quotidiennes sur le Cloud.
Notez bien que dans le but d’accroitre nos connaissance sur le domaine et faciliter la tache
aux consommateurs, ns perspectives sera de mettre en place une application E-Commerce qui
va permettre aux utilisateurs d’effectuer des commandes en lignes des produits que nous
allons mettre a leurs dispositions si Dieu le veut.
- http://www.siteduzero.com/informatique/tutoriels/creez-votre-application-web-avec-
java-ee pages vues le 30/02/2016
Documents consultés :
- montez-votre-site-dans-le-Cloud-avec-google-app-engine
- ProgrammingGoogleAppEngine
- Google-Cloud-Plateform
- Livre-blanc-EuroCloud
- guide-saas-du-syntec
- Le_SaaS_dans_le_SI_de_l_entreprise_2011
- Etude et mise en place dune solution Cloud computing privée pour une entreprise
Dédicace---------------------------------------------------------------------------------------------------i
Remerciements-----------------------------------------------------------------------------------------ii
Liste des tableaux--------------------------------------------------------------------------------------v
Listes des figures--------------------------------------------------------------------------------------vi
Listes des sigles et abréviations-------------------------------------------------------------------vi
Résume---------------------------------------------------------------------------------------------------ix
Introduction générale---------------------------------------------------------------------------------1
Chapitre 1 : Etat de l'art sur le Cloud computing----------------------------------------------3
Introduction-------------------------------------------------------------------------------------------- 4
I. Définition du Cloud computing----------------------------------------------------------------4
II. Historique du Cloud Computing--------------------------------------------------------------5
III. Les différents services du Cloud computing---------------------------------------------6
III.1. Infrastructure as a Service (IaaS)--------------------------------------------------------6
III.2. Plateform as a Service (PaaS )-------------------------------------------------------------6
III.3. Software as a Service (SaaS)---------------------------------------------------------------7
III.4. Data as a Service (SaaS)---------------------------------------------------------------------8
IV. Les Modèles de déploiement du Cloud computing-------------------------------------9
IV.1. Le Cloud privé--------------------------------------------------------------------------------- 9
IV.1.1. Cloud privé internalisé----------------------------------------------------------------9
IV.1.2. Cloud privé externalisé--------------------------------------------------------------10
IV.2. Le Cloud communautaire-----------------------------------------------------------------10
IV.3. Le Cloud public.-----------------------------------------------------------------------------10
IV.4. Le Cloud hybride---------------------------------------------------------------------------- 11
V. Avantages et inconvénients du Cloud computing----------------------------------------11
V.1. Avantages------------------------------------------------------------------------------------- 11
V.2. Inconvénients-------------------------------------------------------------------------------- 12
VI. Cloud Computing et le Cluster------------------------------------------------------------13
VII. Sécurité dans le Cloud Computing-------------------------------------------------------13
VII.1. La sécurité des données------------------------------------------------------------------14
VII.2. La sécurité des infrastructures----------------------------------------------------------15