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
7. LiveJournal circa 2007 "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 "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
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
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
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
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( "<h1>Page 1 Content</h1>" ), " Page 1 " ); tabPanel.add( new HTML( "<h1>Page 2 Content</h1>" ), " Page 2 " ); tabPanel.addTabListener( new TabListener() { @Override public void onTabSelected(SourcesTabEvents sender, int tabIndex) { // Push an item onto the history stack History. newItem ( "page" + 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
CONFIG PATH OF REQUEST SCALABLE your DB is consuming resources that you could be using to serve traffic RELIABLE Next step?
CONFIG PATH OF REQUEST SCALABLE your DB is consuming resources that you could be using to serve traffic RELIABLE Next step?
CONFIG PATH OF REQUEST SCALABLE your DB is consuming resources that you could be using to serve traffic RELIABLE Next step?
CONFIG PATH OF REQUEST SCALABLE your DB is consuming resources that you could be using to serve traffic RELIABLE Next step?
Brad Fitzpatrick presented the LiveJournal LAMP stack in his talk at USENIX '07 - similar to app engine But let's take a step back and look at the steps that most developers, including those at LiveJournal take to get to this stage.
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
Brad Fitzpatrick presented the LiveJournal LAMP stack in his talk at USENIX '07 - similar to app engine But let's take a step back and look at the steps that most developers, including those at LiveJournal take to get to this stage.
* 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's a lot of stuff going on here, so let's start with a familiar example ___________________ different art here primary colors are distracting Explain what memcache is and what it's good for
Beneficios son los mismos del python
I'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.
I'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.