mardi 26 mai 2009

Cloud Computing : Créer votre première application avec GoogleApp Engine et java

clip_image002

Objectif

Ce tutorial a pour but de présenter la démarche à suivre pour déployer une application web Java EE dans la plateforme PaaS de Google : Google appengine.

Pour présenter GAE (Google appengine) : il suffit de pense à un serveur d'applications java capable de supporter une charge importante. Bien sûre, plusieurs API java ont été désactivé, ce qui rend impossible de deployer telqu'elles les applications J2EE classique.

Il permettra de :

- Tester GAE : Faire un premier test du PaaS (Plateforme As A Service) de Google avec java

- Vérifier la courbe d’apprentissage

- Tester les outillages offerts par Google

- Vérifier la qualité des informations présentées par le Tableau de bord : dans le sens vérifier la validité des informations données par le Tableau de Bord (DashBorad) de Google par rapport à des mesures réelles.

Ce tutorial présente une démarche pour passer du monde de développement en local vers l’univers de l’hébergement d’une application dans une infrastructure de type Cloud : Google App Engine. Il couvre les points importants pour créer un compte Google App Engine, le déploiement des versions et le suivi de l’activité de l’application à travers la console d’administration.

GAE c’est quoi ?

Google App Engine est une une plateforme permettant de déployer des applications web Python et maintenant Java, directement dans les Datacenters de Google.

Le découpage des rôles est simple : le développeur crée son application et la déploie dans l’infrastructure de Google App Engine et Google s’occupe de gérer la montée en charge de l’application et facture le temps consommé (après dépassement d’un quota gratuit).

Introduction

On l’attendait pour le milieu de l’année 2009, mais Google vient de la lancer officiellement au début de second trimestre 2009 : La « déclinaison » java de sa plate-forme Googe App Engine est désormais là.

C’est logique : il fallait réagir rapidement : pour faire barrage à Microsoft Azure.

Google se devait de riposter et proposer une alternative pour les développeurs.

La manœuvre est habile : supporter Java 6 et offrir un plugin Eclipse, permettrait à Google d’élargir la base de développeurs cible.

Google vise ainsi à faciliter la réutilisation de code source des applications existantes et à introduire les langages dynamique de type Groovy…

Préparer l’environnement

Créer un compte sur Google App Engine

Pour pouvoir créer un compte Google App Engine, il faut posséder compte email sur Gmail. Ce compte Gmail sera l’identifiant unique à utiliser pour se connecter ( Google a adopté le principe de l'OpenID)

Trois étapes pour créer un compte Google App Engine

ü Demander la création d’un compte le compte

ü Attendre l’arrivée d’un code secret par SMS pour compléter la création du compte GAE

ü Créer une application

Le lien : http://appengine.google.com/

clip_image004

clip_image006

Donner un numéro de GSM, pour recevoir le code d’authentification

clip_image008

En moins d’une seconde j’ai reçu le code du compte par SMS

L’étape suivante consiste à inscrire le code dans la page d’authentification.

clip_image010

Renseigner l’identifiant de l’application

Et le titre.

Ce dernier pourra être changé dans la suite

clip_image012

Enfin, l’application est crée

Application Registered Successfully

The application will use kbdsoft as an identifier. This identifier belongs in your application's app.yaml file as well. Learn more Note that this identifier cannot be changed.

Installer le plugin Eclipse de Google App Engine

J’ai commencé par télécharger Eclipse

La version recommandée est Eclipse 3.4 (Ganymede)

http://code.google.com/intl/fr/eclipse/docs/install-eclipse-3.4.html

Puis utiliser le lien suivant pour installer le pluging Eclipse pour GAE :

http://dl.google.com/eclipse/plugin/3.4

clip_image014

Choir les modules à installer

clip_image016

Vérifier l’installation

clip_image018

Et le paramétrage

clip_image020

Si besoin vérifier la configuration de GWT (Google essaye bien sûre de favoriser GWT, mais l’outil n’est pas limité à GWT)

clip_image022

Développer l’application

Les étapes à suivre dans ce tutorial

a. Récupérer une ancienne application web J2EE (faire un simple Hello World n’a pas d’intérêt, on sait d’avance que ça va marcher)

b. Créer un projet Déployer en local

c. Créer un projet Déployer dans les nuages (GAE)

d. Tester

Choix de l’application test :

Afin d’éviter le « Hello World » j’ai récupéré une ancienne application simple à partir de mon serveur SVN. J’ai choit une application simple pour tester un seul aspect à la fois. L’application date de 2005, cela me permet de vérifier la capacité de GAE à pérenniser les investissements.

En effet, s’il fallait réécrire toutes les applications avant de les déployer sur le Cloud : le concept n’aura aucune chance de survire au BUZZ.

Il s’agit d’une application Web traitant de l’aspect navigation et MVC. Elle est basée sur

· JSP

· Struts

· Struts Menu

Ce tutorial a pour objectif de « prendre la température » de ce que propose Google dans son PaaS, et de vérifier le prédicat suivant : « les développeurs java vont pouvoir capitaliser sur leurs expériences et utiliser les réflexes et habitudes,

Les aspects avancés ne sont pas inclus : ni base de données, ni Spring, ni Hibernate, ces aspects seront testés dans une phase ultérieure.

Cela permettra de vérifier si « dans les nuages », un développeur Java va se sentir « comme chez soit»

Création du projet Web :

La création d’une application est similaire à la création d’une application web avec WTP

J’ai crée ma premier WebApplication

clip_image024

Une fois crée le projet est une application web J2EE classique.

La principale nouveauté est la présence d’un fichier de config spécial de GAE

appengine-web.xml :

<sessions-enabled>truesessions-enabled>

Il suffit de copier les fichiers sources de l’ancienne Application « Version classique 2005 » dans le projet GAE qui vient d’être créer

J’ai copier le contenu source de mon ancienne application (date de 2005)

J’ai pris le soin de changer web.xml en conséquence

J’ai exécuté dans l’environnement local

clip_image025

Exécuter en local

J’ai exécuté dans l’environnement local

clip_image026

Ça marche

On observe une console de déploiement

Cette console n’est pas connu par les développeurs Java EE web d’Eclipse,

Mais elle n’a pas de grande difficulté à l’ appréhender

Ça permet par exemple de lancer le serveur d’application de GAE (du Jetty apparemment)

Le résulta est le suivant

Ça rappelle, à l’identique, le résultat de l’exécution de l’application sur Tomcat en 2005

clip_image028clip_image030

Mais attention la premier exécution d’un menu n’a pas fonctionné : en effet,

Ça ne marche pas


Google n’aime pas trop l’usage de la session, et impose qu’on le déclare officiellement

Il a raison, les pb de perf…

Bon, ce n’est pas grave,

Il suffit d’ajouter dans le fichier appengine-web.xml (web-inf/)

<sessions-enabled>truesessions-enabled>



Ainsi le fichier appengine-web.xml

<sessions-enabled>truesessions-enabled>

Relancer et ça marche

clip_image031

Déploiement dans les nuages (GAE)

Le déploiement dans les nuages

Le déploiement est assez simple : un menu Google est ajouté :

clip_image032

Renseigner le mot de passe de votre compte Gmail

clip_image033

Le log du déploiement

clip_image035

Le module est nommé par Google « com.oxia.gae.kbd.Kbd » (le package par défaut de l’application est com.oxia.gae)

Et voilà

http://kbdsoft.appspot.com/

Une fois déployé et ça marche : il suffit d’ouvrir le lien http://kbdsoft.appspot.com/ dans un navigateur web : une application web déployé dans les nuages

clip_image037

1 commentaires :

jamila a dit…

un tres bon tuto que j'en ai fortement profité

Enregistrer un commentaire

Architecte SOA & Professionnel Open Source Headline Animator

 
Khaled BEN DRISS
Cloud Computing, SOA et Web 2.0 : Des sujets techniques sur SOA et l'Open Source : de Java & .Net, PHP5, Symfony, à SaaS / PaaS en passant par Azure, google appengine, le BPM, la Modélisation et d'autres sujets du coté du serveur et cloud computing.