Google App Engine For Java
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Google App Engine For Java

on

  • 10,634 views

Présentation de la nouvelle offre Google App Engine pour Java

Présentation de la nouvelle offre Google App Engine pour Java

Statistics

Views

Total Views
10,634
Views on SlideShare
8,878
Embed Views
1,756

Actions

Likes
5
Downloads
223
Comments
0

17 Embeds 1,756

http://blog.ippon.fr 1201
http://localhost 301
http://mwerlen.blogspot.com 77
http://www.slideshare.net 46
http://ilabs.atosworldline.com 44
http://www.techgig.com 37
http://maxime.werlen.fr 14
http://mwerlen.blogspot.fr 10
http://mwerlen.github.io 7
https://ilabs.atosworldline.com 6
http://115.112.206.131 3
https://intranet.ippon.fr 2
https://jujo00obo2o234ungd3t8qjfcjrs3o6k-a-sites-opensocial.googleusercontent.com 2
http://webcache.googleusercontent.com 2
http://feedproxy.google.com 2
http://127.0.0.1:8795 1
http://alchemy.atosworldline.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Google App Engine For Java Presentation Transcript

  • 1. Document confidentiel - Ce document est la propriété exclusive d’Ippon Technologies et il ne peut être reproduit, publi é ou divulgu é sans son autorisation préalable Sommaire Effectifs par agence Google App Engine for Java Avril 2009
  • 2. Plan
    • Introduction
    • Pourquoi cette présentation ?
    • Présentation
      • Présentation des services
      • La vue globale
      • Le Cloud Computing
      • La vision de Google
    • Hello World
    • GAE pas-à-pas
      • L’infrastructure
      • Les services
      • Les outils
    • GAE & GWT 1.6
    • Le bilan
  • 3. INTRODUCTION
  • 4. Introduction
    • Google a annoncé le support de Java pour GAE le 07 avril 2009
      • GAE est un service qui permet de déployer des applications web sur l’infrastructure Google
      • GAE supportait uniquement Python depuis un an
      • Le service Python n’a pas eu un grand succès
      • Java était le langage le plus demandé (devant PHP) pour GAE
      • Java est déjà utilisé par Google pour Google Web Toolkit
      • Annonce simultanée de GAE Java et GWT 1.6
  • 5. PRÉSENTATION
  • 6. Vue globale
    • GAE: Dans les grandes lignes
      • Service de Google pour héberger des applications Web Java
      • Java ! => Format structure WAR
      • Scalabilité / haute disponibilité
      • Utilisation sous forme http://xxxxx.appspot.com
      • C’est gratuit avec des quotas
      • C’est des contraintes à prendre en compte
    • L’offre de services:
      • Infrastructure (Matériel, données, réseau ...)
      • Services (Cron, envoie de mail ...)
      • Outils (Console d’administration, plugin Eclipse, script ANT ...)
  • 7. Vue globale
    • Infrastructure:
      • OS: Linux
      • JVM: Java 6
      • Mémoire: -Xmx10g => plutôt 1g
      • X serveurs
      • LoadBalancing / FailOver
      • Moteur Web: Jetty
      • Google File System (pour les déploiements)
      • Data: BigTable (Sur GFS)
      • Compression HTTP (en frontal ?)
      • Cache statique (en frontal ?)
      • ...
  • 8. Vue globale
    • Services:
      • J2EE
        • Moteur JSP, Servlet
        • BigTable en accès JPA ou JDO ou API
        • Mail
        • Sécurité
        • Cache mémoire (JSR 107)
      • Autres
        • Cron
        • Gestion des images
        • Import / Export data
        • Accès aux logs
        • Accès aux services extérieurs en HTTP / HTTPS
        • Accès aux données entreprises : SDC
        • HTTPS (certificat Thawte Consulting cc / Google INC)
        • Personnalisation DNS
        • Versionning
        • ...
  • 9. Vue globale
    • Outils:
      • Console d’administration / statistiques
      • Plugin Eclipse
      • Tâche Ant
      • Serveur local avec simulation de l’environnement:
        • bigTable
        • GWT
        • Restrictions
        • ...
      • D’autres outils de l’offre Python
        • Import ?/ export bigTable
        • Extraction des logs
  • 10. Vue globale Cloud Computing Google (Stats, logs, Quotas) Déploiement (Stats, logs, Quotas) SDC HTTP/S Utilisateurs Communication Déploiement Utilisateurs Administrateurs Web Server / Jetty Application Services Cron Mail URL Fetch MemCache Images JPA / JDO BigTable GFS (Google File System) Console Administration Security WWW Entreprises API BigTable
  • 11. Vue globale
    • GAE répond enfin à un grand manque dans le monde Java:
      • Pas (peu) d’hébergement « gratuit » comme en PHP
        • PHP est populaire grâce aux hébergeurs gratuits (Free, ...)
        • Beaucoup de Blog, CMS, Wiki ... en PHP
    • GAE est surtout l’offre Cloud Computing de Google
      • Amazone est déjà présent sur le marché avec Java
  • 12. Cloud Computing
    • GAE: C’est l’offre Cloud Computing de Google
      • On déploie dans les nuages, et ils se débrouillent pour que ça marche !
      • Au même titre qu’Amazone avec EC2, Microsoft, IBM ...
      • Serveurs répartis dans le monde.
      • Un déploiement = propagation automatique sur n serveurs
    • Ne pas comparer GAE à OVH, dedibox ...
  • 13. La vision de Google
    • GAE est l’une des briques de la vision de Google:
      • Plus besoin d’un OS comme Windows
      • Un simple navigateur peut tout faire
        • Applications à distance
        • Données à distance
        • Briques:
          • Google Mail
          • Google Calendar
          • Google Doc
          • Google Map
          • Google Android
          • Google App Engine
          • Google Chrome
          • ...
        • Le JavaScript est plus rapide
        • Beaucoup d’attente d’HTML 5
  • 14. HELLO WORLD
  • 15. Hello World
    • Les ingrédients:
      • Java 5 ou 6
      • Eclipse 3.3 ou 3.4
      • Plugin GAE
        • Site (Eclipse): http://dl.google.com/eclipse/plugin/3.4
        • Doc: http://code.google.com/intl/fr/appengine/docs/java/tools/eclipse.html
      • Un compte GAE
        • http://appengine.google.com/
    • La recette:
      • Nouveau projet: « Web Application Project »
      • Deploy to App Engine
      • http://xxxxxxx.appspot.com/
  • 16. Hello World
    • Plugin: Très bien fait, simple et productif.
    • A voir: Le projet
      • web.xml
      • Servlet
      • => 100% standard & très simple
    • A voir: Le mode local
      • Simulation de GAE en local:
        • Restrictions
        • BigTable
        • ...
    • A voir: DataNucleus
      • lib
        • DataNucleus JDO/JPA
      • JDO !?
        • Obsolète
        • jdoconfig.xml
        • DataNucleus Enhancer => « Enhancement of classes »
  • 17. GAE PAS-À-PAS
  • 18. GAE PAS-À-PAS
    • L’infrastructure
  • 19. GFS / BigTable
    • Goggle File System
      • A ne pas confondre avec GFS (Global File System) de RedHat
      • Système de fichiers de Google
      • Distribué sur plusieurs serveurs
      • La perte d’un serveur n’est pas gênante => Duplication
    • BigTable
      • Système de base de données de google
      • Utilisé pour Google (search), Gmail ...
      • Basé su GFS
      • Base de données répartie, très performante
      • Pas de SQL => GQL
      • Nécessité de créer des index pour les recherches
      • Des contraintes à prendre en compte !
  • 20. Personnalisation DNS
    • Google offre la possibilité d’avoir son DNS
      • Une seule IP pour tous les sites GAE
      • Comme « Virtual Server » d’Apache
        • En fonction du nom DNS, aiguillage vers le bon site
      • Nécessité de configurer le CNAME pour vérification par Google.
  • 21. Quotas
    • Gratuit
      • En respectant les quotas
      • Quotas par jour
    • Taux maximum
      • Taux maximum / mn
      • 7400 req/mn
      • kill à 30s
    • Suivi
      • Suivi en temps réel
      • Par la console
  • 22. Quotas
    • Payant
      • Encore des quotas
      • Mais plus élevés
    • Taux maximum
      • Taux plus important
  • 23. HTTPS
    • HTTP et HTTPS disponible
      • Certificat de Google Inc / Thawte Consulting cc
      • Activation par appengine-web.xml
      • Possibilité de forcer HTTPS dans web.xml
    <?xml version= &quot;1.0&quot; encoding=&quot;utf-8&quot;?> <appengine-web-app xmlns= &quot;http://appengine.google.com/ns/1.0&quot;> ... <ssl-enabled>true</ssl-enabled> ... </appengine-web-app> <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <web-app xmlns=&quot;http://java.sun.com/xml/ns/javaee&quot; version=&quot;2.5&quot;> ... <security-constraint> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> ... </web-app>
  • 24. Compression & Cache
    • Les ressources statiques
      • Sont mises en cache par un équipement en frontal ?
      • Ne compte pas dans les quotas
      • Peuvent être explicitement déclarées
    • Compression
      • Fait par un équipement en frontal ?
      • Automatique si le navigateur le supporte
  • 25. Logs
    • Log classique Log4j
    • Consultable par la console
    • Récupérable par les outils
  • 26. Limitation Java
    • Google doit assurer la stabilité:
      • Pas de redémarrage de JVM
      • Déploiements successifs
      • Mutualisation des JVM (Class Loader)
    • Et donc:
      • Mêmes contraintes que J2EE
        • http://java.sun.com/blueprints/qanda/ejb_tier/restrictions.html
        • Pas d’I/O (socket, fichier)
        • Pas de Thread
        • API d’introspection
        • Synchronisation des threads
        • System.exit()
        • ...
    • La liste des classes du JRE supportées
      • http://code.google.com/appengine/docs/java/jrewhitelist.html
  • 27. Limitation Java
    • Les Frameworks supportés
      • Google tient à jour une liste des Frameworks supportés ou non: http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine
    • Fonctionne
      • J2EE: Servlet, JSP, JPA, JavaMail, XML, JSF 1.1
      • Langage: Groovy
      • Web: GWT, Struts, Wicket
      • Apache: Commons, log4j
      • Spring
    • Ne fonctionne pas
      • J2EE: WebServices, JMX, JNDI, EJB
      • Hibernate
      • JSF 1.2
      • Seam
  • 28. GAE PAS-À-PAS
    • Les outils
  • 29. Console d’administration
    • Général
      • Statistiques
      • Information sur les quotas (temps réél)
      • Affichage des logs
      • Liste des CRON
    • BigTable
      • Index
      • Vue des données / requêtage
    • Administration
      • Logs d’administration
      • Users
      • Version
      • DNS
    • Gestion du contrat
  • 30. Version
    • Possibilité de déployer plusieurs versions
      • Une version active
      • Les autres accessibles: http:// N .latest.xxxxx.appspot.com/
      • Le basculement « en production » se fait par la console
    • Configuration
      • Propriétés projet
      • appengine-web.xml
  • 31. GAE PAS-À-PAS
    • Les services
  • 32. Mail
    • Mail API standard
      • Très simple
      • Gestion multi-part, pièce jointe
      • Restriction sur l’émetteur: Seul admin
    private void mail(HttpServletRequest req, HttpServletResponse resp) throws Exception { Properties props = new Properties(); Session session = Session.getDefaultInstance(props, null); Message msg = new MimeMessage(session); msg.setFrom(new InternetAddress(&quot;xxxx.xxxx@gmail.com&quot;)); msg.addRecipient(Message.RecipientType.TO, new InternetAddress(&quot;xxxx.xxxx@gmail.com&quot;, &quot;xxxx xxxx&quot;)); msg.setSubject(&quot;Test Google App Engine&quot;); msg.setContent(&quot;<html><body><h1>Hello</h1> from Google App Engine<body></html>&quot;, &quot;text/html&quot;); Transport.send(msg); }
  • 33. MemCache
    • Cache mémoire JSR 107
    • Partagé entre les serveurs
      • Certainement sur BigTable
    • Propriétés
      • EXPIRATION_DELTA (secondes)
      • EXPIRATION_DELTA_MILLIS (millisecondes)
      • EXPIRATION (date)
  • 34. Sécurité
    • Standard web.xml
      • Uniquement compte Google
      • Uniquement rôle admin
      • Sinon ... do it yourself
    • API Google user pour avoir des informations
      • mail
      • Surnom
    <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <web-app xmlns=&quot;http://java.sun.com/xml/ns/javaee&quot; version=&quot;2.5&quot;> <security-constraint> <web-resource-collection> <url-pattern>/admin/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin</role-name> </auth-constraint> </security-constraint> </web-app>
  • 35. DataNucleus / JDO /JPA
    • DataNucleus
      • Choisi pour son moteur JPA / JDO multi support (LDAP, XML, JDBC ...)
      • Ancien moteur JDO
      • Léger
      • Pas connu
    • JDO
      • Ils l’ont déterré !?
      • Nécessite de l’« Enhancement » de classe
    • JPA
      • Le standard actuel (J2EE)
      • Transformé en JDO par DataNucleus
    • Limitations
      • Pas de relation n/n
      • Pas de fonction de groupe (min, max, sum ...)
      • Pas de polymorphisme dans les requêtes
      • ...
  • 36. UrlFetch
    • API HTTP standard
      • Fonctionne en HTTPS
    • SDC
      • Permets de sécuriser les accès entreprise
      • Agent à utiliser dans l’entreprise
      • Activatation: connection.setRequestProperty(&quot;use_intranet&quot;, &quot;true&quot;);
      • Permet de faire des connexions du client vers GAE en mode keep-alive pour traverser les firewall.
    private void http(HttpServletRequest req, HttpServletResponse resp) throws Exception { URL url = new URL(&quot;http://www.google.fr&quot;); BufferedReader reader = new BufferedReader(new InputStreamReader( url.openStream() ,&quot;ISO-8859-1&quot;)); String line; while ((line = reader.readLine()) != null) { resp.getWriter().println(line); } reader.close(); }
  • 37. Cron
    • Possibilité d’avoir des traitements planifiés
      • Fonctionne par appel d’URL
      • Peut-être sécurisé
      • Déclaration dans cron
    <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <cronentries> <cron> <url>/testappengine?param=cron</url> <description>Test cron 1 minute</description> <schedule>every 1 minutes</schedule> </cron> </cronentries>
  • 38. GWT
  • 39. GWT
    • GWT existe depuis trois ans
    • Solution de Google pour faire du RIA
      • Développement en Java
      • Compilation en JavaScript
      • Développement semblable à Swing
      • Concurrents: Flex (Adobe), SilverLight (MircroSoft), JavaFX (Sun)
    • Les avantages:
      • Développements rapides
      • Développement & débuggage en Java
      • Exécution sur le poste client
        • Plus de problèmes de montée en charge
        • Ergonomie et rapidité pour l’utilisateur
    • GWT 1.6: Les nouveautés:
      • Packaging War & déploiement simplifiés
      • Adapté à GAE
  • 40. GWT
    • Démo
      • http://ippongwt.appspot.com/
      • Fonctionne en local ou à distance
      • Taille: 430 ko (javascript)
      • Techno:
        • GWT 1.6
        • EXT 2.0
        • Infra GAE
  • 41. LE BILAN
  • 42. GAE: Pour quoi faire ?
    • Ce qu’il ne faut pas faire:
      • Tenter de déployer une application existante:
        • Alfresco, LifeRay, MuleESB ...
      • Déployer des EAR / EJB
    • Application type:
      • IHM: Web
        • RIA: Flex ou GWT
          • Pas beaucoup de bande passante
          • Pas beaucoup de CPU
          • Service applicatif => Grosse granularité
        • Web 2.0 (JSF, ...)
          • Attention à la granularité de la couche service
      • Services distants
        • Les Webservices ne sont pas encore utilisables
    • Donc: Plutôt adapté aux nouveaux développements
  • 43. Architecture type Utilisateurs HTML AJAX Utilisateurs GRPC Utilisateurs AMF GWT Flex Entreprise HTTP XML RIA Flex RIA GWT Web 2.0 Services distants Application JPA BigTable Application JPA BigTable Application JPA BigTable Application JPA BigTable
  • 44. Contraintes
    • BigTable
      • S’adapter aux contraintes de BigTable
      • Pas de modélisation n/n
      • Les FK ne peuvent pas être de type long
      • Limitation JPA par rapport à JDO ?
      • ...
    • Import / export de données
      • Outils primitifs en Python
      • Import non supporté
    • Sécurité standard limitée sur compte Google
    • Performances
      • Les serveurs sont aux US: 250ms de ping
      • BigTable ne semble pas rapide sur les petites requêtes
    • Confidentialité
      • Les données sont chez Google
      • Question de confiance
  • 45. Perspectives
    • GWT
      • Les entreprises sont en phase d’étude ou d’adoption de RIA
        • Jahia est déjà en GWT (admin), Noheto en cours
      • Les RIA vont remplacer MVC 2 sur la partie « application »
        • Plus simple à développer
        • Plus performant
        • Plus ergonomique
      • En concurrence avec Flex (Adobe), Silverlight (Microsoft) et JavaFX (Sun)
      • Frameworks très bien né, mais manque de communication
      • C’est le seul en Java
        • Grosse communauté de développeur
  • 46. Perspectives
    • Google Application Engine
      • Va dynamiser les applications Open Source Java
        • Wiki, Blog, Forum ...
      • Des sociétés vont bâtir autour de l’offre Google
        • GMail, GDoc ... et GAE
      • Opportunités à saisir pour les SSII
      • What else ?
  • 47. Ressources
    • Documentation Google
      • http://code.google.com/intl/fr/appengine/docs/java/overview.html
    • Les Quotas
      • http://code.google.com/appengine/docs/quotas.html
    • Console d’accès aux applications
      • http://appengine.google.com/
    • GWT & GAE
      • http://googlewebtoolkit.blogspot.com/