SlideShare una empresa de Scribd logo
1 de 75
Descargar para leer sin conexión
Universidad de Oviedo   Programa de extensión universitaria




     CLOUD COMPUTING.
DESARROLLO DE APLICACIONES Y
        MINERÍA WEB


                               Miguel Fernández Fernández
                                miguelff@innova.uniovi.es
Google App Engine




http://code.google.com/intl/en/appengine/
cción a
Una introduGoogle App Engine




 http://code.google.com/intl/en/appengine/
¿Qué es Google App Engine?
       La solución PaaS de Google
         Webapps Python y Java
           Altamente escalable
              Pago por uso
         Administración sencilla

             SDK completo
¿Qué es Google App Engine?
       La solución PaaS de Google   y Javascrip
         Webapps Python y Java      JRuby, S t (Rhino),
                                              cala. .
           Altamente escalable
              Pago por uso
         Administración sencilla

             SDK completo
¿Qué es Google App Engine?
                                   La solución PaaS de Google   y Javascrip
                                     Webapps Python y Java      JRuby, S t (Rhino),
                                                                          cala. .
                                       Altamente escalable

   I5nMci io vigsirtaatsu/itomes          Pago por uso
 <                                   Administración sencilla

                                         SDK completo
¿Qué aporta Google App Engine?

              Escalabilidad
      Ahorro en el coste de propiedad
          Amplio conjunto de APIs
          Facilidad de desarrollo

       Sencillez en el mantenimiento
¿Qué ofrece GAE a nivel funcional?

                             Almacén de datos transaccional

                  Sistema automático de escalado y balanceo de carga

                              em  il
                                aIntegración con cuentas de Google
                   ye ívn o d                                        TM




 ute int cac   ión         Planificación de tareas programadas
A                                                              Àl- a Unix Cron
                  Memcache, manipulación imágenes, extracción URLs...
Ciclo de desarrollo
  SDK                   Prueba




         Construcción             Despliegue



 Consola
 De                     Gestión
 Administración
Arquitectura física
                                                                  Cluster 1                                    Datastore
                                                                                                               Cluster 1
                                                      Nodo1                                            Nodo1
                       Balanceador de carga
                                                               Nodo 2                                          Nodo 2




                                                                               RPC de Google
                                                   Nodo N                                           Nodo N
Navegador




            request

            HTTP(S)
                                                                 Cluster N                                      Datastore
            response                                                                                            Cluster M
                                                      Nodo1                                            Nodo1

                                                               Nodo 2                                          Nodo 2
                                                   Nodo N                                           Nodo N



                                                                                                       Persistencia
                                              Servidor FCGI / Motor Servlets                   Data Nucleus sobre Big TableTM
Desarrollo de aplicaciones GAE
        El runtime Java
El SDK de Java

           appengine-java-sdk-1.3.6*

                   API JARs
             Servidor de pruebas
             App Engine Uploader
                Documentación
                   Ejemplos
El SDK de Java
          Google Plugin for eclipse
           appengine-java-sdk-1.3.6*

                   API JARs
             Servidor de pruebas
             App Engine Uploader
                Documentación
                   Ejemplos

                  GWT 2.0.4
El SDK de Java
                         Google Plugin for eclipse
                         appengine-java-sdk-1.3.6*

                                   API JARs
                            Servidor de pruebas
                            App Engine Uploader
                               Documentación
                                   Ejemplos

                                  GWT 2.0.4

 *eclipse/plugins/com.google.appengine.eclipse.sdkbundle.1.3.6_1.3.6.v201006301254
Hola App Engine! desde Java
Hola App Engine! desde Java
    Acceder a appengine.google.com y crear la app
Hola App Engine! desde Java
    Acceder a appengine.google.com y crear la app
Hola App Engine! desde Java
    Acceder a appengine.google.com y crear la app

    Crear un ‘web application project’ desde eclipse
Hola App Engine! desde Java
    Acceder a appengine.google.com y crear la app

    Crear un ‘web application project’ desde eclipse

    Configurar applicationId y versión del proyecto
Hola App Engine! desde Java
    Acceder a appengine.google.com y crear la app

    Crear un ‘web application project’ desde eclipse

    Configurar applicationId y versión del proyecto

           Probar en el servidor de pruebas
Hola App Engine! desde Java
                      Acceder a appengine.google.com y crear la app

                      Crear un ‘web application project’ desde eclipse

                      Configurar applicationId y versión del proyecto

                             Probar en el servidor de pruebas

                                Desplegar sobre App Engine



Alternativamente. .   http://code.google.com/appengine/docs/java/tools/uploadinganapp.html
Hola App Engine! desde Java
                      Acceder a appengine.google.com y crear la app

                      Crear un ‘web application project’ desde eclipse

                      Configurar applicationId y versión del proyecto

                             Probar en el servidor de pruebas

                                Desplegar sobre App Engine

                        Acceder a http://applicationId.appspot.com

Alternativamente. .   http://code.google.com/appengine/docs/java/tools/uploadinganapp.html
Anatomía de una App Java
Anatomía de una App Java
Anatomía de una App Java
Limitaciones: El Sandbox
             No se pueden escribir ficheros

              No se pueden crear sockets

    Las aplicaciones no pueden crear hilos ni procesos

     Procesos que duran más de 10’’ son finalizados

         Llamadas al sistema están deshabilitadas

    JNI y extensiones nativas de Python deshabilitadas
Limitaciones: El Sandbox
Almaeclendaamtiaesnttooreen       No se pueden escribir ficheros

                                   No se pueden crear sockets

                 Las aplicaciones no pueden crear hilos ni procesos

                   Procesos que duran más de 10’’ son finalizados

                              Llamadas al sistema están deshabilitadas

                  JNI y extensiones nativas de Python deshabilitadas
Limitaciones: El Sandbox
Almaeclendaamtiaesnttooreen        No se pueden escribir ficheros

                                      No se pueden crear sockets

                 Las aplicaciones no pueden crear hilos ni procesos

                   Procesos que duran más de 10’’ son finalizados

                              Llamadas al sistema están deshabilitadas b
                                                                         Yatchs?i n(eCcerasiwtalimnogs, etc.)
                  JNI y extensiones nativas de Python deshabilitadas
Limitaciones: El Sandbox
Almaeclendaamtiaesnttooreen        No se pueden escribir ficheros

                                      No se pueden crear sockets

                 Las aplicaciones no pueden crear hilos ni procesos

                   Procesos que duran más de 10’’ son finalizados

                              Llamadas al sistema están deshabilitadas b
                                                                         Yatchs?i n(eCcerasiwtalimnogs, etc.)
                  JNI y extensiones nativas de Python deshabilitadas

        crawlers y GAE @ stackoverflow: http://bit.ly/k5jiU
Users Service
 3 tipos de autenticación
               Cuentas de google apps
                      Open Id

                 Usuario en sesión?
                                   Servicios para
             Usuario es administrador?
                 Redirección a login
               Redirección a sign-up

Users Service API package summary: http://bit.ly/9xDdCK
Users Service en la práctica
Users Service en la práctica
Autenticación usando el entorno local (stubs)
Users Service en la práctica
     Autenticación en App Engine
Datastore (el almacén de datos)
                Persistencia de entidades

           Distribuido, replicado y balanceado

                     Big Table y GFS
                                                No hay esquema
                     No relacional          (à-la Sorted S
                     Transaccional                          et )
 http://code.google.com/appengine/docs/java/datastore/
Datastore standard APIs: JPA y JDO
                               A diferencia del A P I
          Garantizan portabilidad

         (à-la SQL) JPQL y JDOQL
                                  de bajo nivel
Datastore standard APIs: JPA y JDO
                               A diferencia del A P I
          Garantizan portabilidad

         (à-la SQL) JPQL y JDOQL
                                  de bajo nivel
                ¿Cuál usar?
Datastore standard APIs: JPA y JDO
                                  A diferencia del A P I
             Garantizan portabilidad

            (à-la SQL) JPQL y JDOQL
                                     de bajo nivel
                   ¿Cuál usar?




     http://db.apache.org/jdo/jdo_v_jpa.html
Datastore standard APIs: JPA y JDO
                                  A diferencia del A P I
             Garantizan portabilidad

            (à-la SQL) JPQL y JDOQL
                                     de bajo nivel
                   ¿Cuál usar?




     http://db.apache.org/jdo/jdo_v_jpa.html

         Data Nucleus Class enhancement
Datastore en la práctica
Datastore en la práctica
Datastore en la práctica
Datastore en la práctica




      Muestran el tablón y dirigen al usuario al login
Datastore en la práctica


         Modela la entidad a persistir @PersistentCapable
Datastore en la práctica


         Tramita la persistencia del mensaje publicado
Datastore en la práctica

         Singleton para las operaciones de gestión de persistencia
Mail Service

           Basado en JSR919 (javax.mail)

         Recepción mapeada a HTTP/POST


  http://appid.appspot.com/_ah/mail/<address>




         Mail Service API: http://bit.ly/aig7Sf
Mail Service en la práctica
Mail Service en la práctica
Mail Service en la práctica

             Procesa el mensaje de correo
Mail Service en la práctica




           Mapea el servlet en la url /_ah/mail/*
Mail Service en la práctica




           Declara que la app puede recibir mail
Mail Service en la práctica
XMPP (A.K.A. Jabber) Service
                 Mensajería instantánea




           XMPP Service API http://bit.ly/clIjJ8
    *XMPP IM standard (pp 4 y 5) http://www.ietf.org/rfc/rfc3921.txt
XMPP (A.K.A. Jabber) Service
                                                             Chat bots
                 Mensajería instantánea                      Notificaciones
                                                             Interfacesservicios
                                                                     a



           XMPP Service API http://bit.ly/clIjJ8
    *XMPP IM standard (pp 4 y 5) http://www.ietf.org/rfc/rfc3921.txt
XMPP (A.K.A. Jabber) Service
                     Mensajería instantánea

               Envío y recepción de mensajes*
   Servidor




               XMPP Service API http://bit.ly/clIjJ8
        *XMPP IM standard (pp 4 y 5) http://www.ietf.org/rfc/rfc3921.txt
XMPP (A.K.A. Jabber) Service
                     Mensajería instantánea

                Envío y recepción de mensajes*
   Servidor




              Consulta de estado cliente (disponible...)




               XMPP Service API http://bit.ly/clIjJ8
        *XMPP IM standard (pp 4 y 5) http://www.ietf.org/rfc/rfc3921.txt
XMPP (A.K.A. Jabber) Service
                     Mensajería instantánea

                Envío y recepción de mensajes*
   Servidor




              Consulta de estado cliente (disponible...)

              Recepción mapeada a HTTP/POST
                    http://appid.appspot.com/_ah/xmpp/message/chat



               XMPP Service API http://bit.ly/clIjJ8
        *XMPP IM standard (pp 4 y 5) http://www.ietf.org/rfc/rfc3921.txt
XMPP (A.K.A. Jabber) Service
                     Mensajería instantánea

                Envío y recepción de mensajes*
   Servidor




              Consulta de estado cliente (disponible...)

              Recepción mapeada a HTTP/POST



               XMPP Service API http://bit.ly/clIjJ8
        *XMPP IM standard (pp 4 y 5) http://www.ietf.org/rfc/rfc3921.txt
XMPP (A.K.A. Jabber) Service


      Varios aliases (JIDs) para la misma app
           app-id@appspot.com
     anything@app-id.appspotchat.com




       XMPP Service API http://bit.ly/clIjJ8
XMPP Service en la práctica
XMPP Service en la práctica
URL Fetch Service
              Envuelve a java.net.URL




   A bajo nivel: fetching (obtiene HTTPResponse)
                                           Hay que parsearla
URL Fetch en la práctica
URL Fetch en la práctica
URL Fetch en la práctica




http://code.google.com/intl/en/apis/ajaxlanguage/documentation/
URL Fetch en la práctica
public String translate(String message){
! ! String translatedContent=null;
! ! try {
! ! ! //..composición de la url
! ! ! URL googleTranslate=new URL(parametrizedURL);
! ! ! BufferedReader reader=new BufferedReader(new InputStreamReader
        (googleTranslate.openStream()));
! ! ! StringBuilder sb=new StringBuilder();
! ! ! while(reader.ready()){
! ! ! ! sb.append(reader.readLine());
! ! ! }
! ! translatedContent=sb.toString();
! ! //parseado de la respuesta (JSON)
! ! } catch (Throwable e) {
! ! ! //...
! ! }
! ! return translatedContent;
! }

 http://code.google.com/intl/en/apis/ajaxlanguage/documentation/
URL Fetch en la práctica
public String translate(String message){
! ! String translatedContent=null;
! ! try {
! ! ! //..composición de la url
! ! ! URL googleTranslate=new URL(parametrizedURL);
! ! ! BufferedReader reader=new BufferedReader(new InputStreamReader
        (googleTranslate.openStream()));
! ! ! StringBuilder sb=new StringBuilder();
! ! ! while(reader.ready()){
! ! ! ! sb.append(reader.readLine());
! ! ! }
! ! translatedContent=sb.toString();
! ! //parseado de la respuesta (JSON)
! ! } catch (Throwable e) {
! ! ! //...
! ! }
! ! return translatedContent;
! }

 http://code.google.com/intl/en/apis/ajaxlanguage/documentation/
               http://code.google.com/p/json-simple/
URL Fetch en la práctica
Otros servicios

       Memcache

  Tratamiento imágenes

         Cron
La consola de administración
Google app engine y python
Bibliografía
Otros recursos

•   Using Django with App Engine
    http://www.42topics.com/dumps/django/docs.html

•   Google app engine Cookbook
    http://appengine-cookbook.appspot.com/

•   AppScale: Despliegue de la infraestructura AppEngine sobre Amazon
    EC2, Eucalyptus, Xen ...
    http://code.google.com/p/appscale/

•   JRuby on Rails en GAE
    *http://olabini.com/blog/2009/04/jruby-on-rails-on-google-app-engine/
Gracias
Universidad de Oviedo   Programa de extensión universitaria




     CLOUD COMPUTING.
DESARROLLO DE APLICACIONES Y
        MINERÍA WEB


                               Miguel Fernández Fernández
                                miguelff@innova.uniovi.es

Más contenido relacionado

Similar a App engine

Google cloud endpoints
Google cloud endpointsGoogle cloud endpoints
Google cloud endpointsGDG Lima
 
Congreso visión 2012 - taller introducción app engine
Congreso visión 2012 - taller introducción app engineCongreso visión 2012 - taller introducción app engine
Congreso visión 2012 - taller introducción app engineNigeŗ Arce
 
Trabajando con acelerómetros en Android
Trabajando con acelerómetros en AndroidTrabajando con acelerómetros en Android
Trabajando con acelerómetros en Androidykro
 
Mi primera app con GAE y GWT
Mi primera app con GAE y GWTMi primera app con GAE y GWT
Mi primera app con GAE y GWTGDG Lima
 
Commit 2018 - Integrando Microservicios y Machine Learning
Commit 2018 - Integrando Microservicios y Machine LearningCommit 2018 - Integrando Microservicios y Machine Learning
Commit 2018 - Integrando Microservicios y Machine LearningRafa Hidalgo
 
Desarrollo de aplicaciones multiplataforma 2/2
Desarrollo de aplicaciones multiplataforma 2/2Desarrollo de aplicaciones multiplataforma 2/2
Desarrollo de aplicaciones multiplataforma 2/2Ignacio Muñoz Vicente
 
Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoManuel Carrasco Moñino
 
Creando Aplicaciones Web en el 2015
 Creando Aplicaciones Web en el 2015 Creando Aplicaciones Web en el 2015
Creando Aplicaciones Web en el 2015Globant
 
Code Blast 2012 - Node.js
Code Blast 2012 - Node.jsCode Blast 2012 - Node.js
Code Blast 2012 - Node.jsINSIGNIA4U
 
Perl nagios
Perl nagiosPerl nagios
Perl nagiosgabalesa
 
003-Introduccion-Angular.pdf
003-Introduccion-Angular.pdf003-Introduccion-Angular.pdf
003-Introduccion-Angular.pdfDubiWeb.TK
 
Remote System Controller with Android technologies
Remote System Controller with Android technologiesRemote System Controller with Android technologies
Remote System Controller with Android technologiesMiguel Garcia Ponce
 
Frameworks y herramientas para la web del futuro
Frameworks y herramientas para la web del futuroFrameworks y herramientas para la web del futuro
Frameworks y herramientas para la web del futuroBBVA API Market
 
Mejores prácticas y las difíciles lecciones aprendidas con las aplicaciones S...
Mejores prácticas y las difíciles lecciones aprendidas con las aplicaciones S...Mejores prácticas y las difíciles lecciones aprendidas con las aplicaciones S...
Mejores prácticas y las difíciles lecciones aprendidas con las aplicaciones S...Amazon Web Services LATAM
 

Similar a App engine (20)

Aprendiendo GWT
Aprendiendo GWTAprendiendo GWT
Aprendiendo GWT
 
Google cloud endpoints
Google cloud endpointsGoogle cloud endpoints
Google cloud endpoints
 
Congreso visión 2012 - taller introducción app engine
Congreso visión 2012 - taller introducción app engineCongreso visión 2012 - taller introducción app engine
Congreso visión 2012 - taller introducción app engine
 
Cv dennys-jose-marquez-reyes-desarrollador-web
Cv dennys-jose-marquez-reyes-desarrollador-webCv dennys-jose-marquez-reyes-desarrollador-web
Cv dennys-jose-marquez-reyes-desarrollador-web
 
Trabajando con acelerómetros en Android
Trabajando con acelerómetros en AndroidTrabajando con acelerómetros en Android
Trabajando con acelerómetros en Android
 
Mi primera app con GAE y GWT
Mi primera app con GAE y GWTMi primera app con GAE y GWT
Mi primera app con GAE y GWT
 
Commit 2018 - Integrando Microservicios y Machine Learning
Commit 2018 - Integrando Microservicios y Machine LearningCommit 2018 - Integrando Microservicios y Machine Learning
Commit 2018 - Integrando Microservicios y Machine Learning
 
Desarrollo de aplicaciones multiplataforma 2/2
Desarrollo de aplicaciones multiplataforma 2/2Desarrollo de aplicaciones multiplataforma 2/2
Desarrollo de aplicaciones multiplataforma 2/2
 
Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrasco
 
Creando Aplicaciones Web en el 2015
 Creando Aplicaciones Web en el 2015 Creando Aplicaciones Web en el 2015
Creando Aplicaciones Web en el 2015
 
Code Blast 2012 - Node.js
Code Blast 2012 - Node.jsCode Blast 2012 - Node.js
Code Blast 2012 - Node.js
 
Desarrollo de aplicaciones web con Google Web Toolkit
Desarrollo de aplicaciones web con Google Web ToolkitDesarrollo de aplicaciones web con Google Web Toolkit
Desarrollo de aplicaciones web con Google Web Toolkit
 
nagios
 nagios nagios
nagios
 
Perl nagios
Perl nagiosPerl nagios
Perl nagios
 
Presentacion Google Web Toolkit
Presentacion Google Web ToolkitPresentacion Google Web Toolkit
Presentacion Google Web Toolkit
 
003-Introduccion-Angular.pdf
003-Introduccion-Angular.pdf003-Introduccion-Angular.pdf
003-Introduccion-Angular.pdf
 
Remote System Controller with Android technologies
Remote System Controller with Android technologiesRemote System Controller with Android technologies
Remote System Controller with Android technologies
 
Frameworks y herramientas para la web del futuro
Frameworks y herramientas para la web del futuroFrameworks y herramientas para la web del futuro
Frameworks y herramientas para la web del futuro
 
Mejores prácticas y las difíciles lecciones aprendidas con las aplicaciones S...
Mejores prácticas y las difíciles lecciones aprendidas con las aplicaciones S...Mejores prácticas y las difíciles lecciones aprendidas con las aplicaciones S...
Mejores prácticas y las difíciles lecciones aprendidas con las aplicaciones S...
 
Presentacion med line ed bennett con ajax y dwr
Presentacion   med line ed bennett con ajax y dwrPresentacion   med line ed bennett con ajax y dwr
Presentacion med line ed bennett con ajax y dwr
 

App engine

  • 1. Universidad de Oviedo Programa de extensión universitaria CLOUD COMPUTING. DESARROLLO DE APLICACIONES Y MINERÍA WEB Miguel Fernández Fernández miguelff@innova.uniovi.es
  • 3. cción a Una introduGoogle App Engine http://code.google.com/intl/en/appengine/
  • 4. ¿Qué es Google App Engine? La solución PaaS de Google Webapps Python y Java Altamente escalable Pago por uso Administración sencilla SDK completo
  • 5. ¿Qué es Google App Engine? La solución PaaS de Google y Javascrip Webapps Python y Java JRuby, S t (Rhino), cala. . Altamente escalable Pago por uso Administración sencilla SDK completo
  • 6. ¿Qué es Google App Engine? La solución PaaS de Google y Javascrip Webapps Python y Java JRuby, S t (Rhino), cala. . Altamente escalable I5nMci io vigsirtaatsu/itomes Pago por uso < Administración sencilla SDK completo
  • 7. ¿Qué aporta Google App Engine? Escalabilidad Ahorro en el coste de propiedad Amplio conjunto de APIs Facilidad de desarrollo Sencillez en el mantenimiento
  • 8. ¿Qué ofrece GAE a nivel funcional? Almacén de datos transaccional Sistema automático de escalado y balanceo de carga em il aIntegración con cuentas de Google ye ívn o d TM ute int cac ión Planificación de tareas programadas A Àl- a Unix Cron Memcache, manipulación imágenes, extracción URLs...
  • 9. Ciclo de desarrollo SDK Prueba Construcción Despliegue Consola De Gestión Administración
  • 10. Arquitectura física Cluster 1 Datastore Cluster 1 Nodo1 Nodo1 Balanceador de carga Nodo 2 Nodo 2 RPC de Google Nodo N Nodo N Navegador request HTTP(S) Cluster N Datastore response Cluster M Nodo1 Nodo1 Nodo 2 Nodo 2 Nodo N Nodo N Persistencia Servidor FCGI / Motor Servlets Data Nucleus sobre Big TableTM
  • 11. Desarrollo de aplicaciones GAE El runtime Java
  • 12. El SDK de Java appengine-java-sdk-1.3.6* API JARs Servidor de pruebas App Engine Uploader Documentación Ejemplos
  • 13. El SDK de Java Google Plugin for eclipse appengine-java-sdk-1.3.6* API JARs Servidor de pruebas App Engine Uploader Documentación Ejemplos GWT 2.0.4
  • 14. El SDK de Java Google Plugin for eclipse appengine-java-sdk-1.3.6* API JARs Servidor de pruebas App Engine Uploader Documentación Ejemplos GWT 2.0.4 *eclipse/plugins/com.google.appengine.eclipse.sdkbundle.1.3.6_1.3.6.v201006301254
  • 15. Hola App Engine! desde Java
  • 16. Hola App Engine! desde Java Acceder a appengine.google.com y crear la app
  • 17. Hola App Engine! desde Java Acceder a appengine.google.com y crear la app
  • 18. Hola App Engine! desde Java Acceder a appengine.google.com y crear la app Crear un ‘web application project’ desde eclipse
  • 19. Hola App Engine! desde Java Acceder a appengine.google.com y crear la app Crear un ‘web application project’ desde eclipse Configurar applicationId y versión del proyecto
  • 20. Hola App Engine! desde Java Acceder a appengine.google.com y crear la app Crear un ‘web application project’ desde eclipse Configurar applicationId y versión del proyecto Probar en el servidor de pruebas
  • 21. Hola App Engine! desde Java Acceder a appengine.google.com y crear la app Crear un ‘web application project’ desde eclipse Configurar applicationId y versión del proyecto Probar en el servidor de pruebas Desplegar sobre App Engine Alternativamente. . http://code.google.com/appengine/docs/java/tools/uploadinganapp.html
  • 22. Hola App Engine! desde Java Acceder a appengine.google.com y crear la app Crear un ‘web application project’ desde eclipse Configurar applicationId y versión del proyecto Probar en el servidor de pruebas Desplegar sobre App Engine Acceder a http://applicationId.appspot.com Alternativamente. . http://code.google.com/appengine/docs/java/tools/uploadinganapp.html
  • 23. Anatomía de una App Java
  • 24. Anatomía de una App Java
  • 25. Anatomía de una App Java
  • 26. Limitaciones: El Sandbox No se pueden escribir ficheros No se pueden crear sockets Las aplicaciones no pueden crear hilos ni procesos Procesos que duran más de 10’’ son finalizados Llamadas al sistema están deshabilitadas JNI y extensiones nativas de Python deshabilitadas
  • 27. Limitaciones: El Sandbox Almaeclendaamtiaesnttooreen No se pueden escribir ficheros No se pueden crear sockets Las aplicaciones no pueden crear hilos ni procesos Procesos que duran más de 10’’ son finalizados Llamadas al sistema están deshabilitadas JNI y extensiones nativas de Python deshabilitadas
  • 28. Limitaciones: El Sandbox Almaeclendaamtiaesnttooreen No se pueden escribir ficheros No se pueden crear sockets Las aplicaciones no pueden crear hilos ni procesos Procesos que duran más de 10’’ son finalizados Llamadas al sistema están deshabilitadas b Yatchs?i n(eCcerasiwtalimnogs, etc.) JNI y extensiones nativas de Python deshabilitadas
  • 29. Limitaciones: El Sandbox Almaeclendaamtiaesnttooreen No se pueden escribir ficheros No se pueden crear sockets Las aplicaciones no pueden crear hilos ni procesos Procesos que duran más de 10’’ son finalizados Llamadas al sistema están deshabilitadas b Yatchs?i n(eCcerasiwtalimnogs, etc.) JNI y extensiones nativas de Python deshabilitadas crawlers y GAE @ stackoverflow: http://bit.ly/k5jiU
  • 30. Users Service 3 tipos de autenticación Cuentas de google apps Open Id Usuario en sesión? Servicios para Usuario es administrador? Redirección a login Redirección a sign-up Users Service API package summary: http://bit.ly/9xDdCK
  • 31. Users Service en la práctica
  • 32. Users Service en la práctica Autenticación usando el entorno local (stubs)
  • 33. Users Service en la práctica Autenticación en App Engine
  • 34. Datastore (el almacén de datos) Persistencia de entidades Distribuido, replicado y balanceado Big Table y GFS No hay esquema No relacional (à-la Sorted S Transaccional et ) http://code.google.com/appengine/docs/java/datastore/
  • 35. Datastore standard APIs: JPA y JDO A diferencia del A P I Garantizan portabilidad (à-la SQL) JPQL y JDOQL de bajo nivel
  • 36. Datastore standard APIs: JPA y JDO A diferencia del A P I Garantizan portabilidad (à-la SQL) JPQL y JDOQL de bajo nivel ¿Cuál usar?
  • 37. Datastore standard APIs: JPA y JDO A diferencia del A P I Garantizan portabilidad (à-la SQL) JPQL y JDOQL de bajo nivel ¿Cuál usar? http://db.apache.org/jdo/jdo_v_jpa.html
  • 38. Datastore standard APIs: JPA y JDO A diferencia del A P I Garantizan portabilidad (à-la SQL) JPQL y JDOQL de bajo nivel ¿Cuál usar? http://db.apache.org/jdo/jdo_v_jpa.html Data Nucleus Class enhancement
  • 39. Datastore en la práctica
  • 40. Datastore en la práctica
  • 41. Datastore en la práctica
  • 42. Datastore en la práctica Muestran el tablón y dirigen al usuario al login
  • 43. Datastore en la práctica Modela la entidad a persistir @PersistentCapable
  • 44. Datastore en la práctica Tramita la persistencia del mensaje publicado
  • 45. Datastore en la práctica Singleton para las operaciones de gestión de persistencia
  • 46. Mail Service Basado en JSR919 (javax.mail) Recepción mapeada a HTTP/POST http://appid.appspot.com/_ah/mail/<address> Mail Service API: http://bit.ly/aig7Sf
  • 47. Mail Service en la práctica
  • 48. Mail Service en la práctica
  • 49. Mail Service en la práctica Procesa el mensaje de correo
  • 50. Mail Service en la práctica Mapea el servlet en la url /_ah/mail/*
  • 51. Mail Service en la práctica Declara que la app puede recibir mail
  • 52. Mail Service en la práctica
  • 53. XMPP (A.K.A. Jabber) Service Mensajería instantánea XMPP Service API http://bit.ly/clIjJ8 *XMPP IM standard (pp 4 y 5) http://www.ietf.org/rfc/rfc3921.txt
  • 54. XMPP (A.K.A. Jabber) Service Chat bots Mensajería instantánea Notificaciones Interfacesservicios a XMPP Service API http://bit.ly/clIjJ8 *XMPP IM standard (pp 4 y 5) http://www.ietf.org/rfc/rfc3921.txt
  • 55. XMPP (A.K.A. Jabber) Service Mensajería instantánea Envío y recepción de mensajes* Servidor XMPP Service API http://bit.ly/clIjJ8 *XMPP IM standard (pp 4 y 5) http://www.ietf.org/rfc/rfc3921.txt
  • 56. XMPP (A.K.A. Jabber) Service Mensajería instantánea Envío y recepción de mensajes* Servidor Consulta de estado cliente (disponible...) XMPP Service API http://bit.ly/clIjJ8 *XMPP IM standard (pp 4 y 5) http://www.ietf.org/rfc/rfc3921.txt
  • 57. XMPP (A.K.A. Jabber) Service Mensajería instantánea Envío y recepción de mensajes* Servidor Consulta de estado cliente (disponible...) Recepción mapeada a HTTP/POST http://appid.appspot.com/_ah/xmpp/message/chat XMPP Service API http://bit.ly/clIjJ8 *XMPP IM standard (pp 4 y 5) http://www.ietf.org/rfc/rfc3921.txt
  • 58. XMPP (A.K.A. Jabber) Service Mensajería instantánea Envío y recepción de mensajes* Servidor Consulta de estado cliente (disponible...) Recepción mapeada a HTTP/POST XMPP Service API http://bit.ly/clIjJ8 *XMPP IM standard (pp 4 y 5) http://www.ietf.org/rfc/rfc3921.txt
  • 59. XMPP (A.K.A. Jabber) Service Varios aliases (JIDs) para la misma app app-id@appspot.com anything@app-id.appspotchat.com XMPP Service API http://bit.ly/clIjJ8
  • 60. XMPP Service en la práctica
  • 61. XMPP Service en la práctica
  • 62. URL Fetch Service Envuelve a java.net.URL A bajo nivel: fetching (obtiene HTTPResponse) Hay que parsearla
  • 63. URL Fetch en la práctica
  • 64. URL Fetch en la práctica
  • 65. URL Fetch en la práctica http://code.google.com/intl/en/apis/ajaxlanguage/documentation/
  • 66. URL Fetch en la práctica public String translate(String message){ ! ! String translatedContent=null; ! ! try { ! ! ! //..composición de la url ! ! ! URL googleTranslate=new URL(parametrizedURL); ! ! ! BufferedReader reader=new BufferedReader(new InputStreamReader (googleTranslate.openStream())); ! ! ! StringBuilder sb=new StringBuilder(); ! ! ! while(reader.ready()){ ! ! ! ! sb.append(reader.readLine()); ! ! ! } ! ! translatedContent=sb.toString(); ! ! //parseado de la respuesta (JSON) ! ! } catch (Throwable e) { ! ! ! //... ! ! } ! ! return translatedContent; ! } http://code.google.com/intl/en/apis/ajaxlanguage/documentation/
  • 67. URL Fetch en la práctica public String translate(String message){ ! ! String translatedContent=null; ! ! try { ! ! ! //..composición de la url ! ! ! URL googleTranslate=new URL(parametrizedURL); ! ! ! BufferedReader reader=new BufferedReader(new InputStreamReader (googleTranslate.openStream())); ! ! ! StringBuilder sb=new StringBuilder(); ! ! ! while(reader.ready()){ ! ! ! ! sb.append(reader.readLine()); ! ! ! } ! ! translatedContent=sb.toString(); ! ! //parseado de la respuesta (JSON) ! ! } catch (Throwable e) { ! ! ! //... ! ! } ! ! return translatedContent; ! } http://code.google.com/intl/en/apis/ajaxlanguage/documentation/ http://code.google.com/p/json-simple/
  • 68. URL Fetch en la práctica
  • 69. Otros servicios Memcache Tratamiento imágenes Cron
  • 70. La consola de administración
  • 71. Google app engine y python
  • 73. Otros recursos • Using Django with App Engine http://www.42topics.com/dumps/django/docs.html • Google app engine Cookbook http://appengine-cookbook.appspot.com/ • AppScale: Despliegue de la infraestructura AppEngine sobre Amazon EC2, Eucalyptus, Xen ... http://code.google.com/p/appscale/ • JRuby on Rails en GAE *http://olabini.com/blog/2009/04/jruby-on-rails-on-google-app-engine/
  • 75. Universidad de Oviedo Programa de extensión universitaria CLOUD COMPUTING. DESARROLLO DE APLICACIONES Y MINERÍA WEB Miguel Fernández Fernández miguelff@innova.uniovi.es