Your SlideShare is downloading. ×
CLOUD COMPUTING.
DESARROLLO DE APLICACIONESY
MINERÍA WEB
Programa de extensión universitariaUniversidad de Oviedo
Miguel F...
Google App Engine
http://code.google.com/intl/en/appengine/
Google App Engine
http://code.google.com/intl/en/appengine/
Una introducción a
¿Qué es Google App Engine?
La solución PaaS de Google
Webapps Python y Java
Altamente escalable
Pago por uso
SDK completo
...
¿Qué es Google App Engine?
y Javascript (Rhino),JRuby,Scala...
La solución PaaS de Google
Webapps Python y Java
Altamente ...
¿Qué es Google App Engine?
y Javascript (Rhino),JRuby,Scala...
La solución PaaS de Google
Webapps Python y Java
Altamente ...
¿Qué aporta Google App Engine?
Escalabilidad
Ahorro en el coste de propiedad
Amplio conjunto de APIs
Facilidad de desarrol...
¿Qué ofrece GAE a nivel funcional?
Memcache, manipulación imágenes, extracción URLs...
Sistema automático de escalado y ba...
SDK
Consola
De
Administración
Ciclo de desarrollo
Despliegue
Prueba
Construcción
Gestión
Arquitectura física
Balanceadordecarga
Navegador
RPCdeGoogle
Nodo1
Nodo 2
Nodo N
Datastore
Cluster 1
Nodo1
Nodo 2
Nodo N
C...
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
Google Plugin for eclipse
GWT 2.0.4
El SDK de Java
appengine-java-sdk-1.3.6*
API JARs
Servidor de pruebas
App Engine Uploa...
Google Plugin for eclipse
GWT 2.0.4
El SDK de Java
appengine-java-sdk-1.3.6*
API JARs
Servidor de pruebas
App Engine Uploa...
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...
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...
Hola App Engine! desde Java
Acceder a appengine.google.com y crear la app
Crear un ‘web application project’ desde eclipse...
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 n...
Limitaciones: El Sandbox
No se pueden escribir ficheros
No se pueden crear sockets
Las aplicaciones no pueden crear hilos n...
Limitaciones: El Sandbox
No se pueden escribir ficheros
No se pueden crear sockets
Las aplicaciones no pueden crear hilos n...
Limitaciones: El Sandbox
No se pueden escribir ficheros
No se pueden crear sockets
Las aplicaciones no pueden crear hilos n...
Users Service
Cuentas de google apps
Open Id
3 tipos de autenticación
Usuario en sesión?
Usuario es administrador?
Redirec...
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
BigTable y GFS
http://code.g...
Datastore standard APIs: JPA y JDO
Garantizan portabilidad A diferencia del A P Ide bajo nivel(à-la SQL) JPQL y JDOQL
Datastore standard APIs: JPA y JDO
Garantizan portabilidad A diferencia del A P Ide bajo nivel(à-la SQL) JPQL y JDOQL
¿Cuá...
Datastore standard APIs: JPA y JDO
Garantizan portabilidad A diferencia del A P Ide bajo nivel(à-la SQL) JPQL y JDOQL
¿Cuá...
Datastore standard APIs: JPA y JDO
Garantizan portabilidad A diferencia del A P Ide bajo nivel(à-la SQL) JPQL y JDOQL
¿Cuá...
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
Mail Service API: http://bit.ly/aig7Sf
Basado en JSR919 (javax.mail)
Recepción mapeada a HTTP/POST
http://app...
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
http://www.ietf.org/rfc/rfc3921.txt*XMPP IM standard (pp 4 y 5)
XMPP S...
XMPP (A.K.A. Jabber) Service
Mensajería instantánea
Chat bots
Notificaciones
Interfacesa servicios
http://www.ietf.org/rfc...
XMPP (A.K.A. Jabber) Service
Mensajería instantánea
Servidor
Envío y recepción de mensajes*
http://www.ietf.org/rfc/rfc392...
XMPP (A.K.A. Jabber) Service
Mensajería instantánea
Servidor
Envío y recepción de mensajes*
Consulta de estado cliente (di...
XMPP (A.K.A. Jabber) Service
Mensajería instantánea
Servidor
Envío y recepción de mensajes*
Consulta de estado cliente (di...
XMPP (A.K.A. Jabber) Service
Mensajería instantánea
Servidor
Envío y recepción de mensajes*
Consulta de estado cliente (di...
XMPP (A.K.A. Jabber) Service
Varios aliases (JIDs) para la misma app
XMPP Service API http://bit.ly/clIjJ8
app-id@appspot....
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
http://code.google.com/intl/en/apis/ajaxlanguage/documentation/
public String translate(String me...
URL Fetch en la práctica
http://code.google.com/intl/en/apis/ajaxlanguage/documentation/
public String translate(String me...
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
...
Gracias
CLOUD COMPUTING.
DESARROLLO DE APLICACIONESY
MINERÍA WEB
Programa de extensión universitariaUniversidad de Oviedo
Miguel F...
Upcoming SlideShare
Loading in...5
×

App engine

1,539

Published on

Diapositivas correspondientes a la parte sobre la plataforma de desarrollo Google App Engine del curso de extensión universitaria "Cloud Computing. Desarrollo de Aplicaciones y Minería Web", celebrado en la Escuela Universitaria de Ingeniería Informática de Oviedo

Published in: Technology, Business
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,539
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "App engine"

  1. 1. CLOUD COMPUTING. DESARROLLO DE APLICACIONESY MINERÍA WEB Programa de extensión universitariaUniversidad de Oviedo Miguel Fernández Fernández miguel@ThirdWay.es
  2. 2. Google App Engine http://code.google.com/intl/en/appengine/
  3. 3. Google App Engine http://code.google.com/intl/en/appengine/ Una introducción a
  4. 4. ¿Qué es Google App Engine? La solución PaaS de Google Webapps Python y Java Altamente escalable Pago por uso SDK completo Administración sencilla
  5. 5. ¿Qué es Google App Engine? y Javascript (Rhino),JRuby,Scala... La solución PaaS de Google Webapps Python y Java Altamente escalable Pago por uso SDK completo Administración sencilla
  6. 6. ¿Qué es Google App Engine? y Javascript (Rhino),JRuby,Scala... La solución PaaS de Google Webapps Python y Java Altamente escalable Pago por uso SDK completo Administración sencilla Inicio gratuito < 5M visitas/mes
  7. 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. 8. ¿Qué ofrece GAE a nivel funcional? Memcache, manipulación imágenes, extracción URLs... Sistema automático de escalado y balanceo de carga Integración con cuentas de GoogleTM Almacén de datos transaccional Planificación de tareas programadas À-la Unix CronAutenticación y envío de mail
  9. 9. SDK Consola De Administración Ciclo de desarrollo Despliegue Prueba Construcción Gestión
  10. 10. Arquitectura física Balanceadordecarga Navegador RPCdeGoogle Nodo1 Nodo 2 Nodo N Datastore Cluster 1 Nodo1 Nodo 2 Nodo N Cluster 1 Nodo1 Nodo 2 Nodo N Cluster N Nodo1 Nodo 2 Nodo N Datastore Cluster M request response HTTP(S) Servidor FCGI / Motor Servlets Persistencia Data Nucleus sobre BigTableTM
  11. 11. Desarrollo de aplicaciones GAE El runtime Java
  12. 12. El SDK de Java appengine-java-sdk-1.3.6* API JARs Servidor de pruebas App Engine Uploader Documentación Ejemplos
  13. 13. Google Plugin for eclipse GWT 2.0.4 El SDK de Java appengine-java-sdk-1.3.6* API JARs Servidor de pruebas App Engine Uploader Documentación Ejemplos
  14. 14. Google Plugin for eclipse GWT 2.0.4 El SDK de Java appengine-java-sdk-1.3.6* API JARs Servidor de pruebas App Engine Uploader Documentación Ejemplos eclipse/plugins/com.google.appengine.eclipse.sdkbundle.1.3.6_1.3.6.v201006301254*
  15. 15. Hola App Engine! desde Java
  16. 16. Hola App Engine! desde Java Acceder a appengine.google.com y crear la app
  17. 17. Hola App Engine! desde Java Acceder a appengine.google.com y crear la app
  18. 18. Hola App Engine! desde Java Acceder a appengine.google.com y crear la app Crear un ‘web application project’ desde eclipse
  19. 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. 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. 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 Desplegar sobre App Engine Probar en el servidor de pruebas http://code.google.com/appengine/docs/java/tools/uploadinganapp.htmlAlternativamente...
  22. 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 Desplegar sobre App Engine Acceder a http://applicationId.appspot.com Probar en el servidor de pruebas http://code.google.com/appengine/docs/java/tools/uploadinganapp.htmlAlternativamente...
  23. 23. Anatomía de una App Java
  24. 24. Anatomía de una App Java
  25. 25. Anatomía de una App Java
  26. 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. 27. 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 el datastoreAlmacenamiento en
  28. 28. 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 el datastoreAlmacenamiento en batch? (Crawling, etc.)Y si necesitamos
  29. 29. 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 el datastoreAlmacenamiento en batch? (Crawling, etc.)Y si necesitamos http://bit.ly/k5jiUcrawlers y GAE @ stackoverflow:
  30. 30. Users Service Cuentas de google apps Open Id 3 tipos de autenticación Usuario en sesión? Usuario es administrador? Redirección a login Servicios para Redirección a sign-up Users Service API package summary: http://bit.ly/9xDdCK
  31. 31. Users Service en la práctica
  32. 32. Users Service en la práctica Autenticación usando el entorno local (stubs)
  33. 33. Users Service en la práctica Autenticación en App Engine
  34. 34. Datastore (el almacén de datos) Persistencia de entidades Distribuido, replicado y balanceado BigTable y GFS http://code.google.com/appengine/docs/java/datastore/ No relacional No hay esquema(à-la Sorted Set)Transaccional
  35. 35. Datastore standard APIs: JPA y JDO Garantizan portabilidad A diferencia del A P Ide bajo nivel(à-la SQL) JPQL y JDOQL
  36. 36. Datastore standard APIs: JPA y JDO Garantizan portabilidad A diferencia del A P Ide bajo nivel(à-la SQL) JPQL y JDOQL ¿Cuál usar?
  37. 37. Datastore standard APIs: JPA y JDO Garantizan portabilidad A diferencia del A P Ide bajo nivel(à-la SQL) JPQL y JDOQL ¿Cuál usar? http://db.apache.org/jdo/jdo_v_jpa.html
  38. 38. Datastore standard APIs: JPA y JDO Garantizan portabilidad A diferencia del A P Ide bajo nivel(à-la SQL) JPQL y JDOQL ¿Cuál usar? http://db.apache.org/jdo/jdo_v_jpa.html Data Nucleus Class enhancement
  39. 39. Datastore en la práctica
  40. 40. Datastore en la práctica
  41. 41. Datastore en la práctica
  42. 42. Datastore en la práctica Muestran el tablón y dirigen al usuario al login
  43. 43. Datastore en la práctica Modela la entidad a persistir @PersistentCapable
  44. 44. Datastore en la práctica Tramita la persistencia del mensaje publicado
  45. 45. Datastore en la práctica Singleton para las operaciones de gestión de persistencia
  46. 46. Mail Service Mail Service API: http://bit.ly/aig7Sf Basado en JSR919 (javax.mail) Recepción mapeada a HTTP/POST http://appid.appspot.com/_ah/mail/<address>
  47. 47. Mail Service en la práctica
  48. 48. Mail Service en la práctica
  49. 49. Mail Service en la práctica Procesa el mensaje de correo
  50. 50. Mail Service en la práctica Mapea el servlet en la url /_ah/mail/*
  51. 51. Mail Service en la práctica Declara que la app puede recibir mail
  52. 52. Mail Service en la práctica
  53. 53. XMPP (A.K.A. Jabber) Service Mensajería instantánea http://www.ietf.org/rfc/rfc3921.txt*XMPP IM standard (pp 4 y 5) XMPP Service API http://bit.ly/clIjJ8
  54. 54. XMPP (A.K.A. Jabber) Service Mensajería instantánea Chat bots Notificaciones Interfacesa servicios http://www.ietf.org/rfc/rfc3921.txt*XMPP IM standard (pp 4 y 5) XMPP Service API http://bit.ly/clIjJ8
  55. 55. XMPP (A.K.A. Jabber) Service Mensajería instantánea Servidor Envío y recepción de mensajes* http://www.ietf.org/rfc/rfc3921.txt*XMPP IM standard (pp 4 y 5) XMPP Service API http://bit.ly/clIjJ8
  56. 56. XMPP (A.K.A. Jabber) Service Mensajería instantánea Servidor Envío y recepción de mensajes* Consulta de estado cliente (disponible...) http://www.ietf.org/rfc/rfc3921.txt*XMPP IM standard (pp 4 y 5) XMPP Service API http://bit.ly/clIjJ8
  57. 57. XMPP (A.K.A. Jabber) Service Mensajería instantánea Servidor Envío y recepción de mensajes* Consulta de estado cliente (disponible...) http://www.ietf.org/rfc/rfc3921.txt*XMPP IM standard (pp 4 y 5) XMPP Service API http://bit.ly/clIjJ8 Recepción mapeada a HTTP/POST http://appid.appspot.com/_ah/xmpp/message/chat
  58. 58. XMPP (A.K.A. Jabber) Service Mensajería instantánea Servidor Envío y recepción de mensajes* Consulta de estado cliente (disponible...) http://www.ietf.org/rfc/rfc3921.txt*XMPP IM standard (pp 4 y 5) XMPP Service API http://bit.ly/clIjJ8 Recepción mapeada a HTTP/POST
  59. 59. XMPP (A.K.A. Jabber) Service Varios aliases (JIDs) para la misma app XMPP Service API http://bit.ly/clIjJ8 app-id@appspot.com anything@app-id.appspotchat.com
  60. 60. XMPP Service en la práctica
  61. 61. XMPP Service en la práctica
  62. 62. URL Fetch Service Envuelve a java.net.URL A bajo nivel: fetching (obtiene HTTPResponse) Hay que parsearla
  63. 63. URL Fetch en la práctica
  64. 64. URL Fetch en la práctica
  65. 65. URL Fetch en la práctica http://code.google.com/intl/en/apis/ajaxlanguage/documentation/
  66. 66. URL Fetch en la práctica http://code.google.com/intl/en/apis/ajaxlanguage/documentation/ 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; ! }
  67. 67. URL Fetch en la práctica http://code.google.com/intl/en/apis/ajaxlanguage/documentation/ 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/p/json-simple/
  68. 68. URL Fetch en la práctica
  69. 69. Otros servicios Memcache Tratamiento imágenes Cron
  70. 70. La consola de administración
  71. 71. Google app engine y python
  72. 72. Bibliografía
  73. 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/
  74. 74. Gracias
  75. 75. CLOUD COMPUTING. DESARROLLO DE APLICACIONESY MINERÍA WEB Programa de extensión universitariaUniversidad de Oviedo Miguel Fernández Fernández miguel@ThirdWay.es

×