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