App engine

2,363 views

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
2,363
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

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

×