SlideShare une entreprise Scribd logo
1  sur  65
Google App Engine Une introduction L’infrastructure de Google pour servir vos applications.
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
Evolutions typiques d’une appplication en ligne 1
Evolutions typiques d’une appplication en ligne 2
Evolutions typiques d’une appplication en ligne 3
Evolutions typiques d’une appplication en ligne 5 …
LiveJournal circa 2007 "LiveJournal: Behind the Scenes“ par Brad Fitzpatrick's USENIX '07 talk:
Beaucoup de travail et d’itérations… ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
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…
Google App Engine : Les éléments clés du design  ,[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],Google App Engine : Les bonnes pratiques
LiveJournal circa 2007 Frontends Storage Application Servers Memcache Static File Servers "LiveJournal: Behind the Scenes“ par Brad Fitzpatrick's USENIX '07 talk:
Architecture générale
Profitez de l’infrastructure Google Traitements Parrallèles Montée en charge prévue dès le départ Disponibilité globale Configuration automatique (donc pas de configuration) Sécurisation des applications par défaut
Pour quels types d’application ? Des utilisateurs authentifiés, des droits d’accès Des données propres à ces utilisateurs Des interfaces WEB pour manipuler et présenter celles-ci. Un grand nombre de consultations et de mises à jour simples Quelques traitements lourds en tâche de fond Des interconnexions internet ou intranet
Pourquoi Google App Engine ? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Un exemple Poser des questions au président Obama  via une application sur AppEngine.
Ces derniers 18 mois… Apr 2008 Support de Python May 2008 Memcache, Images API Jul 2008 Logs export Aug 2008 Batch write/delete Oct 2008 HTTPS support Dec 2008 Console d’administration, Quotas Feb 2009 Facturation, Fichiers + gros Apr 2009 Support de Java , DB import, cron, SDC May 2009 Key-only queries Jun 2009 Task queues Aug 2009 Kindless queries Sep 2009 XMPP Oct 2009 Incoming Email
Java ou Python ? Vous êtes libres ! La même infrastructure Les mêmes services spécialisés La même console d’administration
Ou un autre langage ? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Duke, the Java mascot Copyright © Sun Microsystems Inc., all rights reserved.
Une console d’administration unique
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
Les ressources mesurées http://code.google.com/appengine/docs/quotas.html
Définir ses structures de données ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Le stockage de données s’appuie sur BigTable Sort Machine #2 Machine #3 Machine #1 ,[object Object],[object Object],[object Object],[object Object],[object Object]
Récupérer les données via le bon index ,[object Object],[object Object],[object Object],[object Object]
Requêtes sur une propriété ,[object Object],[object Object],[object Object]
Comment créer les index ?  ,[object Object],[object Object]
Concevoir le modèle de données ,[object Object],[object Object],[object Object],SELECT *  FROM Person  WHERE birth_year >= :min  AND birth_year <= :max SELECT *  FROM Person  WHERE birth_year >= :min  AND height <= :maxHeight OUI NON
URL Fetch & Memcache ,[object Object],[object Object],[object Object],Mémoire cache distribuée persistente Cache optimiste  Service stable, robuste et très spécialisé
Images et messagerie Pour les envois, on utilise  JavaMail (javax.mail) L’expéditeur est le compte administrateur Une URL particulière reçoit le courrier entrant Stockez les images. Transformez les !  (rotation, translation, « j’ai de la chance »)
Votre application se connecte aux messageries instantannées compatibles XMPP (Google Talk) Une URL particulière traite les messages entrants anything @ app-id .appspotchat.com [email_address] Messagerie instantannée
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
Pour les traitements lourds : Tâches et files d’attente (expérimental) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ajouts récents Import et export de masse  (expérimental en python) Secure Data Connector : Accès sécurisé à vos données en intranet
Démarrer en douceur…. ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
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
Appengine+GWT : l’intégration complète +
AJAX... C’est quoi ? ,[object Object],[object Object],[object Object]
La changement de point de vue Ajax
La dérive à éviter ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
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.
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 applicatif Open Source sous Apache 2.0
Google Web Toolkit : les fonctionnalités ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Comment çà marche ?
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 ?
Code against Java UI libraries The compiler translates Java source to highly-optimized JS Comment çà marche ?
Code against Java UI libraries The compiler translates Java source to highly-optimized JS Generates browser-compliant JS + HTML files Comment çà marche ?
A chacun son code optimisé Optimisé pour le développeur Optimisé pour chaque navigateur
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
Deferred Binding en image
Les Avantages GWT : support de l’historique du navigateur tabPanel.add( new  HTML( &quot;<h1>Page 1 Content</h1>&quot; ),  &quot; Page 1 &quot; ); tabPanel.add( new  HTML( &quot;<h1>Page 2 Content</h1>&quot; ),  &quot; Page 2 &quot; ); tabPanel.addTabListener( new  TabListener() { @Override public   void  onTabSelected(SourcesTabEvents sender,  int  tabIndex) { // Push an item onto the history stack History. newItem ( &quot;page&quot;  + tabIndex); } History.addHistoryListener( new  HistoryListener() { public   void  onHistoryChanged(String historyToken) { if (tokenIsValid(historyToken)) {  tabPanel.selectTab(getTabIndex(historyToken)); } } };
Les Avantages GWT : des développements plus rapides ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Pour résumer  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Les librairies existantes ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
GWT 2.0 : chargement progressif Size of Initial JavaScript Download (KB) 375 750 1125 1500 0 7x Decrease In Initial Download Size with runAsync() 1400 KB 200 KB 1125
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
GWT 2.0: ImageBundle Pour afficher 11 images, on ne va pas charger 11 fichiers différents, mais un seul
Qui utilise GWT ?
Google Wave
Google Health
Mobile
Lombardi Blueprint Google Web Toolkit
ContactOffice Google Web Toolkit
Faites un tour dans la galerie GWT ! Google Web Toolkit http://gwtgallery.appspot.com/

Contenu connexe

En vedette

Affinity Engine - Recommandations personnalisées - Offre Affinity Items
Affinity Engine - Recommandations personnalisées - Offre Affinity ItemsAffinity Engine - Recommandations personnalisées - Offre Affinity Items
Affinity Engine - Recommandations personnalisées - Offre Affinity ItemsAffinity Engine
 
Recommandations avec Neo4j et le GraphAware Recommendation Engine
Recommandations avec Neo4j et le GraphAware Recommendation EngineRecommandations avec Neo4j et le GraphAware Recommendation Engine
Recommandations avec Neo4j et le GraphAware Recommendation EngineChristophe Willemsen
 
Smart City - Le rôle stratégique des acteurs publics
Smart City - Le rôle stratégique des acteurs publicsSmart City - Le rôle stratégique des acteurs publics
Smart City - Le rôle stratégique des acteurs publicsJérémie34
 
Introduction au cloud computing
Introduction au cloud computingIntroduction au cloud computing
Introduction au cloud computingStéphane Traumat
 
Search Engine Optimization
Search Engine Optimization Search Engine Optimization
Search Engine Optimization ch.ch
 
LNG FUEL & DUAL FUEL ENGINE
LNG FUEL & DUAL FUEL ENGINELNG FUEL & DUAL FUEL ENGINE
LNG FUEL & DUAL FUEL ENGINENguyen Tri
 
Network Meeting - Integration von Camunda mit Liferay
Network Meeting - Integration von Camunda mit LiferayNetwork Meeting - Integration von Camunda mit Liferay
Network Meeting - Integration von Camunda mit Liferaycamunda services GmbH
 
JUG Luzern: Open Source BPM mit BPMN 2.0 und Java
JUG Luzern: Open Source BPM mit BPMN 2.0 und JavaJUG Luzern: Open Source BPM mit BPMN 2.0 und Java
JUG Luzern: Open Source BPM mit BPMN 2.0 und Javacamunda services GmbH
 
Introduction to Oracle Grid Engine
Introduction to Oracle Grid Engine Introduction to Oracle Grid Engine
Introduction to Oracle Grid Engine Morteza Zakeri
 
Slidedeck Datenanalysen auf Speed - Oracle R Enterprise (ORE) Demo - DOAG Big...
Slidedeck Datenanalysen auf Speed - Oracle R Enterprise (ORE) Demo - DOAG Big...Slidedeck Datenanalysen auf Speed - Oracle R Enterprise (ORE) Demo - DOAG Big...
Slidedeck Datenanalysen auf Speed - Oracle R Enterprise (ORE) Demo - DOAG Big...Nadine Schoene
 
Testgetriebene Geschäftsprozessmodellierung
Testgetriebene GeschäftsprozessmodellierungTestgetriebene Geschäftsprozessmodellierung
Testgetriebene GeschäftsprozessmodellierungZambrovski Simon
 
WJAX 2012: Dreamteam "BPM + Java EE"
WJAX 2012: Dreamteam "BPM + Java EE"WJAX 2012: Dreamteam "BPM + Java EE"
WJAX 2012: Dreamteam "BPM + Java EE"camunda services GmbH
 
Ein Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMN
Ein Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMNEin Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMN
Ein Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMNComsysto Reply GmbH
 
7 Tipps für erfolgreiches SEA Autor Patrick Palz
7 Tipps für erfolgreiches SEA Autor Patrick Palz7 Tipps für erfolgreiches SEA Autor Patrick Palz
7 Tipps für erfolgreiches SEA Autor Patrick PalzPatrick Palz
 
Hadoop et son écosystème
Hadoop et son écosystèmeHadoop et son écosystème
Hadoop et son écosystèmeKhanh Maudoux
 
Search Engine Optimization Introduction
Search Engine Optimization IntroductionSearch Engine Optimization Introduction
Search Engine Optimization IntroductionLukas Oppermann
 

En vedette (17)

Affinity Engine - Recommandations personnalisées - Offre Affinity Items
Affinity Engine - Recommandations personnalisées - Offre Affinity ItemsAffinity Engine - Recommandations personnalisées - Offre Affinity Items
Affinity Engine - Recommandations personnalisées - Offre Affinity Items
 
Search Engine Advertising - Wir zeigen wie es funktioniert!
Search Engine Advertising - Wir zeigen wie es funktioniert!Search Engine Advertising - Wir zeigen wie es funktioniert!
Search Engine Advertising - Wir zeigen wie es funktioniert!
 
Recommandations avec Neo4j et le GraphAware Recommendation Engine
Recommandations avec Neo4j et le GraphAware Recommendation EngineRecommandations avec Neo4j et le GraphAware Recommendation Engine
Recommandations avec Neo4j et le GraphAware Recommendation Engine
 
Smart City - Le rôle stratégique des acteurs publics
Smart City - Le rôle stratégique des acteurs publicsSmart City - Le rôle stratégique des acteurs publics
Smart City - Le rôle stratégique des acteurs publics
 
Introduction au cloud computing
Introduction au cloud computingIntroduction au cloud computing
Introduction au cloud computing
 
Search Engine Optimization
Search Engine Optimization Search Engine Optimization
Search Engine Optimization
 
LNG FUEL & DUAL FUEL ENGINE
LNG FUEL & DUAL FUEL ENGINELNG FUEL & DUAL FUEL ENGINE
LNG FUEL & DUAL FUEL ENGINE
 
Network Meeting - Integration von Camunda mit Liferay
Network Meeting - Integration von Camunda mit LiferayNetwork Meeting - Integration von Camunda mit Liferay
Network Meeting - Integration von Camunda mit Liferay
 
JUG Luzern: Open Source BPM mit BPMN 2.0 und Java
JUG Luzern: Open Source BPM mit BPMN 2.0 und JavaJUG Luzern: Open Source BPM mit BPMN 2.0 und Java
JUG Luzern: Open Source BPM mit BPMN 2.0 und Java
 
Introduction to Oracle Grid Engine
Introduction to Oracle Grid Engine Introduction to Oracle Grid Engine
Introduction to Oracle Grid Engine
 
Slidedeck Datenanalysen auf Speed - Oracle R Enterprise (ORE) Demo - DOAG Big...
Slidedeck Datenanalysen auf Speed - Oracle R Enterprise (ORE) Demo - DOAG Big...Slidedeck Datenanalysen auf Speed - Oracle R Enterprise (ORE) Demo - DOAG Big...
Slidedeck Datenanalysen auf Speed - Oracle R Enterprise (ORE) Demo - DOAG Big...
 
Testgetriebene Geschäftsprozessmodellierung
Testgetriebene GeschäftsprozessmodellierungTestgetriebene Geschäftsprozessmodellierung
Testgetriebene Geschäftsprozessmodellierung
 
WJAX 2012: Dreamteam "BPM + Java EE"
WJAX 2012: Dreamteam "BPM + Java EE"WJAX 2012: Dreamteam "BPM + Java EE"
WJAX 2012: Dreamteam "BPM + Java EE"
 
Ein Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMN
Ein Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMNEin Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMN
Ein Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMN
 
7 Tipps für erfolgreiches SEA Autor Patrick Palz
7 Tipps für erfolgreiches SEA Autor Patrick Palz7 Tipps für erfolgreiches SEA Autor Patrick Palz
7 Tipps für erfolgreiches SEA Autor Patrick Palz
 
Hadoop et son écosystème
Hadoop et son écosystèmeHadoop et son écosystème
Hadoop et son écosystème
 
Search Engine Optimization Introduction
Search Engine Optimization IntroductionSearch Engine Optimization Introduction
Search Engine Optimization Introduction
 

Similaire à GtugDakar AppEngine, Gwt

Développement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EEDéveloppement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EESabri Bouchlema
 
Ma stack d'outils agiles, tout un programme !
Ma stack d'outils agiles, tout un programme !Ma stack d'outils agiles, tout un programme !
Ma stack d'outils agiles, tout un programme !Cédric Leblond
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Julien Dubois
 
Conférence Titanium + Alloy au JUG Montpellier
Conférence Titanium + Alloy au JUG MontpellierConférence Titanium + Alloy au JUG Montpellier
Conférence Titanium + Alloy au JUG MontpellierDamien Laureaux
 
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...PimpMySharePoint
 
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...PimpMySharePoint
 
20120402 nantes gtug - app engine
20120402   nantes gtug - app engine20120402   nantes gtug - app engine
20120402 nantes gtug - app engineGDG Nantes
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
Google App Engine For Java
Google App Engine For JavaGoogle App Engine For Java
Google App Engine For Javatcouery
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Ippon
 
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...PimpMySharePoint
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...ENSIBS
 
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexesSayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexesSayehHiba1
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8davrous
 
Yass-RSI-Bootstrap.pptx
Yass-RSI-Bootstrap.pptxYass-RSI-Bootstrap.pptx
Yass-RSI-Bootstrap.pptxyassinesouli2
 

Similaire à GtugDakar AppEngine, Gwt (20)

Développement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EEDéveloppement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EE
 
Java Entreprise Edition
Java Entreprise EditionJava Entreprise Edition
Java Entreprise Edition
 
Spring Boot RestApi.pptx
Spring Boot RestApi.pptxSpring Boot RestApi.pptx
Spring Boot RestApi.pptx
 
La plateforme JEE
La plateforme JEELa plateforme JEE
La plateforme JEE
 
Ma stack d'outils agiles, tout un programme !
Ma stack d'outils agiles, tout un programme !Ma stack d'outils agiles, tout un programme !
Ma stack d'outils agiles, tout un programme !
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017
 
Conférence Titanium + Alloy au JUG Montpellier
Conférence Titanium + Alloy au JUG MontpellierConférence Titanium + Alloy au JUG Montpellier
Conférence Titanium + Alloy au JUG Montpellier
 
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
 
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
 
Google appengine&guice
Google appengine&guiceGoogle appengine&guice
Google appengine&guice
 
20120402 nantes gtug - app engine
20120402   nantes gtug - app engine20120402   nantes gtug - app engine
20120402 nantes gtug - app engine
 
Meteor js 1.0
Meteor js 1.0Meteor js 1.0
Meteor js 1.0
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Google App Engine For Java
Google App Engine For JavaGoogle App Engine For Java
Google App Engine For Java
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
 
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
La gouvernance, ou comment rapprocher les équipes de développement et d'infra...
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
 
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexesSayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8
 
Yass-RSI-Bootstrap.pptx
Yass-RSI-Bootstrap.pptxYass-RSI-Bootstrap.pptx
Yass-RSI-Bootstrap.pptx
 

GtugDakar AppEngine, Gwt

  • 1. Google App Engine Une introduction L’infrastructure de Google pour servir vos applications.
  • 2. 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
  • 3. Evolutions typiques d’une appplication en ligne 1
  • 4. Evolutions typiques d’une appplication en ligne 2
  • 5. Evolutions typiques d’une appplication en ligne 3
  • 6. Evolutions typiques d’une appplication en ligne 5 …
  • 7. LiveJournal circa 2007 &quot;LiveJournal: Behind the Scenes“ par Brad Fitzpatrick's USENIX '07 talk:
  • 8.
  • 9. 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…
  • 10.
  • 11.
  • 12. LiveJournal circa 2007 Frontends Storage Application Servers Memcache Static File Servers &quot;LiveJournal: Behind the Scenes“ par Brad Fitzpatrick's USENIX '07 talk:
  • 14. Profitez de l’infrastructure Google Traitements Parrallèles Montée en charge prévue dès le départ Disponibilité globale Configuration automatique (donc pas de configuration) Sécurisation des applications par défaut
  • 15. Pour quels types d’application ? Des utilisateurs authentifiés, des droits d’accès Des données propres à ces utilisateurs Des interfaces WEB pour manipuler et présenter celles-ci. Un grand nombre de consultations et de mises à jour simples Quelques traitements lourds en tâche de fond Des interconnexions internet ou intranet
  • 16.
  • 17. Un exemple Poser des questions au président Obama via une application sur AppEngine.
  • 18. Ces derniers 18 mois… Apr 2008 Support de Python May 2008 Memcache, Images API Jul 2008 Logs export Aug 2008 Batch write/delete Oct 2008 HTTPS support Dec 2008 Console d’administration, Quotas Feb 2009 Facturation, Fichiers + gros Apr 2009 Support de Java , DB import, cron, SDC May 2009 Key-only queries Jun 2009 Task queues Aug 2009 Kindless queries Sep 2009 XMPP Oct 2009 Incoming Email
  • 19. Java ou Python ? Vous êtes libres ! La même infrastructure Les mêmes services spécialisés La même console d’administration
  • 20.
  • 22. 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
  • 23. Les ressources mesurées http://code.google.com/appengine/docs/quotas.html
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31. Images et messagerie Pour les envois, on utilise  JavaMail (javax.mail) L’expéditeur est le compte administrateur Une URL particulière reçoit le courrier entrant Stockez les images. Transformez les ! (rotation, translation, « j’ai de la chance »)
  • 32. Votre application se connecte aux messageries instantannées compatibles XMPP (Google Talk) Une URL particulière traite les messages entrants anything @ app-id .appspotchat.com [email_address] Messagerie instantannée
  • 33. 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
  • 34.
  • 35. Ajouts récents Import et export de masse (expérimental en python) Secure Data Connector : Accès sécurisé à vos données en intranet
  • 36.
  • 37. 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
  • 39.
  • 40. La changement de point de vue Ajax
  • 41.
  • 42. 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.
  • 43. 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 applicatif Open Source sous Apache 2.0
  • 44.
  • 46. 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 ?
  • 47. Code against Java UI libraries The compiler translates Java source to highly-optimized JS Comment çà marche ?
  • 48. Code against Java UI libraries The compiler translates Java source to highly-optimized JS Generates browser-compliant JS + HTML files Comment çà marche ?
  • 49. A chacun son code optimisé Optimisé pour le développeur Optimisé pour chaque navigateur
  • 50. 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
  • 52. Les Avantages GWT : support de l’historique du navigateur tabPanel.add( new HTML( &quot;<h1>Page 1 Content</h1>&quot; ), &quot; Page 1 &quot; ); tabPanel.add( new HTML( &quot;<h1>Page 2 Content</h1>&quot; ), &quot; Page 2 &quot; ); tabPanel.addTabListener( new TabListener() { @Override public void onTabSelected(SourcesTabEvents sender, int tabIndex) { // Push an item onto the history stack History. newItem ( &quot;page&quot; + tabIndex); } History.addHistoryListener( new HistoryListener() { public void onHistoryChanged(String historyToken) { if (tokenIsValid(historyToken)) { tabPanel.selectTab(getTabIndex(historyToken)); } } };
  • 53.
  • 54.
  • 55.
  • 56. GWT 2.0 : chargement progressif Size of Initial JavaScript Download (KB) 375 750 1125 1500 0 7x Decrease In Initial Download Size with runAsync() 1400 KB 200 KB 1125
  • 57. 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
  • 58. GWT 2.0: ImageBundle Pour afficher 11 images, on ne va pas charger 11 fichiers différents, mais un seul
  • 65. Faites un tour dans la galerie GWT ! Google Web Toolkit http://gwtgallery.appspot.com/

Notes de l'éditeur

  1. CONFIG PATH OF REQUEST SCALABLE your DB is consuming resources that you could be using to serve traffic RELIABLE Next step?
  2. CONFIG PATH OF REQUEST SCALABLE your DB is consuming resources that you could be using to serve traffic RELIABLE Next step?
  3. CONFIG PATH OF REQUEST SCALABLE your DB is consuming resources that you could be using to serve traffic RELIABLE Next step?
  4. CONFIG PATH OF REQUEST SCALABLE your DB is consuming resources that you could be using to serve traffic RELIABLE Next step?
  5. Brad Fitzpatrick presented the LiveJournal LAMP stack in his talk at USENIX &apos;07 - similar to app engine But let&apos;s take a step back and look at the steps that most developers, including those at LiveJournal take to get to this stage.
  6. We learned the hard way how to make webapps scale. We have a lot of experience with this stuff It led us to have these design motivations. explain statelessness and specialization
  7. Brad Fitzpatrick presented the LiveJournal LAMP stack in his talk at USENIX &apos;07 - similar to app engine But let&apos;s take a step back and look at the steps that most developers, including those at LiveJournal take to get to this stage.
  8. * Here is a high level view of the Google App Engine Stack - standard web three tier topology - Go over components and what they do * Frontend * Application (app) Servers * App Master * Memcache - distributed in-memory cache. Good  * Datastore * various other apis - There&apos;s a lot of stuff going on here, so let&apos;s start with a familiar example ___________________ different art here primary colors are distracting Explain what memcache is and what it&apos;s good for
  9. Beneficios son los mismos del python
  10. I&apos;m guessing most people have a rough idea of what GWT can do, but I want to quickly hit the hight points on this slide having way too much text.
  11. I&apos;m guessing most people have a rough idea of what GWT can do, but I want to quickly hit the hight points on this slide having way too much text.