gtugdakar appengine, gwt

65
Google App Engine Une introduction L’infrastructure de Google pour servir vos applications.

Upload: hkairi

Post on 26-Dec-2014

1.518 views

Category:

Technology


0 download

DESCRIPTION

Une introduction à certaines technologies/services de Google .

TRANSCRIPT

Page 1: GtugDakar AppEngine, Gwt

Google App EngineUne introduction

L’infrastructure de Google pour servir vos applications.

Page 2: GtugDakar AppEngine, Gwt

Agenda

Les applications en ligne et la montée en charge

AppEngine : solution intégrée sur l’infrastructure Google

Les différents services

Google Web Toolkit l’intégration complète- le principe- la version 2.0- qui l’utilise

Page 3: GtugDakar AppEngine, Gwt

Evolutions typiques d’une appplication en ligne

1

Page 4: GtugDakar AppEngine, Gwt

Evolutions typiques d’une appplication en ligne

2

Page 5: GtugDakar AppEngine, Gwt

Evolutions typiques d’une appplication en ligne

3

Page 6: GtugDakar AppEngine, Gwt

Evolutions typiques d’une appplication en ligne

5 …

Page 7: GtugDakar AppEngine, Gwt

LiveJournal circa 2007"LiveJournal: Behind the Scenes“par Brad Fitzpatrick's USENIX '07 talk:

Page 8: GtugDakar AppEngine, Gwt

Beaucoup de travail et d’itérations…

Une application en ligne signifie : • Prévision des évolutions de traffic et d’usage• Planifier les ressources pour les montées en charge• Mise à jour et applications des patchs logiciels• Des personnes dédiées à l’exploitation• Licenses des services• Montées de version

Page 9: GtugDakar AppEngine, Gwt

Google App Engine

Ecrire une application capable de servir gratuitement 5 000 000 pages vues / mois.

L’infrastructure Google accueille votre application et gère les authentifications, la montée en charge, la distribution des ressources, etc…

Page 10: GtugDakar AppEngine, Gwt

Google App Engine : Les éléments clés du design

Utiliser les technologies mises au point par Google

Fournir un environnement intégré

Données distribuées

Des services spécialisés

Séparation étanche entre les applications

Page 11: GtugDakar AppEngine, Gwt

Promouvoir l’usage d’applications sans états Promouvoir la création de services spécialisés

Traiter beaucoup de requêtes “légères”

Encourager les réponses rapides

Google App Engine : Les bonnes pratiques

Page 12: GtugDakar AppEngine, Gwt

LiveJournal circa 2007

Frontends Storage

Application Servers

Memcache

Static File Servers

"LiveJournal: Behind the Scenes“par Brad Fitzpatrick's USENIX '07 talk:

Page 13: GtugDakar AppEngine, Gwt

Architecture générale

Page 14: GtugDakar AppEngine, Gwt

Profitez de l’infrastructure Google

Traitements ParrallèlesMontée en charge prévue dès le départDisponibilité globaleConfiguration automatique (donc pas de configuration)Sécurisation des applications par défaut

Page 15: GtugDakar AppEngine, Gwt

Pour quels types d’application ?

Des utilisateurs authentifiés, des droits d’accèsDes données propres à ces utilisateursDes interfaces WEB pour manipuler et présenter celles-ci.Un grand nombre de consultations et de mises à jour simplesQuelques traitements lourds en tâche de fondDes interconnexions internet ou intranet

Page 16: GtugDakar AppEngine, Gwt

Pourquoi Google App Engine ?

• Montée en charge• Performance• Standards• Coûts réduits• Intégration• Services• Distribution

Page 17: GtugDakar AppEngine, Gwt

Un exemplePoser des questions au président Obama via une application sur AppEngine.

Page 18: GtugDakar AppEngine, Gwt

Ces derniers 18 mois…Apr 2008 Support de PythonMay 2008 Memcache, Images APIJul 2008 Logs exportAug 2008 Batch write/deleteOct 2008 HTTPS supportDec 2008 Console d’administration, QuotasFeb 2009 Facturation, Fichiers + grosApr 2009 Support de Java, DB import, cron, SDCMay 2009 Key-only queriesJun 2009 Task queuesAug 2009 Kindless queriesSep 2009 XMPPOct 2009 Incoming Email

Page 19: GtugDakar AppEngine, Gwt

Java ou Python ?

Vous êtes libres !La même infrastructureLes mêmes services spécialisésLa même console d’administration

Page 20: GtugDakar AppEngine, Gwt

Ou un autre langage ?

• La communauté a implémenté le support d’autres langages via la JVM

JavaScalaJRuby (Ruby)GroovyQuercus (PHP)Rhino (JavaScript)Jython (Python)

Duke, the Java mascotCopyright © Sun Microsystems Inc., all rights reserved.

Page 21: GtugDakar AppEngine, Gwt

Une console d’administration unique

Page 22: GtugDakar AppEngine, Gwt

Un contrôle détaillé des ressources consommées

Deux types de quotas : fixes & facturables

Ces quotas sont calculés sur une période de 24h

On contrôle en plus la consommation de ressources par minute

Vous définissez un budget quotidien pour les quotas facturables

Les APIs permettent de connaître l’état de son compte à tout instant

Page 23: GtugDakar AppEngine, Gwt

Les ressources mesurées

http://code.google.com/appengine/docs/quotas.html

Page 24: GtugDakar AppEngine, Gwt

Définir ses structures de données

• Dans le Datastore on peut stocker des entités.

• Une entité se définit par :• Son genre (Kind)• Son identifiant • Un ensemble de propriétés

• On peut exécuter des requêtes sur les entités d’un genre donné avec des critères sur les valeurs des différentes propriétés et un ordre de tri.

• AppEngine maintient un index pour chaque type de requête qu’on peut exécuter dans l’application.

Page 25: GtugDakar AppEngine, Gwt

Le stockage de données s’appuie sur BigTable

Sort

Machine #2

Machine #3

Machine #1

Big Table n’est pas :

• Une base de données• Une base de données

distribuée

Mais plutôt :

• Un tableau trié réparti sur plusieurs machines

Page 26: GtugDakar AppEngine, Gwt

Récupérer les données via le bon index

SELECT * FROM Grandparent

• Kind index• Prefix = Grandparent• Scan!

Page 27: GtugDakar AppEngine, Gwt

Requêtes sur une propriété

• WHERE name >= 'B' and name < 'C' ORDER BY name1. RANGE = [Parent name B, Parent name C)• Scan! 

Page 28: GtugDakar AppEngine, Gwt

Comment créer les index ?

• La configuration des index se fait via un fichier XML.

• L’environnement de développement génère le fichier de configuration adéquat en fonction des requêtes exécutées par l’application.

Page 29: GtugDakar AppEngine, Gwt

Concevoir le modèle de données

• Critère de comparaison sur une seule propriété à la fois

• Toutes les entités d’un même genre n’ont pas forcément les mêmes propriétés. On ne peut pas mettre un critère sur une propriété qui n’est pas définie.

• Si on a un critère d’inégalité, il faut trier la réponse selon ce critère

SELECT * FROM Person WHERE birth_year >= :min AND birth_year <= :max

SELECT * FROM Person WHERE birth_year >= :min AND height <= :maxHeight

OUI NON

Page 30: GtugDakar AppEngine, Gwt

URL Fetch & Memcache

Récupérer du contenu de serveur à serveurEn Java, utiliser  java.net.URLConnection Fonctionne en HTTPS et en POST

Mémoire cache distribuée persistenteCache optimiste Service stable, robuste et très spécialisé

Page 31: GtugDakar AppEngine, Gwt

Images et messagerie

Pour les envois, on utilise  JavaMail (javax.mail)L’expéditeur est le compte administrateurUne URL particulière reçoit le courrier entrant

Stockez les images.Transformez les !

(rotation, translation, « j’ai de la chance »)

Page 32: GtugDakar AppEngine, Gwt

Votre application se connecte aux messageries instantannées compatibles XMPP (Google Talk)

Une URL particulière traite les messages entrants

[email protected]@appspot.com

Messagerie instantannée

Page 33: GtugDakar AppEngine, Gwt

Traitements réguliers : CRON

cron:- description: daily summary job  url: /tasks/summary  schedule: every 24 hours- description: monday morning mailout  url: /mail/weekly  schedule: every monday 9:00  timezone: Australia/NSW

Planifiez l’appel d’URL

Page 34: GtugDakar AppEngine, Gwt

Pour les traitements lourds :Tâches et files d’attente

(expérimental)

Pour les traitement lourds :• Découper le traitement en tâches• Confiez les tâches à des files d’attente• Les tâches seront effectuées plus tard :

o En fonction des ressources disponibles

o De vos priorités

Page 35: GtugDakar AppEngine, Gwt

Ajouts récents

Import et export de masse (expérimental en python)

Secure Data Connector :Accès sécurisé à vos données en intranet

Page 36: GtugDakar AppEngine, Gwt

Démarrer en douceur….

L’application typiquement gratuite :• 500 Mo de stockage• 2 Go par jour de bande passante• ~5M page vues par mois• 6.5 heures de CPU par jour• 1 Go storage• 650 000 URL Fetch calls• 2,000 emails• 1 Go de bande passante par jour• N tâches

Page 37: GtugDakar AppEngine, Gwt

Ressources:

code.google.com/appengine

code.google.com/p/googleappengine

http://groups.google.com/group/                                google-appengine                                google-appengine-java                                google-appengine-python

http://appgallery.appspot.com

Page 38: GtugDakar AppEngine, Gwt

Appengine+GWT : l’intégration complète

+

Page 39: GtugDakar AppEngine, Gwt

AJAX... C’est quoi ?• Asynchronous JavaScript And XML

• JavaScript permet de faire des appels serveurs asynchrones

• JavaScript permet ensuite de modifier le contenu de la page avec les éléments récupérés

Page 40: GtugDakar AppEngine, Gwt

La changement de point de vue Ajax

Page 41: GtugDakar AppEngine, Gwt

La dérive à éviter

• Un petit bout de script pour faire un effet sympathique• Un succès inattendu qui appelle plus de fonctionnalités• De plus en plus de développements Ajax• Prise en compte de plus en plus de navigateurs• Hum.. Çà commence à rudement se compliquer !• Result: “Un code spaghetti”

Page 42: GtugDakar AppEngine, Gwt

Google Web Toolkit : l’objectif

Enrichir l’expérience des internautes en permettant aux développeurs d’utiliser

les outils Java pour construire des applications AJAX supportées par tous

les navigateurs.

Page 43: GtugDakar AppEngine, Gwt

Google Web Toolkit pour faire court

Ecrivez l’application dans votre environnement de développement Java favori (netbeans, eclipse, intellij,…)Débuggez à l’aide d’un navigateur spécial (hosted mode)Compilez le code Java en JAVASCRIPT+HTML optimiséDéployez un ensemble de pages HTML/Javascript sans plugin, ni modification du serveur applicatifOpen Source sous Apache 2.0

Page 44: GtugDakar AppEngine, Gwt

Google Web Toolkit : les fonctionnalités

Librairies compatibles avec tous les navigateurs :• Interface utilisateur (DOM, widgets, ...)• Communication Client/Serveur (XHR, RPC, JSON, ...)• Infrastructure applicative Historique, Tests unitaires, Internationalisation, …• Services extérieurs Gadgets, Gears, Google Maps,…• Intégration de javascript natif (JSNI)

Page 45: GtugDakar AppEngine, Gwt

Comment çà marche ?

Page 46: GtugDakar AppEngine, Gwt

Code against Java UI libraries

Google Web Toolkit Weekly Report 09/01/2008 - 09/08/200 Google Web Toolkit Weekly Report 09/01/2008 - 09/08/200

Comment çà marche ?

Page 47: GtugDakar AppEngine, Gwt

Code against Java UI libraries

The compiler translates Java

source to highly-optimized JS

Comment çà marche ?

Page 48: GtugDakar AppEngine, Gwt

Code against Java UI libraries

The compiler translates Java

source to highly-optimized JS

Generates browser-

compliant JS + HTML files

Comment çà marche ?

Page 49: GtugDakar AppEngine, Gwt

A chacun son code optimisé

Optimisé pour le développeur

Optimisé pour chaque navigateur

Page 50: GtugDakar AppEngine, Gwt

Les Avantages GWT : des applications performantes

Le code est optimisé pour chaque navigateur

Le code évite les fuites mémoires

Deferred Binding, le résultat de la compilation est :- un package propre à chaque langue, navigateur- un script qui détecte le package à utiliser vous ne téléchargez que la partie utile

Page 51: GtugDakar AppEngine, Gwt

Deferred Binding en image

Page 52: GtugDakar AppEngine, Gwt

Les Avantages GWT : support de l’historique du navigateur

tabPanel.add(new HTML("<h1>Page 1 Content</h1>"), " Page 1 ");tabPanel.add(new HTML("<h1>Page 2 Content</h1>"), " Page 2 ");tabPanel.addTabListener(new TabListener() {@Overridepublic void onTabSelected(SourcesTabEvents sender, int tabIndex) {// Push an item onto the history stackHistory.newItem("page" + tabIndex);}

History.addHistoryListener(new HistoryListener() {public void onHistoryChanged(String historyToken) {if(tokenIsValid(historyToken)) { tabPanel.selectTab(getTabIndex(historyToken));}}};

Page 53: GtugDakar AppEngine, Gwt

Les Avantages GWT : des développements plus rapides

Toutes les fonctionnalités des IDE sont disponibles(refactoring, templates, debug)

Google Plugin for Eclipse • Supporte à la fois GWT et App Engine

Tests unitaires possibles en utilisant : Standard JUnit TestCase GWTTestCase HTMLUnit tests Selenium tests

Debugger en Java

Page 54: GtugDakar AppEngine, Gwt

Pour résumer

Google Web Toolkit est la solution idéale, car :Les applications Ajax produites sont très optimiséesLe développeur n’a plus à se soucier de :• Browser quirk headaches• Memory leaks• History support

Code réutilisableDéveloppements plus rapide (outils standards)Débug en java

Page 55: GtugDakar AppEngine, Gwt

Les librairies existantes

• GWT (http://code.google.com/webtoolkit/)

• Incubator  (http://code.google.com/p/google-web-toolkit-incubator/)

• Smart GWT (http://code.google.com/p/smartgwt/)

• GWT-Ext (http://code.google.com/p/gwt-ext/)

• IT Mill Toolkit (http://www.itmill.com/)

• GWT mosaic (http://code.google.com/p/gwt-mosaic/)

• Ext GWT (http://extjs.com/products/gxt/)

• Advanced GWT Components(http://advanced-gwt.sourceforge.net/) 

Page 56: GtugDakar AppEngine, Gwt

GWT 2.0 : chargement progressif

Size of Initial JavaScript Download (KB)

375

750

1125

1500

0

7x Decrease InInitial Download Sizewith runAsync()

1400 KB

200 KB

1125

Page 57: GtugDakar AppEngine, Gwt

Developer-guided code splitting with runAsync

public void onMySettingsLinkClicked() {

GWT.runAsync(new RunAsyncCallback() {

public void onSuccess() {new MySettingsDialog().show();}

public void onFailure(Throwable ohNo) {// indicate that something went wrong,// usually a connectivity or server problem}

Split point

Runs after a short (but improbable)

delay

Runs if required script

cannot be downloaded

Page 58: GtugDakar AppEngine, Gwt

GWT 2.0: ImageBundle

Pour afficher 11 images, on ne va pas charger 11 fichiers différents, mais un seul

Page 59: GtugDakar AppEngine, Gwt

Qui utilise GWT ?

Page 60: GtugDakar AppEngine, Gwt

Google Wave

Page 61: GtugDakar AppEngine, Gwt

Google Health

Page 62: GtugDakar AppEngine, Gwt

Mobile

Page 63: GtugDakar AppEngine, Gwt

Google Web Toolkit

Lombardi Blueprint

Page 64: GtugDakar AppEngine, Gwt

Google Web Toolkit

ContactOffice

Page 65: GtugDakar AppEngine, Gwt

Google Web Toolkit

Faites un tour dans la galerie GWT !

http://gwtgallery.appspot.com/