SlideShare una empresa de Scribd logo
1 de 75
CLOUD COMPUTING.
DESARROLLO DE APLICACIONESY
MINERÍA WEB
Programa de extensión universitariaUniversidad de Oviedo
Miguel Fernández Fernández
miguel@ThirdWay.es
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
Administración sencilla
¿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
¿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
¿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?
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
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
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
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 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 Uploader
Documentación
Ejemplos
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
Desplegar sobre App Engine
Probar en el servidor de pruebas
http://code.google.com/appengine/docs/java/tools/uploadinganapp.htmlAlternativamente...
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...
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
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
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
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:
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
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.google.com/appengine/docs/java/datastore/
No relacional
No hay esquema(à-la Sorted Set)Transaccional
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ál usar?
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
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
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://appid.appspot.com/_ah/mail/<address>
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 Service API http://bit.ly/clIjJ8
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
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
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
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
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
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
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 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;
! }
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/
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
CLOUD COMPUTING.
DESARROLLO DE APLICACIONESY
MINERÍA WEB
Programa de extensión universitariaUniversidad de Oviedo
Miguel Fernández Fernández
miguel@ThirdWay.es

Más contenido relacionado

Destacado

Tk03 Google App Engine Fr
Tk03 Google App Engine FrTk03 Google App Engine Fr
Tk03 Google App Engine FrValtech
 
DNUG2015 Frühjahrskonferenz: Brücken bauen, Grenzen überwinden: Domino im Dia...
DNUG2015 Frühjahrskonferenz: Brücken bauen, Grenzen überwinden: Domino im Dia...DNUG2015 Frühjahrskonferenz: Brücken bauen, Grenzen überwinden: Domino im Dia...
DNUG2015 Frühjahrskonferenz: Brücken bauen, Grenzen überwinden: Domino im Dia...JRibbeck
 
CAP 4: SEO - Optimizacion de Contenido
CAP 4: SEO - Optimizacion de ContenidoCAP 4: SEO - Optimizacion de Contenido
CAP 4: SEO - Optimizacion de ContenidoGary Briceño
 
CAP 3: SEO - Keywords Research
CAP 3: SEO - Keywords ResearchCAP 3: SEO - Keywords Research
CAP 3: SEO - Keywords ResearchGary Briceño
 
Desarrollando para Nmap Scripting Engine (NSE) [GuadalajaraCON 2013]
Desarrollando para Nmap Scripting Engine (NSE) [GuadalajaraCON 2013]Desarrollando para Nmap Scripting Engine (NSE) [GuadalajaraCON 2013]
Desarrollando para Nmap Scripting Engine (NSE) [GuadalajaraCON 2013]Websec México, S.C.
 
Presentacion introduccion ibm file net p8 v10
Presentacion introduccion ibm file net p8 v10Presentacion introduccion ibm file net p8 v10
Presentacion introduccion ibm file net p8 v10Javier Laguens Garcia
 
Nuxeo WebEngine : Etude de cas
Nuxeo WebEngine : Etude de casNuxeo WebEngine : Etude de cas
Nuxeo WebEngine : Etude de casDamien Metzler
 
An introduction to Google's App Engine
An introduction to Google's App EngineAn introduction to Google's App Engine
An introduction to Google's App EngineStefan Sperber
 
b2performance berth
b2performance berthb2performance berth
b2performance berthITB Berlin
 
presentation on Introducing components of ic engine (automobile engine), Powe...
presentation on Introducing components of ic engine (automobile engine), Powe...presentation on Introducing components of ic engine (automobile engine), Powe...
presentation on Introducing components of ic engine (automobile engine), Powe...Engr Soomro
 
Taller modelo de negocios Engine Up Perú
Taller modelo de negocios Engine Up PerúTaller modelo de negocios Engine Up Perú
Taller modelo de negocios Engine Up PerúP3 Ventures
 
Basics of IC engine
Basics of IC engineBasics of IC engine
Basics of IC engineSLA1987
 
FOUR STROKE ENGINE
FOUR STROKE ENGINEFOUR STROKE ENGINE
FOUR STROKE ENGINEshaffu786
 
INTERNAL COMBUSTION ENGINES PPT
INTERNAL COMBUSTION ENGINES PPT INTERNAL COMBUSTION ENGINES PPT
INTERNAL COMBUSTION ENGINES PPT AKASH1001
 
Formacion camara-madrid-septiembre-2012
Formacion camara-madrid-septiembre-2012Formacion camara-madrid-septiembre-2012
Formacion camara-madrid-septiembre-2012Canal IP
 
Google Cloud Platform. Google App Engine
Google Cloud Platform. Google App Engine Google Cloud Platform. Google App Engine
Google Cloud Platform. Google App Engine Kwaye Kant
 
El SEO y la Geolocalización
El SEO y la GeolocalizaciónEl SEO y la Geolocalización
El SEO y la GeolocalizaciónCanal IP
 
Search Engine Friendly Design (SEFD) - SMX München 2014
Search Engine Friendly Design (SEFD) - SMX München 2014Search Engine Friendly Design (SEFD) - SMX München 2014
Search Engine Friendly Design (SEFD) - SMX München 2014Daniel Herndler
 

Destacado (20)

Tk03 Google App Engine Fr
Tk03 Google App Engine FrTk03 Google App Engine Fr
Tk03 Google App Engine Fr
 
DNUG2015 Frühjahrskonferenz: Brücken bauen, Grenzen überwinden: Domino im Dia...
DNUG2015 Frühjahrskonferenz: Brücken bauen, Grenzen überwinden: Domino im Dia...DNUG2015 Frühjahrskonferenz: Brücken bauen, Grenzen überwinden: Domino im Dia...
DNUG2015 Frühjahrskonferenz: Brücken bauen, Grenzen überwinden: Domino im Dia...
 
CAP 4: SEO - Optimizacion de Contenido
CAP 4: SEO - Optimizacion de ContenidoCAP 4: SEO - Optimizacion de Contenido
CAP 4: SEO - Optimizacion de Contenido
 
CAP 3: SEO - Keywords Research
CAP 3: SEO - Keywords ResearchCAP 3: SEO - Keywords Research
CAP 3: SEO - Keywords Research
 
El SEOy la geolocalización
El SEOy la geolocalizaciónEl SEOy la geolocalización
El SEOy la geolocalización
 
Desarrollando para Nmap Scripting Engine (NSE) [GuadalajaraCON 2013]
Desarrollando para Nmap Scripting Engine (NSE) [GuadalajaraCON 2013]Desarrollando para Nmap Scripting Engine (NSE) [GuadalajaraCON 2013]
Desarrollando para Nmap Scripting Engine (NSE) [GuadalajaraCON 2013]
 
Presentacion introduccion ibm file net p8 v10
Presentacion introduccion ibm file net p8 v10Presentacion introduccion ibm file net p8 v10
Presentacion introduccion ibm file net p8 v10
 
Nuxeo WebEngine : Etude de cas
Nuxeo WebEngine : Etude de casNuxeo WebEngine : Etude de cas
Nuxeo WebEngine : Etude de cas
 
An introduction to Google's App Engine
An introduction to Google's App EngineAn introduction to Google's App Engine
An introduction to Google's App Engine
 
b2performance berth
b2performance berthb2performance berth
b2performance berth
 
presentation on Introducing components of ic engine (automobile engine), Powe...
presentation on Introducing components of ic engine (automobile engine), Powe...presentation on Introducing components of ic engine (automobile engine), Powe...
presentation on Introducing components of ic engine (automobile engine), Powe...
 
Taller modelo de negocios Engine Up Perú
Taller modelo de negocios Engine Up PerúTaller modelo de negocios Engine Up Perú
Taller modelo de negocios Engine Up Perú
 
Basics of IC engine
Basics of IC engineBasics of IC engine
Basics of IC engine
 
FOUR STROKE ENGINE
FOUR STROKE ENGINEFOUR STROKE ENGINE
FOUR STROKE ENGINE
 
AIR POWERED ENGINE PPT
AIR POWERED ENGINE PPTAIR POWERED ENGINE PPT
AIR POWERED ENGINE PPT
 
INTERNAL COMBUSTION ENGINES PPT
INTERNAL COMBUSTION ENGINES PPT INTERNAL COMBUSTION ENGINES PPT
INTERNAL COMBUSTION ENGINES PPT
 
Formacion camara-madrid-septiembre-2012
Formacion camara-madrid-septiembre-2012Formacion camara-madrid-septiembre-2012
Formacion camara-madrid-septiembre-2012
 
Google Cloud Platform. Google App Engine
Google Cloud Platform. Google App Engine Google Cloud Platform. Google App Engine
Google Cloud Platform. Google App Engine
 
El SEO y la Geolocalización
El SEO y la GeolocalizaciónEl SEO y la Geolocalización
El SEO y la Geolocalización
 
Search Engine Friendly Design (SEFD) - SMX München 2014
Search Engine Friendly Design (SEFD) - SMX München 2014Search Engine Friendly Design (SEFD) - SMX München 2014
Search Engine Friendly Design (SEFD) - SMX München 2014
 

Similar a App engine

Mi Primera Aplicacion en Google App Engine
Mi Primera Aplicacion en Google App EngineMi Primera Aplicacion en Google App Engine
Mi Primera Aplicacion en Google App Engineykro
 
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
 
Introducción a Android y conexión con SharePoint
Introducción a Android y conexión con SharePointIntroducción a Android y conexión con SharePoint
Introducción a Android y conexión con SharePointAlbert Lozano Ciller
 
An evening with ... Ionic Framework Meetup
An evening with ... Ionic Framework Meetup An evening with ... Ionic Framework Meetup
An evening with ... Ionic Framework Meetup Arkhotech
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007guestd24c393
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007guest976d083
 
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
 
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
 
Aprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAbimael Desales López
 
Intro a ASP.NET
Intro a ASP.NETIntro a ASP.NET
Intro a ASP.NETwilliamsm
 
Android Studio y gradle. DroidconES 2014
Android Studio y gradle. DroidconES 2014Android Studio y gradle. DroidconES 2014
Android Studio y gradle. DroidconES 2014Kamil Zabdyr
 
WSO2 API Manager y ESB la plataforma perfecta para evolucionar los servicios
WSO2 API Manager y ESB la plataforma perfecta para evolucionar los serviciosWSO2 API Manager y ESB la plataforma perfecta para evolucionar los servicios
WSO2 API Manager y ESB la plataforma perfecta para evolucionar los serviciosWSO2
 

Similar a App engine (20)

App engine
App engineApp engine
App engine
 
Servicios web
Servicios webServicios web
Servicios web
 
Mi Primera Aplicacion en Google App Engine
Mi Primera Aplicacion en Google App EngineMi Primera Aplicacion en Google App Engine
Mi Primera Aplicacion en Google App Engine
 
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
 
Introducción a Android y conexión con SharePoint
Introducción a Android y conexión con SharePointIntroducción a Android y conexión con SharePoint
Introducción a Android y conexión con SharePoint
 
Servicios web java, php, perl, google
Servicios web java, php, perl, googleServicios web java, php, perl, google
Servicios web java, php, perl, google
 
Arquitectura
Arquitectura Arquitectura
Arquitectura
 
An evening with ... Ionic Framework Meetup
An evening with ... Ionic Framework Meetup An evening with ... Ionic Framework Meetup
An evening with ... Ionic Framework Meetup
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007
 
Curso Cloud Computing, Parte 2: Google App Engine
Curso Cloud Computing, Parte 2: Google App EngineCurso Cloud Computing, Parte 2: Google App Engine
Curso Cloud Computing, Parte 2: Google App Engine
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007
 
introducción a flutter
introducción a flutterintroducción a flutter
introducción a flutter
 
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
 
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
 
Aprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDB
 
Servicio web.lauraivettecolinvillarreal
Servicio web.lauraivettecolinvillarrealServicio web.lauraivettecolinvillarreal
Servicio web.lauraivettecolinvillarreal
 
Desarrollo web
Desarrollo webDesarrollo web
Desarrollo web
 
Intro a ASP.NET
Intro a ASP.NETIntro a ASP.NET
Intro a ASP.NET
 
Android Studio y gradle. DroidconES 2014
Android Studio y gradle. DroidconES 2014Android Studio y gradle. DroidconES 2014
Android Studio y gradle. DroidconES 2014
 
WSO2 API Manager y ESB la plataforma perfecta para evolucionar los servicios
WSO2 API Manager y ESB la plataforma perfecta para evolucionar los serviciosWSO2 API Manager y ESB la plataforma perfecta para evolucionar los servicios
WSO2 API Manager y ESB la plataforma perfecta para evolucionar los servicios
 

Último

Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptxHugoGutierrez99
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxLINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxkimontey
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
La tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedadLa tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedadEduardoSantiagoSegov
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024u20211198540
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Marketing BRANDING
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdfsharitcalderon04
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armadob7fwtwtfxf
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxhasbleidit
 

Último (20)

Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
El camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVPEl camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVP
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxLINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
La tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedadLa tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedad
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdf
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armado
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
 

App engine

  • 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
  • 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. 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. 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*
  • 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 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...
  • 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 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
  • 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 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
  • 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 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. 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 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
  • 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 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. 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. URL Fetch en la práctica
  • 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. CLOUD COMPUTING. DESARROLLO DE APLICACIONESY MINERÍA WEB Programa de extensión universitariaUniversidad de Oviedo Miguel Fernández Fernández miguel@ThirdWay.es