Nous vivons actuellement une nouvelle génération de l’informatique : le Cloud Computing. Le Cloud ou Cloud Computing, ou « informatique en nuages », est un nouveau modèle informatique qui consiste à proposer des services informatiques sous forme de services à la demande, accessibles de n’importe où, n’importe quand et par n’importe qui. Le « Google Cloud Messaging for Android » (GCM) est un service qui permet aux développeurs d’envoyer des données depuis un serveur vers les dispositifs Android des utilisateurs d’une application en utilisant le Cloud de Google. Le service a été dévoilé à la conférence Google I/o (Innovation/open) 2012 tenu à Moscone (San Francisco).
Le caractère récent et l’applicabilité de ce service intéressant suscite un engagement dans son étude afin de pouvoir la maîtriser. C’est dans cette vision qu’est née l’idée de ce mémoire intitulé : « Utilisation de la plateforme Google Cloud Messaging for Android pour le développement d’un mécanisme de notification ». Il s’agit de l’élaboration d’un système Cloud public de notification instantanée utilisant le GCM, dénommé : « Hafatra ».
PRESENTATION DU CLOUD COMPUTING
Le grand public utilise depuis longtemps le Cloud Computing sans le savoir. Quand on utilise son web mail, Hotmail, Gmail ou autre, on fait du Cloud Computing. Le Cloud Computing fait référence à la dématérialisation de l’informatique, c’est à dire à la déportation de toutes les opérations normalement effectuées sur ordinateur sur des serveurs distants, autrement dit à travers internet. L’accès peut être gratuit, ou sur abonnement .
Historique
La première énonciation de l’idée du Cloud, date de 1960, et de John McCarthy. “Computation may someday be organized as a public utility.” (Les ressources informatiques deviendront un jour d’utilité publique).- John McCarthy, principal pionnier de l’intelligence artificielle avec Marvin Lee Minsky. Dans les débuts des années 90, le mot Cloud est apparu pour désigner des réseaux disposant d’un mode de transfert asynchrone, et il y a une dizaine d’années, l’expression Cloud Computing a pris de plus en plus d’importance. En 1999, Salesforce.com fut le premier hébergeur de Cloud, suivi en 2002 par Amazon qui proposa un ensemble d’hébergement d’application, de stockage et d’offre d’emploi : le Mechanical Turk. En 2005, Amazon développa ses services : Amazon Web Services et en 2006, Elastic Compute Cloud ou EC2. Ce dernier fut le premier service de Cloud réellement accessible. En 2007, Google, IBM (International Business Machines Corporation) et des universités lancèrent un projet de recherche sur le Cloud qui permit de lui faire gagner en popularité et en consistance.
C’est en 2009 que la réelle explosion du Cloud survint avec l’arrivée sur le marché de sociétés comme Google (Google App Engine), Microsoft (Microsoft Azure), IBM (IBM Smart Business Service), Sun (Sun Cloud) et Canonical Ltd (Ubuntu Enterprise Cloud).
Définitions et approche
La définition opérationnelle retenue par le NIST (National Institute of Standards and Technology) est la suivante :
Définition 1.01 :
Le Cloud Computing est un modèle qui permet un accès réseau pratique et à la demande à des ressources informatiques configurables (ex : réseau, serveur, stockage, applications, et services) qui peuvent être fournies et desservies avec le minimum d’effort de gestion ou avec un service fournisseur d’interaction.
Définition 1.02 :
Un nuage (anglais Cloud) désigne l’ensemble des matériels, de raccordements réseau et de logiciels qui fournissent des services sophistiqués que les individus et les collectivités peuvent exploiter à volonté depuis n’importe où dans le monde.
Par souci de clarté, l’organisme américain NIST attribue au concept cinq caractéristiques nécessaires :
1 – Un ensemble de ressources en réseau, accessibles de partout: les ressources sont accessibles via un réseau (Internet ou réseau privé), à partir d’un ou plusieurs sites clients ;
2 – La mutualisation de ressource : le fournisseur mutualise les ressources et services qu’il propose à ses clients, ressources qui peuvent se trouver dans plusieurs centres de données répartis à travers le monde (d’où le terme de « nuages ») et dont la fourniture est indépendante de la localisation : l’usager ne connaît pas (et n’a a priori pas besoin de connaître) leur situation géographique ;
3 – Un libre-service à la demande : l’usager peut réserver ou libérer unilatéralement les ressources en fonction de ses besoins sans interaction avec le fournisseur ;
4 – Un accès rapide et souple à ces ressources : les ressources peuvent être réservées rapidement pour répondre à des besoins qui évoluent et être libérées tout aussi rapidement lorsque le besoin disparaît ;
5 – Enfin, une facturation à l’usage : l’utilisation des ressources et des services associés est contrôlée et mesurée et l’utilisateur facturé en fonction de l’usage qu’il en fait.
Architecture d’un Cloud
La plupart des architectures utilisées pour le Cloud Computing sont des data-centers et des serveurs avec plusieurs niveaux de virtualisation .
La virtualisation
Afin que le concept de Cloud puisse fonctionner, toutes les machines appartenant à ce Cloud doivent présenter la même configuration de base et toutes les applications doivent être en mesure d’être exécutées sur ce type de machines. En général il s’agit souvent de serveurs à processeur compatible x86 (Intel ou AMD) munies d’un hyperviseur (système d’exploitation minimal sur lequel tourneront les différentes tâches, chacune avec son système d’exploitation tel que Linux ou Windows). VSphere de VMware, par exemple, est un tel hyperviseur.
Définition 1.03 :
On parle de virtualisation, lorsqu’une application ne doit pas forcément être exécutée sur une machine spécifique (ce qui était presque toujours le cas par le passé et l’est encore souvent aujourd’hui), mais peut en principe tourner sur n’importe quel serveur d’un certain type faisant partie d’un pool (groupe de ressources de même type) .
De même, les différents serveurs ne sont dédiés à une application spécifique (par exemple la messagerie ou un site web), mais peuvent servir pour n’importe quelle application en fonction des besoins. Les serveurs sont dits banalisés.
|
Table des matières
INTRODUCTION GENERALE
CHAPITRE 1 PRESENTATION DU CLOUD COMPUTING
1.1 Introduction
1.2 Historique
1.3 Définitions et approche
1.4 Architecture d’un Cloud
1.4.1 La virtualisation
1.4.2 Le Data center
1.4.3 La plateforme collaborative
1.5 Modèles de service
1.5.1 Software As A Service (SAAS)
1.5.2 Infrastructure As A Service (IAAS)
1.5.3 Platform As A Service (PAAS)
1.6 Types de Cloud
1.6.1 Le Cloud privé
1.6.2 Le Cloud public
1.6.3 Le Cloud hybride
1.7 Conclusion
CHAPITRE 2 LA PLATEFORME ANDROID
2.1 Introduction
2.2 Présentation de la plateforme Android
2.3 Structure d’une application
2.3.1 Notion d’activité
2.3.2 Le fichier Manifest
2.3.3 Ressources
2.3.4 Uri
2.3.5 Interface
2.3.6 Le projet Maven
2.4 Conclusion
CHAPITRE 3 PRESENTATION DU SERVICE GCM
3.1 Introduction
3.2 Fonctionnement du service GCM
3.3 Architecture d’une application utilisant GCM
3.3.1 Déroulement d’un processus GCM
3.3.2 L’application serveur
3.3.3 L’application client Android
3.4 Concepts avancés
3.4.1 Durée de vie d’un message
3.4.2 Cas de dé enregistrement
3.5 Conclusion
CHAPITRE 4 L’APPLICATION HAFATRA
4.1 Introduction
4.2 Environnement de développement et outils
4.2.1 Les librairies nécessaires
4.2.2 Création d’un AVD
4.3 Création du projet sur Google Console
4.3.1 Activation du service GCM
4.3.2 Obtention de la clé de l’API
4.4 Création de l’application Android Client GCM
4.4.1 Développement de l’application
4.4.2 Obtention du Reg Id
4.5 Développement de l’application Serveur GCM
4.5.1 Développement du projet sur Eclipse
4.5.2 Content.java
4.5.3 POST2GCM.java
4.5.4 App.java
4.6 Test
4.6.1 Enregistrement de l’appareil sur GCM
4.6.2 Partage du RegId à l’application serveur
4.6.3 Réception du Reg Id par l’application serveur et envoi d’un message
4.7 Conclusion
CONCLUSION GENERALE