SlideShare une entreprise Scribd logo
1  sur  48
App Engine Et
   Guice


                1
Plan
            •   Introduction
            •   Qu’est ce le cloud computing ?
            •   Vue globale de GAE
 Google     •   Architecture
AppEngine   •   Services
            •   Stockage des données


            •   Qu’est ce que Guice ?
 Google     •   Injection de dépendance
 Guice      •   AOP
            •   Conclusion




                                                 2
Introduction




               3
Qu’est ce que le cloud computing?


 •Avec le cloud computing, les utilisateurs ou les
 entreprises ne sont plus gestionnaires de
 leurs serveurs informatiques.
 • Ils peuvent accéder à une multitude de services en
 ligne sans avoir à gérer l'infrastructure inhérente,
 souvent complexe.
 • Les applications et les données ne se trouvent plus
 sur l'ordinateur local mais dans un «cloud »
 •On déploie dans les nuages et ils se débrouillent
 pour que ça marche !




                                                         4
Trois modèles de service

        Infrastructure as a   • Serveurs virtuels
              service         • Architectes réseau


                              • Environnement pour
          Platform as a         déployer une application
             service          • Développeurs
                                d’application

                              • Logiciels web
          Software as a         configurables prêt à être
                                utilisés
             service
                              • Les utilisateurs finaux




                                                            5
Présentation de GAE
 GAE est un service qui permet de déployer des

 applications web sur l’infrastructure Google

 Au début GAE supporte uniquement Python

 Le service Python n’a pas eu un grand succès

 Java était le langage le plus demandé (devant PHP)

 Google a annoncé le support de Java pour GAE le 07 avril

 2009
                                                        6
Présentation de GAE
 Google App Engine propose un conteneur de Servlet

et une base de données qui permettent d'héberger des

application Java sur les serveurs de Google.

  un environnement de développement local complet

qui simule Google App Engine sur votre ordinateur




                                                       7
Présentation de GAE
 Toutes les applications peuvent utiliser jusqu'à 500 Mo

d'espace de stockage, et assez de temps processeur et

de bande passante gratuitement.

  Basé sur des quotas d’utilisation

 Possibilité de limiter le budget quotidien




                                                           8
Pourquoi Google App engine?

                  •   Montée en charge
                  •   Distribution
                  •   Authentifications
                  •   Performance
                  •   Évolutivité
                  •   Coûts réduits




                                   9
Architecture globale
                                                                 Utilisateurs

                   Administrateurs                                         Utilisateurs




                                                 Cloud Computing Google




Déploiement
                                                                                                   Communication



                                                                                          HTTP/S




                         Déploiement




                                         (Stats, logs, Quotas)
                 (Stats, logs, Quotas)




                                                                                                           10
Java ou Python?




 Vous êtes libres !
 La même infrastructure
 Les mêmes services spécialisés
 La même console d’administration

                                    11
appengine-web.xml
  Fichier de configuration de App engine
 Placé dans le répertoire WEB-INF/
 Il inclut :l’identifiant de l’application , numéro de version et
des listes de fichiers statiques (images ou les feuilles de style
CSS …)




                                                             12
Démo
• Les ingrédients:
  – Java 5 ou 6
  – Eclipse 3.3 ou plus
  – Plugin GAE
     • Site (Eclipse): http://dl.google.com/eclipse/plugin/3.x
     • 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/

                                                                               13
Les services de GAE
 URL Fetch
 Memcache
 Mail
 Image
 XMPP
 Google Accounts
 Cron jobs: Traitements réguliers




                                    14
Les services de GAE


         •Communiquer via http/https




         •Mémoire cache distribuée persistente
         •Service stable, robuste




                                                 15
Les services de GAE

          •Stockage des images.
          •Manipulation des images
                          (rotation, translation….)



          •Pour les envois , on utilise JavaMail
          •L’expéditeur est le compte administrateur
          •Reception des messages sous la forme de
          requêtes HTTP par App Engine qui va les
          transmettre à l’application



                                                  16
Les services de GAE
        •Protocole messagerie instantanée
         •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
         App-id@appspot.com




                                                     17
Les services de GAE
    •Service App Engine CRON
     configurer des tâches planifiées qui
    s'exécutent à des heures définies ou à
    intervalles réguliers.
 cron.xml
<cronentries>
<cron>
<url> /tasks/summary</url>
<description> daily summary job </description>
<schedule> every 24 hours</schedule>
</cron>
</cronentries>


                                                 18
Stockage de données
  Le stockage de données s’appuie sur BigTable
  Big table:
• développé en interne par Google
• scalable (capacité de montée en charge)

  Big Table n’est pas
•Une base de données relationnelle classique

  Mais plutôt :
• C’est une base de donnée NoSQL




                                                 19
Stockage 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

        • L'application peut exécuter des requêtes sur
          les entités.

         • AppEngine maintient un index pour chaque
            type de requête qu’on peut exécuter dans
            l’application.
   garantir des résultats rapides sur des
   ensembles de données très volumineux             20
Stockage de données
 L’accès aux données:

 •API de bas niveau
 •API de haut niveau Datanucleus : JPA & JDO




                                               21
Fonctionnalités de JPA & JDO non prises en charge


  Relations d'appartenance plusieurs-à-plusieurs
  Requêtes de "jointure".
  Requêtes d'agrégation (GROUP BY, HAVING, SUM,
AVG, MAX, MIN).
  Requêtes polymorphes : Vous ne pouvez pas exécuter
une requête d'une classe pour récupérer des instances
d'une sous-classe.



                                                        22
Stockage de données

   Deux options de stockage de données

High Replication Datastore    Master/Slave

                             •Il réplique les
   •Le type par défaut
                             données de manière
   •les données sont
                             asynchrone dans les
   répliquées dans les
                             centres de données.
   centres de données
                             • un seul centre de
   d’une manière
                             données peut avoir
   synchrone
                             le rôle de maître lors
                             de l'écriture.
                                                      23
Stockage de données




                      24
25
Guice?




C’est un Framework proposé par Google en 2007
Fondé par Bob Lee




                                                26
Guice?

 Un Framework léger d’injection de dépendance pour Java 5

et au dessus

 La version actuelle 3.0 (lancée 4 mars 2011)

 Google Guice est apparu après la solution de Spring
 Développé pour être « meilleur » que Spring IoC

 Utilisé dans la plupart des applications de Google


                                                       27
Guice?
                Les ingrédients
•IOC
•Guice Module
• Injection
•Binding
• Scope
• AOP
• Autres
                                  28
Les injections de dépendances
  Présentation
•Les injections de dépendances ont été inventées par
 Martin Fowler.
• Dérivé du principe d’inversion de contrôle
•Utilisé pour avoir des applications modulaires
•Permet de réduire les dépendances entre les classes
•Utilisé pour la programmation orientée aspect




                                                       29
Les injections de dépendances
  Cas de base:
• Dépendance : utilisation de méthodes d’une autre
classe
•Généralement fait par un « new » dans le code
•Pas modulaire, difficile à maintenir, ne permet pas le
changement




                                                   30
Les injections de dépendances
  Avec une interface
• Permet à la classe A d’utiliser une interface

•Plusieurs implémentations de l’interface

•Toujours un « new » dans le code de A

•Pas beaucoup avancé




                                                  31
Les injections de dépendances
  Avec une factory:
• Un seul «new» de la classe B dans tout le code

•Pattern Factory est lourd à implémenter




                                                   32
Les injections de dépendances avec Guice

  Le principe est simple !
  vous n’avez plus besoin d’instancier les objets ou
d’utiliser des factories, c’est les objets qui viennent à
vous.

  le Framework instancie pour vous et vous n’avez
qu’à les utiliser.




                                                     33
injection de dépendances avec Guice

  Principe de fonctionnement:
•Utilise des abstractModule pour faire la liaison
interfaceimplémentation
•Utilise l’annotation @Inject pour déclarer les classes
à injecter
•Utilise un Injector pour charger le module dans
notre application


                                                    34
injection de dépendances avec Guice

  Principe de fonctionnement (Les modules):

•Étendent la classe AbstractModule de Guice

•Un module peut effectuer plusieurs associations

•Une application peut avoir plusieurs modules

(1module = 1configuration)



                                                   35
injection de dépendances avec Guice
 Principe de fonctionnement (l’injection):


                            injection sur un attribut


Trois formes             injection sur un constructeur


                          injection sur une méthode




                                                         36
injection de dépendances avec Guice

 Principe de fonctionnement (l’injecteur):
• Injecteur Guice pour charger le module dans
notre application
•Injecter les dépendances à sa charge
•Créer une instance de la classe injectée




                                                37
Les scopes
                                Unscoped
                         Créer un objet à chaque
                                utilisation

                              @Singleton
                       créer une seul instance par
                               application
Il existe 4 scopes :
                          @RequestScoped
                       une instance par requête
                             web ou RPC

                           @SessionScoped
                         une instance par http
                                Session
                                                 38
Démo
  Injector    Etudiant



  Module       Filière



 Filière GL
                         39
40
Programmation orientée aspect AOP
C’est un paradigme de programmation qui permet de
séparer les considérations techniques (aspect en anglais)
des descriptions métier dans une application.




                                                        41
Guice AOP
  Comment ça marche ?
• On peut appliquer des méthodes intercepteurs sur
des objets injectés.
•Guice AOP génère des proxies (impersonators)
•Enveloppe un objet cible pour appliquer des aspects
avant et après l’appel à cet objet
•le code entre l’objet et method invocation est appelé
interceptors.



                                                         42
Guice AOP




            43
Integration
 frameworks
    •Struts
    •GIN - GWT
    •Seam
    •Guice and JSF
    •JPA



Mobile
RoboGuice - Guice for Android.
                                 44
Les nouveautés de Guice 3.0
  supporte JSR 330 : une proposition lancée par
Springsource et Google visant à standardiser un jeu
d’annotation pour gérer l’injection de dépendance.

  Building avec Maven

  D’autres annotations:
• @ImplementedBy
• @providedBy
• @Singleton
• @Provides
• @CheckedProvides
• @RequestScoped
• @SessionScoped
.......                                               45
Conclusion
Guice VS Spring
 Spring : le paramétrage des classes se fait via un fichier
de configuration XML
 Guice: se fait directement dans le code via des
annotations.
 Frameworks très similaires

 Spring reste très utilisé pour l’IoC

  Mais lourd et format compliqué

 Guice très léger et plus facile à utiliser
                                                              46
perspectives




                    RoboGuice
RoboGuice est un petit framework permettant d’adapter
Google Guice au cycle de vie particulier des applications
Android. De plus, il ajoute des fonctionnalités
qui simplifient le développement Android.

                                                        47
48

Contenu connexe

En vedette

PHPConf2010 - Introdução a Search Engine Optimization
PHPConf2010 - Introdução a Search Engine OptimizationPHPConf2010 - Introdução a Search Engine Optimization
PHPConf2010 - Introdução a Search Engine OptimizationRafael Capucho
 
FISL14 - Desmontando uma engine de física
FISL14 - Desmontando uma engine de físicaFISL14 - Desmontando uma engine de física
FISL14 - Desmontando uma engine de físicaAdriano Melo
 
DigitalHubGO: Search Engine Optimization - SEM
DigitalHubGO: Search Engine Optimization - SEMDigitalHubGO: Search Engine Optimization - SEM
DigitalHubGO: Search Engine Optimization - SEMAndré de Moraes
 
Condition monitoring case study
Condition monitoring case studyCondition monitoring case study
Condition monitoring case studyjam900
 
Search Engine Marketing
Search Engine MarketingSearch Engine Marketing
Search Engine MarketingFromDoppler
 
Game Engine Architecture
Game Engine ArchitectureGame Engine Architecture
Game Engine ArchitectureMichel Alves
 
App Engine: aplicações escaláveis em poucas horas
App Engine: aplicações escaláveis em poucas horasApp Engine: aplicações escaláveis em poucas horas
App Engine: aplicações escaláveis em poucas horasOsvaldo Santana Neto
 
Google App Engine e Python
Google App Engine e PythonGoogle App Engine e Python
Google App Engine e PythonPeslPinguim
 
Seo - Search Engine Optimization
Seo - Search Engine OptimizationSeo - Search Engine Optimization
Seo - Search Engine OptimizationHeric Tilly
 
liquid propellant rocket engine (Motor foguete Liquido) part6
liquid propellant rocket engine (Motor foguete Liquido) part6liquid propellant rocket engine (Motor foguete Liquido) part6
liquid propellant rocket engine (Motor foguete Liquido) part6Edgard Packness
 
Tendências 2015: Kubernetes & Google Container Engine
Tendências 2015: Kubernetes & Google Container EngineTendências 2015: Kubernetes & Google Container Engine
Tendências 2015: Kubernetes & Google Container EngineDaniel Costa Gimenes
 
Palestra Search Engine Marketing - Com foco nos resultados
Palestra Search Engine Marketing - Com foco nos resultadosPalestra Search Engine Marketing - Com foco nos resultados
Palestra Search Engine Marketing - Com foco nos resultadosECDD Infnet
 
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)Fabio Moura Pereira
 
Introdução ao Desenvolvimento de Jogos
Introdução ao Desenvolvimento de JogosIntrodução ao Desenvolvimento de Jogos
Introdução ao Desenvolvimento de JogosGabriel Giordano Medina
 
Notifications push avec Android
Notifications push avec AndroidNotifications push avec Android
Notifications push avec AndroidBouhdida Mahmoud
 
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...Michel Azevedo
 
Marketing online, SEM (Search Engine Marketing)
Marketing online, SEM (Search Engine Marketing)Marketing online, SEM (Search Engine Marketing)
Marketing online, SEM (Search Engine Marketing)Fundació Bit
 
Arduino, Robótica e Computação nas Nuvens
Arduino, Robótica e Computação nas NuvensArduino, Robótica e Computação nas Nuvens
Arduino, Robótica e Computação nas NuvensMarco Antonio Maciel
 
Criando Jogos 2D com Lua + Corona SDK
Criando Jogos 2D com Lua + Corona SDKCriando Jogos 2D com Lua + Corona SDK
Criando Jogos 2D com Lua + Corona SDKLeonardo Dalmina
 

En vedette (20)

PHPConf2010 - Introdução a Search Engine Optimization
PHPConf2010 - Introdução a Search Engine OptimizationPHPConf2010 - Introdução a Search Engine Optimization
PHPConf2010 - Introdução a Search Engine Optimization
 
FISL14 - Desmontando uma engine de física
FISL14 - Desmontando uma engine de físicaFISL14 - Desmontando uma engine de física
FISL14 - Desmontando uma engine de física
 
DigitalHubGO: Search Engine Optimization - SEM
DigitalHubGO: Search Engine Optimization - SEMDigitalHubGO: Search Engine Optimization - SEM
DigitalHubGO: Search Engine Optimization - SEM
 
Condition monitoring case study
Condition monitoring case studyCondition monitoring case study
Condition monitoring case study
 
Search Engine Marketing
Search Engine MarketingSearch Engine Marketing
Search Engine Marketing
 
Game Engine Architecture
Game Engine ArchitectureGame Engine Architecture
Game Engine Architecture
 
App Engine: aplicações escaláveis em poucas horas
App Engine: aplicações escaláveis em poucas horasApp Engine: aplicações escaláveis em poucas horas
App Engine: aplicações escaláveis em poucas horas
 
Roary Samsam
Roary SamsamRoary Samsam
Roary Samsam
 
Google App Engine e Python
Google App Engine e PythonGoogle App Engine e Python
Google App Engine e Python
 
Seo - Search Engine Optimization
Seo - Search Engine OptimizationSeo - Search Engine Optimization
Seo - Search Engine Optimization
 
liquid propellant rocket engine (Motor foguete Liquido) part6
liquid propellant rocket engine (Motor foguete Liquido) part6liquid propellant rocket engine (Motor foguete Liquido) part6
liquid propellant rocket engine (Motor foguete Liquido) part6
 
Tendências 2015: Kubernetes & Google Container Engine
Tendências 2015: Kubernetes & Google Container EngineTendências 2015: Kubernetes & Google Container Engine
Tendências 2015: Kubernetes & Google Container Engine
 
Palestra Search Engine Marketing - Com foco nos resultados
Palestra Search Engine Marketing - Com foco nos resultadosPalestra Search Engine Marketing - Com foco nos resultados
Palestra Search Engine Marketing - Com foco nos resultados
 
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
 
Introdução ao Desenvolvimento de Jogos
Introdução ao Desenvolvimento de JogosIntrodução ao Desenvolvimento de Jogos
Introdução ao Desenvolvimento de Jogos
 
Notifications push avec Android
Notifications push avec AndroidNotifications push avec Android
Notifications push avec Android
 
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
 
Marketing online, SEM (Search Engine Marketing)
Marketing online, SEM (Search Engine Marketing)Marketing online, SEM (Search Engine Marketing)
Marketing online, SEM (Search Engine Marketing)
 
Arduino, Robótica e Computação nas Nuvens
Arduino, Robótica e Computação nas NuvensArduino, Robótica e Computação nas Nuvens
Arduino, Robótica e Computação nas Nuvens
 
Criando Jogos 2D com Lua + Corona SDK
Criando Jogos 2D com Lua + Corona SDKCriando Jogos 2D com Lua + Corona SDK
Criando Jogos 2D com Lua + Corona SDK
 

Similaire à Google appengine&guice

Cloud computing cours in power point chap
Cloud computing cours in power point chapCloud computing cours in power point chap
Cloud computing cours in power point chapaichafarahsouelmi
 
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
 
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiGab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiSamir Arezki ☁
 
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiGab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiAZUG FR
 
Bonita 7.10 - Nathalie Cotté - Bonitaday Paris 2019
Bonita 7.10 - Nathalie Cotté - Bonitaday Paris 2019Bonita 7.10 - Nathalie Cotté - Bonitaday Paris 2019
Bonita 7.10 - Nathalie Cotté - Bonitaday Paris 2019Bonitasoft
 
Saas Libre
Saas LibreSaas Libre
Saas Libregrolland
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwthkairi
 
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi..."J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...Microsoft
 
Java dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de JonasJava dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de JonasMicrosoft
 
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureTechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureThomas Conté
 
Déploiement d’applications
Déploiement d’applicationsDéploiement d’applications
Déploiement d’applicationsMohammed Jaafar
 
Cloud & Google app engine Presentation by Ngiambus Marcus
 Cloud & Google app engine Presentation  by Ngiambus Marcus Cloud & Google app engine Presentation  by Ngiambus Marcus
Cloud & Google app engine Presentation by Ngiambus MarcusMarc NGIAMBA
 
CloudUnit le PaaS par TreeptiK
CloudUnit le PaaS par TreeptiKCloudUnit le PaaS par TreeptiK
CloudUnit le PaaS par TreeptiKAmico Fabien
 
Architecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et XamarinArchitecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et XamarinThierry Buisson
 
Sw 100 fr docker conteneurisation des applications
Sw 100 fr docker conteneurisation des applicationsSw 100 fr docker conteneurisation des applications
Sw 100 fr docker conteneurisation des applicationsStephane Woillez
 
Développer et déployer dans le cloud
Développer et déployer dans le cloudDévelopper et déployer dans le cloud
Développer et déployer dans le cloudJulien Dubois
 
Formation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFFormation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFBoubker ABERWAG
 

Similaire à Google appengine&guice (20)

Google App Engine - INTRO
Google App Engine - INTROGoogle App Engine - INTRO
Google App Engine - INTRO
 
Cloud computing cours in power point chap
Cloud computing cours in power point chapCloud computing cours in power point chap
Cloud computing cours in power point chap
 
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
 
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiGab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
 
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir ArezkiGab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
 
Cloud Computing Démystifié
Cloud Computing DémystifiéCloud Computing Démystifié
Cloud Computing Démystifié
 
Bonita 7.10 - Nathalie Cotté - Bonitaday Paris 2019
Bonita 7.10 - Nathalie Cotté - Bonitaday Paris 2019Bonita 7.10 - Nathalie Cotté - Bonitaday Paris 2019
Bonita 7.10 - Nathalie Cotté - Bonitaday Paris 2019
 
AppEngine
AppEngineAppEngine
AppEngine
 
Saas Libre
Saas LibreSaas Libre
Saas Libre
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwt
 
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi..."J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
 
Java dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de JonasJava dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de Jonas
 
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureTechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
 
Déploiement d’applications
Déploiement d’applicationsDéploiement d’applications
Déploiement d’applications
 
Cloud & Google app engine Presentation by Ngiambus Marcus
 Cloud & Google app engine Presentation  by Ngiambus Marcus Cloud & Google app engine Presentation  by Ngiambus Marcus
Cloud & Google app engine Presentation by Ngiambus Marcus
 
CloudUnit le PaaS par TreeptiK
CloudUnit le PaaS par TreeptiKCloudUnit le PaaS par TreeptiK
CloudUnit le PaaS par TreeptiK
 
Architecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et XamarinArchitecturez vos applications mobiles avec Azure et Xamarin
Architecturez vos applications mobiles avec Azure et Xamarin
 
Sw 100 fr docker conteneurisation des applications
Sw 100 fr docker conteneurisation des applicationsSw 100 fr docker conteneurisation des applications
Sw 100 fr docker conteneurisation des applications
 
Développer et déployer dans le cloud
Développer et déployer dans le cloudDévelopper et déployer dans le cloud
Développer et déployer dans le cloud
 
Formation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFFormation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPF
 

Plus de Slimen Belhaj Ali (19)

Solution générique pour la résolution des problèmes statiques de tournées de ...
Solution générique pour la résolution des problèmes statiques de tournées de ...Solution générique pour la résolution des problèmes statiques de tournées de ...
Solution générique pour la résolution des problèmes statiques de tournées de ...
 
BPMN,jBPM,BPEL
BPMN,jBPM,BPELBPMN,jBPM,BPEL
BPMN,jBPM,BPEL
 
Websphere
WebsphereWebsphere
Websphere
 
Sécurisation des services WCF avec WS-Security
Sécurisation des services WCF avec WS-SecuritySécurisation des services WCF avec WS-Security
Sécurisation des services WCF avec WS-Security
 
JasperReport
JasperReportJasperReport
JasperReport
 
ERP Universitaire
ERP UniversitaireERP Universitaire
ERP Universitaire
 
JSF 2.0
JSF 2.0JSF 2.0
JSF 2.0
 
Tutorial
TutorialTutorial
Tutorial
 
Spring security
Spring securitySpring security
Spring security
 
Spring mvc 3.0 web flow
Spring mvc 3.0 web flowSpring mvc 3.0 web flow
Spring mvc 3.0 web flow
 
Share point 2010
Share point 2010Share point 2010
Share point 2010
 
TFS
TFSTFS
TFS
 
objective C
objective Cobjective C
objective C
 
Android
AndroidAndroid
Android
 
Hibernate 3
Hibernate 3Hibernate 3
Hibernate 3
 
WPF MVVM
WPF MVVMWPF MVVM
WPF MVVM
 
Jboss Seam
Jboss SeamJboss Seam
Jboss Seam
 
Sonar-Hodson-Maven
Sonar-Hodson-MavenSonar-Hodson-Maven
Sonar-Hodson-Maven
 
Administration glassfish 3
Administration glassfish 3Administration glassfish 3
Administration glassfish 3
 

Google appengine&guice

  • 1. App Engine Et Guice 1
  • 2. Plan • Introduction • Qu’est ce le cloud computing ? • Vue globale de GAE Google • Architecture AppEngine • Services • Stockage des données • Qu’est ce que Guice ? Google • Injection de dépendance Guice • AOP • Conclusion 2
  • 4. Qu’est ce que le cloud computing? •Avec le cloud computing, les utilisateurs ou les entreprises ne sont plus gestionnaires de leurs serveurs informatiques. • Ils peuvent accéder à une multitude de services en ligne sans avoir à gérer l'infrastructure inhérente, souvent complexe. • Les applications et les données ne se trouvent plus sur l'ordinateur local mais dans un «cloud » •On déploie dans les nuages et ils se débrouillent pour que ça marche ! 4
  • 5. Trois modèles de service Infrastructure as a • Serveurs virtuels service • Architectes réseau • Environnement pour Platform as a déployer une application service • Développeurs d’application • Logiciels web Software as a configurables prêt à être utilisés service • Les utilisateurs finaux 5
  • 6. Présentation de GAE GAE est un service qui permet de déployer des applications web sur l’infrastructure Google Au début GAE supporte uniquement Python Le service Python n’a pas eu un grand succès Java était le langage le plus demandé (devant PHP) Google a annoncé le support de Java pour GAE le 07 avril 2009 6
  • 7. Présentation de GAE Google App Engine propose un conteneur de Servlet et une base de données qui permettent d'héberger des application Java sur les serveurs de Google. un environnement de développement local complet qui simule Google App Engine sur votre ordinateur 7
  • 8. Présentation de GAE Toutes les applications peuvent utiliser jusqu'à 500 Mo d'espace de stockage, et assez de temps processeur et de bande passante gratuitement. Basé sur des quotas d’utilisation Possibilité de limiter le budget quotidien 8
  • 9. Pourquoi Google App engine? • Montée en charge • Distribution • Authentifications • Performance • Évolutivité • Coûts réduits 9
  • 10. Architecture globale Utilisateurs Administrateurs Utilisateurs Cloud Computing Google Déploiement Communication HTTP/S Déploiement (Stats, logs, Quotas) (Stats, logs, Quotas) 10
  • 11. Java ou Python? Vous êtes libres ! La même infrastructure Les mêmes services spécialisés La même console d’administration 11
  • 12. appengine-web.xml Fichier de configuration de App engine Placé dans le répertoire WEB-INF/ Il inclut :l’identifiant de l’application , numéro de version et des listes de fichiers statiques (images ou les feuilles de style CSS …) 12
  • 13. Démo • Les ingrédients: – Java 5 ou 6 – Eclipse 3.3 ou plus – Plugin GAE • Site (Eclipse): http://dl.google.com/eclipse/plugin/3.x • 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/ 13
  • 14. Les services de GAE URL Fetch Memcache Mail Image XMPP Google Accounts Cron jobs: Traitements réguliers 14
  • 15. Les services de GAE •Communiquer via http/https •Mémoire cache distribuée persistente •Service stable, robuste 15
  • 16. Les services de GAE •Stockage des images. •Manipulation des images (rotation, translation….) •Pour les envois , on utilise JavaMail •L’expéditeur est le compte administrateur •Reception des messages sous la forme de requêtes HTTP par App Engine qui va les transmettre à l’application 16
  • 17. Les services de GAE •Protocole messagerie instantanée •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 App-id@appspot.com 17
  • 18. Les services de GAE •Service App Engine CRON configurer des tâches planifiées qui s'exécutent à des heures définies ou à intervalles réguliers. cron.xml <cronentries> <cron> <url> /tasks/summary</url> <description> daily summary job </description> <schedule> every 24 hours</schedule> </cron> </cronentries> 18
  • 19. Stockage de données Le stockage de données s’appuie sur BigTable Big table: • développé en interne par Google • scalable (capacité de montée en charge) Big Table n’est pas •Une base de données relationnelle classique Mais plutôt : • C’est une base de donnée NoSQL 19
  • 20. Stockage 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 • L'application peut exécuter des requêtes sur les entités. • AppEngine maintient un index pour chaque type de requête qu’on peut exécuter dans l’application. garantir des résultats rapides sur des ensembles de données très volumineux 20
  • 21. Stockage de données L’accès aux données: •API de bas niveau •API de haut niveau Datanucleus : JPA & JDO 21
  • 22. Fonctionnalités de JPA & JDO non prises en charge Relations d'appartenance plusieurs-à-plusieurs Requêtes de "jointure". Requêtes d'agrégation (GROUP BY, HAVING, SUM, AVG, MAX, MIN). Requêtes polymorphes : Vous ne pouvez pas exécuter une requête d'une classe pour récupérer des instances d'une sous-classe. 22
  • 23. Stockage de données Deux options de stockage de données High Replication Datastore Master/Slave •Il réplique les •Le type par défaut données de manière •les données sont asynchrone dans les répliquées dans les centres de données. centres de données • un seul centre de d’une manière données peut avoir synchrone le rôle de maître lors de l'écriture. 23
  • 25. 25
  • 26. Guice? C’est un Framework proposé par Google en 2007 Fondé par Bob Lee 26
  • 27. Guice? Un Framework léger d’injection de dépendance pour Java 5 et au dessus La version actuelle 3.0 (lancée 4 mars 2011) Google Guice est apparu après la solution de Spring Développé pour être « meilleur » que Spring IoC Utilisé dans la plupart des applications de Google 27
  • 28. Guice? Les ingrédients •IOC •Guice Module • Injection •Binding • Scope • AOP • Autres 28
  • 29. Les injections de dépendances Présentation •Les injections de dépendances ont été inventées par Martin Fowler. • Dérivé du principe d’inversion de contrôle •Utilisé pour avoir des applications modulaires •Permet de réduire les dépendances entre les classes •Utilisé pour la programmation orientée aspect 29
  • 30. Les injections de dépendances Cas de base: • Dépendance : utilisation de méthodes d’une autre classe •Généralement fait par un « new » dans le code •Pas modulaire, difficile à maintenir, ne permet pas le changement 30
  • 31. Les injections de dépendances Avec une interface • Permet à la classe A d’utiliser une interface •Plusieurs implémentations de l’interface •Toujours un « new » dans le code de A •Pas beaucoup avancé 31
  • 32. Les injections de dépendances Avec une factory: • Un seul «new» de la classe B dans tout le code •Pattern Factory est lourd à implémenter 32
  • 33. Les injections de dépendances avec Guice Le principe est simple ! vous n’avez plus besoin d’instancier les objets ou d’utiliser des factories, c’est les objets qui viennent à vous. le Framework instancie pour vous et vous n’avez qu’à les utiliser. 33
  • 34. injection de dépendances avec Guice Principe de fonctionnement: •Utilise des abstractModule pour faire la liaison interfaceimplémentation •Utilise l’annotation @Inject pour déclarer les classes à injecter •Utilise un Injector pour charger le module dans notre application 34
  • 35. injection de dépendances avec Guice Principe de fonctionnement (Les modules): •Étendent la classe AbstractModule de Guice •Un module peut effectuer plusieurs associations •Une application peut avoir plusieurs modules (1module = 1configuration) 35
  • 36. injection de dépendances avec Guice Principe de fonctionnement (l’injection): injection sur un attribut Trois formes injection sur un constructeur injection sur une méthode 36
  • 37. injection de dépendances avec Guice Principe de fonctionnement (l’injecteur): • Injecteur Guice pour charger le module dans notre application •Injecter les dépendances à sa charge •Créer une instance de la classe injectée 37
  • 38. Les scopes Unscoped Créer un objet à chaque utilisation @Singleton créer une seul instance par application Il existe 4 scopes : @RequestScoped une instance par requête web ou RPC @SessionScoped une instance par http Session 38
  • 39. Démo Injector Etudiant Module Filière Filière GL 39
  • 40. 40
  • 41. Programmation orientée aspect AOP C’est un paradigme de programmation qui permet de séparer les considérations techniques (aspect en anglais) des descriptions métier dans une application. 41
  • 42. Guice AOP Comment ça marche ? • On peut appliquer des méthodes intercepteurs sur des objets injectés. •Guice AOP génère des proxies (impersonators) •Enveloppe un objet cible pour appliquer des aspects avant et après l’appel à cet objet •le code entre l’objet et method invocation est appelé interceptors. 42
  • 43. Guice AOP 43
  • 44. Integration frameworks •Struts •GIN - GWT •Seam •Guice and JSF •JPA Mobile RoboGuice - Guice for Android. 44
  • 45. Les nouveautés de Guice 3.0 supporte JSR 330 : une proposition lancée par Springsource et Google visant à standardiser un jeu d’annotation pour gérer l’injection de dépendance. Building avec Maven D’autres annotations: • @ImplementedBy • @providedBy • @Singleton • @Provides • @CheckedProvides • @RequestScoped • @SessionScoped ....... 45
  • 46. Conclusion Guice VS Spring Spring : le paramétrage des classes se fait via un fichier de configuration XML Guice: se fait directement dans le code via des annotations. Frameworks très similaires Spring reste très utilisé pour l’IoC Mais lourd et format compliqué Guice très léger et plus facile à utiliser 46
  • 47. perspectives RoboGuice RoboGuice est un petit framework permettant d’adapter Google Guice au cycle de vie particulier des applications Android. De plus, il ajoute des fonctionnalités qui simplifient le développement Android. 47
  • 48. 48