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
1. CLOUD COMPUTING.
DESARROLLO DE APLICACIONESY
MINERÍA WEB
Programa de extensión universitariaUniversidad de Oviedo
Miguel Fernández Fernández
miguel@ThirdWay.es
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. ¿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. ¿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. ¿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?
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
12. El SDK de Java
appengine-java-sdk-1.3.6*
API JARs
Servidor de pruebas
App Engine Uploader
Documentación
Ejemplos
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. 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*
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
Desplegar sobre App Engine
Probar en el servidor de pruebas
http://code.google.com/appengine/docs/java/tools/uploadinganapp.htmlAlternativamente...
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...
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
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. 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. 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. 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
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. Datastore standard APIs: JPA y JDO
Garantizan portabilidad A diferencia del A P Ide bajo nivel(à-la SQL) JPQL y JDOQL
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. 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. 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
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
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>
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. 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. 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. 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. 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. 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. 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
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. CLOUD COMPUTING.
DESARROLLO DE APLICACIONESY
MINERÍA WEB
Programa de extensión universitariaUniversidad de Oviedo
Miguel Fernández Fernández
miguel@ThirdWay.es