Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos
Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos
-
Upload
diego-lopez-de-ipina -
Category
Technology
-
view
8.193 -
download
0
description
Transcript of Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos
1
Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos
6 de Noviembre 2013, 9:00-12:30, Araba Enpresa Digitala
Parque Tecnológico de Álava (Miñano) - Edificio Central
Dr. Diego López-de-Ipiña González-de-Artaza [email protected]
http://paginaspersonales.deusto.es/dipina http://www.morelab.deusto.es
2
Agenda
1. La Internet del Futuro – La internet del futuro: definición, objetivos, limitaciones y desafíos.
– Los pilares de la internet del futuro.
– Internet de las cosas
– Los nuevos protocolos de internet: IPv6 y HTTP 2.0.
2. La Web del Futuro – Evolución de la web: Web 3.0
– El futuro de los navegadores web: HTML5, CSS3, RWD.
– El futuro de los buscadores web.
– La web como plataforma de servicios: REST, Comet, …
3
Agenda
3. Cloud Computing – Definición.
– Manifestaciones de cloud computing: SaaS, PaaS y IaaS.
– Aplicaciones cloud más significativas.
– Infraestructura cloud: Amazon Web Services.
– Plataformas cloud: Google App Engine.
4. Web de Datos y Big Data – Web Semántica: principios.
– Anotación de contenidos, lenguajes, y mash-ups semánticos.
– Linked Data: tecnologías, aplicaciones y LOD-Cloud.
– Big Data: definición, tecnologías y aplicabilidad.
5. Conclusión y Preguntas
4
• Internet tiene más de 1500 millones de usuarios – Es un éxito comunicando personas y sistemas de información
• PERO … – ha crecido mucho más allá de sus expectativas y objetivos de diseño
en los 70s:
• Varios parches han permitido aplicaciones novedosas sin cambiarse su arquitectura subyacente
– debe superar sus limitaciones tecnológicas para usarse como una infraestructura global crítica
• Las aplicaciones web del futuro requerirán más movilidad, seguridad, ancho de banda, robustez e interactividad
Limitaciones de la Internet Actual (1)
5
• Varios “parches” han sido desarrollados y desplegados para permitir a Internet hacer frente a las demandas incrementales de conectividad y capacidad
• La Internet actual ha alcanzado un punto de saturación para alcanzar las expectativas funcionales del usuario y los desafíos tecnológicos en tiempo y precio – En términos de seguridad, escalabilidad, movilidad, disponibilidad o
aspectos socioeconómicos
Limitaciones de la Internet Actual (2)
6
¿Qué es la Internet del Futuro?
• Término que resume los esfuerzos para progresar a una mejor Internet, bien mediante: – Pequeños pasos evolutivos incrementales o
– Un rediseño completo (clean slate) y nuevos principios arquitectónicos
• Agentes clave: – Global Environment for Network Innovations (GENI):
http://www.geni.net/
• Más basado en redes
– Proyecto AKARI en Japón, http://akari-project.nict.go.jp/eng
– Future Internet – http://www.future-internet.eu/ y http://www.fi-
ppp.eu/about/
7
Misión de la Future Internet (FI)
• Ofrecer a todos los usuarios un entorno seguro, eficiente, confiable y robusto, que:
– Permita un acceso abierto, dinámico y descentralizado a la red y a su información y
– Sea escalable, flexible y adapte su rendimiento a las necesidades de los usuarios y su contexto
8
Los Pilares de la Internet del Futuro
• La Internet del Futuro consta de 4 pilares apoyados en una nueva infraestructura de red como base:
– Internet Por y Para la Gente
– Internet de los Contenidos y del Conocimiento
– Internet de los Servicios
– Internet de las Cosas
9
Arquitectura de la Internet del Futuro
10
Internet de las Redes
• Aunque existen proyectos que están trabajando en cambios radicales a la manera de establecer conexiones con Internet – http://www.fi-ppp.eu/
• FI-WARE: http://www.fi-ware.eu/about/
• Nos vamos a centrar en una serie de innovaciones en protocolos que se están imponiendo y serán la norma en un futuro cercano: – IPv6
– HTTP 2.0
– NFC
– Bluetooth Low Energy (BLE)
11
IPv6
• Latest revision of the Internet Protocol (IP), the communications protocol that provides an identification and location system for computers on networks and routes traffic across the Internet.
– Developed by the Internet Engineering Task Force (IETF) to deal with the long-anticipated problem of IPv4 address exhaustion
• IPv6 is intended to replace IPv4, which still carries the vast majority of Internet traffic as of 2013
– As of September 2013, the percentage of users reaching Google services over IPv6 surpassed 2%
• To make the switch, software and routers will have to be changed to support this more advanced network
• IPv6 uses a 128-bit address, allowing 2128, or approximately 3.4×1038 addresses, or more than 7.9×1028 times as many as IPv4, which uses 32-bit addresses.
• IPv6 addresses are represented as eight groups of four hexadecimal digits separated by colons
– E.g. 2001:0db8:85a3:0042:1000:8a2e:0370:7334
12
IPv6 vs. IPv4
• Other important changes: • No more NAT (Network Address Translation), Auto-configuration, no
more private address collisions, better multicast routing, simpler header
format, simplified, more efficient routing, true quality of service (QoS), also
called "flow labeling“, built-in authentication and privacy support, flexible
options and extensions, easier administration (say good-bye to DHCP)
13
HTTP 2.0
• HTTP 2.0 is the next planned version of the HTTP network protocol used by the World Wide Web. – HTTP 2.0 is being developed by the Hypertext Transfer Protocol Bis
(httpbis) working group of the IETF. – Based on Google's SPDY protocol, Microsoft's HTTP Speed+Mobility
proposal (SPDY based)
• HTTP 2.0 would be the first new version of the HTTP protocol since HTTP 1.1 was described by RFC 2616 in 1999.
• Goals: – Include asynchronous connection multiplexing, header compression,
and request-response pipelining, while maintaining full backwards compatibility with the transaction semantics of HTTP 1.1
– Enable Server-Push
• Documentation: – http://chimera.labs.oreilly.com/books/1230000000545/ch12.html
14
HTTP 2.0 streams, messages and frames
Binary Framing Layer Stream, Messages & Frames
A connection carries any number of bidirectional streams. In turn, each stream communicates in messages, which consist of one or multiple frames, each of which may be interleaved and then reassembled via the embedded stream identifier in the header of each individual frame
Request & Response Multiplexing
15
Near Field Communication (NFC)
• Near field communication (NFC) is a set of standards for smartphones and similar devices to establish radio communication with each other by touching them together or bringing them into close proximity, usually no more than a few centimetres
– Operates at 13.56 MHz, has data transfer rate ranging from 106 kbit/s to 424 kbit/s
– NFC tags contain data and are typically read-only, but may be rewriteable
• Uses RFID (Radio Frequency Communication) chips that enable devices to communicate between them, bi-directionally.
– Application examples:
• NFC headsets and electronic wallets, eliminates the need to pair devices in Bluetooth or WiFi Direct (e.g. Android Beam / S-Beam), data exchange through NFC tags
• Wider availability of NFC-enabled SmartPhones is propelling its usage: http://www.nfcworld.com/nfc-phones-list/
– When will the iPhone support it?
16
NFC in Use
• Get info from posters, make payments, exchange connections
17
Bluetooth Low Energy (BLE)
• Bluetooth low energy (BLE) is a wireless computer network technology which is aimed at novel applications in the healthcare, fitness, security, and home entertainment industries.
– Compared to "Classic" Bluetooth, it is intended to provide considerably reduced power consumption and lower cost, while maintaining a similar communication range
• Power consumption is drastically reduced via a low pulsing method that keeps devices connected without the need of a continuous information stream
• Features:
– Operates inn the same spectrum range (the 2.400 GHz-2.4835 GHz ISM band) as Classic Bluetooth technology, but uses a different set of channels.
– Uses a star topology
– Nodes act as presence/state indicators
– Internet enabled devices as Gateways
• Available devices supporting BLE (Nokia Lumia, Android 4.3+, iPhone 4S+)
18
• In the market, we can encounter two types of BLE devices:
– Bluetooth Smart Ready refers to devices that use a dual-mode radios, which can handle both the 4.0 technology, as well as classic Bluetooth abilities, such as transferring files, or connecting to a hands-free device.
– Bluetooth Smart represents a new breed of Bluetooth 4.0 peripherals: sensor-type devices like heart-rate monitors or pedometers that run on small batteries and are designed to collect specific pieces of information.
• Only connect to BT Smart Ready devices
19
Internet Por y Para la Gente
• Nueva visión del usuario en Internet que implica: – Mejor experiencia de usuario: desarrollo de nuevos interfaces
ergonómicos y modelos de interacción multi-modal
– Usuarios activos (prosumers): nuevas herramientas que permitan a los usuarios finales crear y compartir servicios personalizados
– Sensible al Usuario y Contenido: personalización de contenido y servicios de acuerdo al contexto y preferencias personales
– Conocimiento de usuarios: extraer información de los usuarios, monitorizar su comportamiento sin comprometer su privacidad
20
Desafíos de la Internet por y para la Gente
1. Saber más del usuario – conociendo sus hábitos y necesidades para diseñar mejor las aplicaciones, interfaces y servicios futuros
– Conocimiento de usuarios – los servicios y la web deberían ser adaptables y personalizables al usuario
– Consciencia del usuario y del conocimiento – para generar sistemas de recomendación, para la web móvil y los servicios sensibles a la localización
2. Dar más poder al usuario – más y mejores servicios personalizados y creados por los propios usuarios (enfoque Do It Yourself – DIY)
3. Mejorar la experiencia de usuario – nuevas interfaces ergonómicas y mecanismos de interacción incluyendo multi-modalidad y combinación y adaptación semántica de la información desde diferentes fuentes
21
Open Innovation
• Nueva estrategia de innovación bajo la cual las empresas van más allá de los límites internos de su organización y donde la cooperación con profesionales externos pasa a tener un papel fundamental.
– La inteligencia colectiva surge de la colaboración y concurso de muchos individuos o seres vivos de una misma especie.
– Término generalizado de la cibercultura o la sociedad del conocimiento
• Los usuarios como PROSUMERS
• Algunos proyectos/conceptos en esta área:
– Kick starter –sitio web de financiación en masa (CrowdFunding) para proyectos creativos http://www.kickstarter.com/
– Crowdsourcing se define como “the practice of obtaining needed services, ideas, or content by soliciting contributions from a large group of people and especially from the online community rather than from traditional employees or suppliers”
22
Internet de los Contenidos y del Conocimiento
• Nueva visión del contenido en Internet que implica: – Nuevos dispositivos/players: dispositivos multimedia con más
funcionalidad integrada, escalables, auto-configurables, programables
– Aplicaciones multimedia sociales: software y herramientas para integrar contenidos multimedia orientados a relaciones sociales.
– Contenido digital: herramientas para crear contenidos por el propio usuario y su distribución a través de diferentes localizaciones.
– Contenido etiquetado semánticamente: para permitir que las aplicaciones puedan procesar información de modo inteligente
– Inteligencia cognitiva: la evolución de la web a Web 3.0 permitirá motores de búsqueda multimedia avanzados.
23
Desafíos de la Internet de los Contenidos y Conocimiento
• Generación y procesamiento de contenido y su transformación en información útil, teniendo en cuenta su relación con el usuario:
1. Contenido digital inteligente – información comprensible disponible al usuario, incluyendo tanto datos (esencia) como metadatos (facilitando su búsqueda, procesamiento, consumo, etc.)
2. Aplicaciones multimedia distribuidas sensibles al contexto – los prosumers permitirán una selección automática de contenidos, sin importar ya tanto cómo originariamente fueron provistos los contenidos
3. Nuevos dispositivos de usuarios y terminales ubicuos – los usuarios deben poder acceder a contenido allí donde estén, desde cualquier terminal y sin importar los cambios de terminal que efectúen.
24
Ejemplo Internet de la Gente y Contenidos
25
Google Glass
• Su misión es producir un ubiquitous computer de venta masiva
– Lanzadas para los desarrolladores de Google I/O por 1500$ el año 2013
• Muestra información disponible sin utilizar las manos, accede a Internet mediante órdenes de voz, de manera comparable a Google Now
26
Wearable Devices: SmartWatch & Health-promoting Personal Data Devices
27
Internet of Things (IoT) Promise
• There will be around 25 billion devices connected to the Internet by 2015, 50 billion by 2020
– A dynamic and universal network where billions of identifiable “things” (e.g. devices, people, applications, etc.) communicate with one another anytime anywhere; things become context-aware, are able to configure themselves and exchange information, and show “intelligence/cognitive” behaviour
28
Internet de las Cosas
• Red universal de objetos interconectados y direccionables basada en protocolos de comunicación estándar. – IoT exhibirá un alto nivel de heterogeneidad, combinando objetos de
distinta funcionalidad, tecnología o campos de aplicación.
– Protocolos semánticos noveles serán desarrollados para permitir a IoT escalar y coordinar a los millones de objetos que nos rodean
– RFID y redes de sensores proporcionan un mecanismo de bajo coste y robusto de identificación y sensibilidad al contexto
• El uso de Internet pasará de modelo request/reply a push-and-process
29
Internet de las Cosas
30
Desafíos de Internet de las Cosas
1. Procesar grandes cantidades de información de “cosas conectadas” y ofrecer servicios en respuesta
2. Investigar en nuevos modos y mecanismos de encontrar, recuperar y transmitir datos dinámicamente – Descubrimiento de datos sensoriales — en tiempo y espacio
– Comunicación de datos sensoriales: consultas complejas (síncronas), publish/subscribe (asíncronas)
– Procesamiento de gran variedad de streams de datos sensoriales: correlación, agregación y filtrado
3. Dimensión ética y social: mantener el equilibrio entre personalización, privacidad y seguridad
31
IoT Enabling Technologies
• Low-cost embedded computing and communication platforms, e.g. Arduino or Rapsberry PI
• Wide availability of low-cost sensors and sensor networks
• Cloud-based Sensor Data Management Frameworks: Xively, Sense.se
Democratization of Internet-connected Physical Objects
32
IoT impulse: Smart Cities, consumer objects, mobile sensing, smart metering
33
Human-mediated Mobile Sensing
• La combinación de humanos, SmartPhones y dispositivos de sensorización da lugar a Mobile Sensing y CrowdSensing
34
Nature of Data in IoT
• Heterogeneity makes IoT devices hardly interoperable
• Data collected is multi-modal, diverse, voluminous and often supplied at high speed
• IoT data management imposes heavy challenges on information systems
35
Internet of Everything
• CISCO view: “From the Internet of Things (IoT), where we are today, we are just beginning to enter a new realm: the Internet of Everything (IoE), where things will gain context awareness, increased processing power, and greater sensing abilities”
– IoE (four pillars: people, process, data, and things) builds on top of IoT (one pillar: things).
36
Web of Things
• The Web of Things (WoT) is a computing concept that describes a future where everyday objects are fully integrated with the Web. – The prerequisite for WoT is for the "things" to have embedded
computer systems that enable communication with the Web, i.e. HTTP microserver
– Such smart devices would then be able to communicate with each other using existing Web standards: HTTP & REST
– http://www.webofthings.org/
37
Protocolos para IoT • NFC y BLE también entran en esta categoría:
Protocol CoAP XMPP RESTful HTTP MQTT
Transport UDP TCP TCP TCP
Messaging Request/Response Publish/Subscribe Request/Response
Request/Response Publish/Subscribe Request/Response
2G, 3G, 4G Suitability (1000s nodes)
Excellent Excellent Excellent Excellent
LLN Suitability (1000s nodes)
Excellent Fair Fair Fair
Compute Resources
10Ks RAM/Flash 10Ks RAM/Flash 10Ks RAM/Flash 10Ks RAM/Flash
Success Stories Utility Field Area Networks
Remote management of consumer white goods
Smart Energy Profile 2 (premise energy management/home services)
Extending enterprise messaging into IoT applications
38
Internet of Things example: SmartVase
39
Internet of Things example: Social Sustainable Coffee Machine
40
Adapted from SAP Research, 2008, and SEEKDA, 2008
Una multitud de servicios IT conectados, que son ofrecidos, comprados,
vendidos, utilizados, adaptados y compuestos por una red universal de
proveedores, consumidores y agregadores de servicios o brokers
- resultando en -
una nueva manera de ofrecer, utilizar, y organizar funcionalidad soportada
por IT
Internet de los Servicios
41
Internet de los Servicios
• Define cómo los servicios serán provistos y operados en la Internet del Futuro – http://services.future-internet.eu/index.php/Main_Page
• Tres principales áreas de investigación: 1. Internet-scale service oriented computing –permite el acceso a
recursos computacionales, datos o software, como servicios
2. Acceso a servicios contextualizado, proactivo y personalizado – context-awareness, interacción multi-modal, end-user empowerment, colaborativo
3. Orquestación de servicios y servicios base – diferentes capas de servicios, desde servicios de infraestructura a servicios específicos con interfaz de usuario.
42
Desafíos de la Internet de los Servicios
1. Permitir el acceso a servicios en base a las características técnicas (localización IP o identificador) de servicios web, pero también en base a información contextual (e.j. usando contexto geográfico o de negocio).
2. Los servicios deben ser buscados, identificados y compuestos en componentes de procesos de negocio
3. Progresar hacia la “interactividad perfecta” de los consumidores: – Permanente – interactividad sin límites temporales
– Transparente – el consumidor se concentra en los beneficios del servicio (en el qué) permitiendo la movilidad del usuario entre diferentes dispositivos sin interrupción
– Sensible al contexto – la interacción se adapta al contexto incluyendo características de los dispositivos, localización, preferencias de usuarios o sus redes sociales
– Enriquecedor – los usuarios configuran la manera en la que acceden a los servicios y
– Confiable – los usuario confían en que sus interacciones con servicios son seguras
43
La Web del Futuro
• Web Semántica: o Las máquinas entienden el contenido que han estado alojando y pueden
obtener información de la semántica de los documentos o Tecnologías: XML, RDF, SPARQL, OWL, µFormats...
• Web Ubicua: o Provee una framework para exportar capacidades de coordinación de
dispositivos a las aplicaciones web o Pretende mejorar las capacidades de los navegadores para habilitar
nuevos tipos de aplicaciones contextuales o Conectar un móvil con cámara con una impresora cercana, usar un móvil
para dar una presentación en un proyector inalámbrico, etc.
• Web Semántica + Web Ubicua = ¡Web 3.0 y más allá!
44
La Evolución de la Web
45
La Evolución de la Web
• Según Nova Spivack, el desarrollo de la Web se mueve en ciclos de 10 años:
– En la 1ª década, todo el desarrollo centrado en la infraestructura de la Web.
• Los programadores crearon los protocolos y lenguajes que utilizamos en la Web actual
– En la 2ª década, el foco se ha movido al front end y comenzó la era Web 2.0
• Ahora, se utilizan páginas Web como plataformas para otras aplicaciones.
• Se crean mash-ups y experimenta con nuevos modos de hacer la web más interactiva
• Web 2.0: web social y web como plataforma estamos al final del ciclo!!
– El 3er ciclo será la Web 3.0, y el foco será de nuevo el back-end
• Los programadores redefinirán la infraestructura de Internet para dar apoyo a las avanzadas capacidades de los navegadores y buscadores Web 3.0.
– La 4ª y subsiguientes fases corresponderán a la Web 4.0 y Web X.0
• Se volverá a dar importancia al front-end, nuevas y novedosas aplicaciones harán uso de la infraestructura generada en la Web 3.0
• Fuente: – http://www.howstuffworks.com/framed.htm?parent=web-
30.htm&url=http://www.intentblog.com/archives/2007/02/nova_spivack_th.html
46
Web 1.0 vs. Web 2.0 vs. Web 3.0
• Web 1.0 es como una librería. Puedes consultar información pero no puedes contribuir con o cambiar la información.
• Web 2.0 es la web social colaborativa que pone en contacto a gente y permite entrada y salida (input/output web)
• Web 3.0 usa la Internet para conectar información. Hace la web más inteligente, teniendo en cuenta (enchufando) nuestras preferencias, hábitos y contexto
47
Características de la Web 3.0
• Asistente personal que nos conoce y puede acceder a información en Internet para responder a nuestras preguntas
• Cada usuario dispondrá de un único perfil de Internet basado en la historia de navegación del usuario – Si dos usuarios realizan la misma búsqueda por Internet recibirán
resultados diferentes acordes con su perfil y contexto
• Proveerá a los usuarios experiencias más ricas y relevantes
• Su bloque funcional serán las Open APIs – Crear mash-ups será tan sencillo que cualquiera podrá hacerlo
• Se podrán mezclar widgets para hacer mashups usando drag&drop
48
El Futuro de las Búsquedas: Personalizadas y en Tiempo Real
49
Futuro de las Búsquedas • The early days of search required that users query a search engine in database
format.
– Users phrase the query in such a way that the machine understands the request, query the database, and return results.
• Now, we are trying to talk to the machine and get back relevant results:
– Google' Glass and Now, and Apple's Siri are good examples of concept services
– Hummingbird replaces the old Google search algorithm that sought to map words in a query to content with the same terms, to a new engine that seeks to actually understand the meaning behind the query and (hopefully) return more relevant results
• Our data is organized in the most accessible ways possible, conforming to relevant data conventions and organized logically so the ever evolving spiders can access and make sense of it.
Google's Amit Singhal states that
“Future Search will need to: Answer & Converse& Anticipate”
50
Wolfram|Alpha
• Es un motor de conocimiento que genera salidas realizando cómputos a partir de su propia base de conocimiento, en vez de hacer búsquedas en la web y devolver vínculos.
– Contiene algoritmos que permiten obtener datos sobre hechos y fórmulas planteados en lenguaje natural, apoyándose en la infraestructura de Mathematica
– Los resultados vienen como gráficos, mapas, hechos y tablas
• ¿Para qué sirve Wolfram|Alpha?
– Para mostrar información o realizar computaciones sobre hechos
– El servicio conoce mucho del mundo:
• Geografía, economía y datos socioeconómicos, física, química, ingeniería, deportes, unidades de medida, tiempo e incluso música.
• Diferencia con los buscadores:
– Todos los hechos, fórmulas y relaciones han sido preparados por usuarios humanos
– Wolfram|Alpha intenta determinar el significado real de una pregunta realizada
• Procesadores de lenguaje natural determinan el dominio de la pregunta para así facilitar el cómputo de la respuesta
52
Siri • Asistente personal para iOS que utiliza procesamiento del
lenguaje natural para responder preguntas, hacer recomendaciones y realizar acciones delegando a servicios web
• Es capaz de adaptarse con el paso del tiempo a las preferencias individuales de cada usuario, personalizando las búsquedas web y la realización de algunas tareas
• Las acciones y respuestas que es capaz de proveer Siri descansan en un creciente ecosistema de proyectos acompañantes:
– OpenTable, CitySearch, Yelp, Yahoo, ReserveTravel, Localeze para preguntas sobre restaurantes, negocios y acciones;
– Eventful, StubHub, y LiveKick para información sobre eventos y conciertos;
– True Knowledge, Bing Answers, y Wolfram Alpha para las respuestas acerca de información sobre hechos y lugares
• URL: http://www.apple.com/ios/siri/
53
Google Now • Asistente personal inteligente disponible para los sistemas
operativos Android y iOS
• Usa una interfaz de usuario de lenguaje natural para responder preguntas, hacer recomendaciones, y actuar al delegar las solicitudes a un conjunto de servicios web.
• Reconoce acciones repetidas que un usuario realiza en el dispositivo (ubicaciones comunes, citas repetidas del calendario, consultas de búsqueda, etc.) para mostrar información más relevante al usuario a manera de "tarjetas".
• El sistema aprovecha el proyecto Knowledge Graph de Google, un sistema usado para ensamblar resultados de búsquedas más detallados mediante el análisis de su significado y conexiones
• Las tarjetas especializadas actualmente incluyen: cumpleaños, monedas, Gmail eventos, etc.
• URL: http://www.google.com/landing/now/
54
Google HummingBird • Google Hummingbird es el nuevo algoritmo de búsqueda de Google:
– En Septiembre 27, 2013, el 15 cumpleaños de Google se lanzó este algoritmo que pretende hacer las búsquedas en Google más cercanas al usuario (“human friendly”) y ofrecer respuestas directas
• “Hummingbird looks at PageRank — how important links to a page are deemed to be — along with other factors like whether Google believes a page is of good quality, the words used on it and many other things”
• Permite hacer consultas más complejas y entender mejor el lenguaje humano, en vez de un conjunto de palabras.
• Permite a Google gestionar mejor “búsquedas conversacionales”
– Cada vez se van a hacer mas “vocal search”
– Google quiere procesar consultas en lenguaje natural
• Ejemplo:
– “give me some pictures of the transamerica building”
– “how tall is it” / “how tall is the transamerica building?”
– “pomegranate vs cranberry juice”
• Explota internamente el contenido recogido en Knowledge Graph, con servicios que lo explotan como Google Now quiere anticiparse, leer nuestra mente
• URL: http://www.copyblogger.com/google-hummingbird/
55
Google Knowledge Graph • Knowledge Graph es una base de conocimiento usada por Google para
mejorar los resultados obtenidos con su motor de búsqueda mediante información de búsqueda semántica recolectada de una amplia gama de recursos.
– Se añadió al motor de búsqueda de Google en 2012
• Provee información estructurada y detallada acerca de un tema además de una lista de enlaces a otros sitios.
• Esta información se deriva de muchos recursos, que incluyen el CIA World Factbook, Freebase y Wikipedia
– Su red semántica contenía más de 570 millones de objetos y más de 18 mil millones de sucesos acerca de –y relaciones entre– esos diferentes objetos que se usan para entender el significado del término índice ingresado en la búsqueda
• URL:
– Knowledge Graph http://www.google.com/insidesearch/features/search/knowledge.html
– Freebase: http://wiki.freebase.com/wiki/Main_Page
57
Evolución de los Navegadores
• Tradicionalmente los navegadores web se ejecutan en ordenadores conectados a Internet, PERO … • Los SmartPhones, SmartTVs (y otros dispositivos) incluyen también acceso a
servicios de datos mediante pequeños navegadores web • Las aplicaciones web deben poder ejecutarse en todo tipo de dispositivos
• Los lenguajes HTML5/CSS3 y JavaScript no son ya sólo utilizados para acceder a la World Wide Web o Pueden definir interfaces de usuario para muchos tipos de aplicaciones
locales y remotas, reduciendo el ciclo de desarrollo
• Los navegadores están emergiendo como habilitadores de interacción global y players de aplicaciones web
58
Navegadores Futuros
• ¿Cuál será el rol de los navegadores en el futuro?
– Mozilla, Opera, Google y otros se están moviendo hacia un modelo donde el navegador es el sistema operativo – bien denominándolo navegador como SO o cloud SO
• Todas las aplicaciones, documentos, ficheros y servicios accedidos a través de una interfaz web y se comportan de igual modo independientemente del SO (Windows, Linux, Android, Chrome …)
59
Chrome OS • Proyecto para desarrollar un sistema operativo basado en web.
– Realizado con base en código abierto (Núcleo Linux) y orientado inicialmente para mini portátiles sobre microprocesadores con tecnología x86 o ARM
– Chrome OS fue liberado en noviembre de 2009 bajo el proyecto «Chromium OS»
– Dispositivos existentes: Chromebooks y ChromeCast
61
El Browser como App Player
62
Características de los Navegadores del Futuro
• Serán reproductores (players) de aplicaciones web y catalizadores de interacciones con servicios:
– Caché de aplicaciones
– Modo de operación offline y online
– Capacidad de almacenamiento
– Soporte multi-hilo
– Integración con escritorio
– Interacción multi-modal
– Interacción con el entorno
– Motores de ejecución de servicios
63
El Browser como Broker de Información
• Nuevo rol de los navegadores web: de renderizar HTML a broker de información – Detectan información en páginas web y la transfieren a otras aplicaciones
• La detección de microformatos y contenido semántico debería ser diseñado como una plataforma abierta y extensible – Gestión de contactos, calendario y aplicaciones de mapas usan APIs del navegador
para integrarse con la capacidad de detección de microformatos y contenido semántico del browser
• Ejemplo: Mozilla Operator (http://microformats.org/wiki/geo)
64
Greasemonkey • Greasemonkey es una extensión para el navegador Mozilla Firefox que permite, por
medio de pequeñas porciones de código creadas por usuarios, modificar el comportamiento de páginas web específicas
– Instala porciones de código llamadas user scripts que, por medio de JavaScript, realizan acciones muy concretas; muchas de estas porciones de código son creadas para sitios concretos, otras sirven para cualquier página web.
• El portal http://userscripts.org/ contiene muchos scripts para mejorar los sites que visitas
• Ejemplo:
– Instala el siguiente Script para añadir enlace a versión “Simple English” de toda página web en http://en.wikipedia.org/wiki/. Por ejemplo: http://en.wikipedia.org/wiki/WebRTC
65
La Web como Plataforma: Parte Servidora
SOA: Service Oriented Architecture
• Define la utilización de servicios para dar soporte a los requisitos del negocio
• Sistemas altamente escalables, estándar de exposición e invocación de servicios (comúnmente pero no exclusivamente servicios web), lo cual facilita la interacción entre diferentes sistemas propios o de terceros.
• Éxito de SOA depende de que los desarrolladores de software se orienten a esta mentalidad de crear servicios comunes que son orquestados por clientes o middleware para implementar los procesos de negocio
• Hablar de SOA significa generalmente hablar de un juego de servicios residentes en Internet o una intranet, usando tecnologías como (XML, HTTP, SOAP, WSDL, UDDI)
• Características: Modular, distribuido, auto-descriptivo, compartible y desacoplado
• Dos estilos: objetos distribuidos (WS*-Style) y WOA Style
WOA: Web Oriented Architecture
• WOA = SOA + REST + WWW
• Arquitectura de software que extiende SOA a aplicaciones basadas en web
• La información se representa en forma de recursos en la red y es accedida y manipulada mediante el protocolo especificado en la URI.
• Los recursos se manipulan mediante CRUD HTTP (POST, GET, PUT, DELETE) usando REST.
• Estos recursos sólo son manipulados por componentes pertenecientes a la red (esencialmente browsers & web servers).
• Es responsabilidad de los componentes entender la representación y estados de transición válidos de los recursos.
• Los recursos tienen embebidas URIs que construyen una red más grande de recursos
• Más flexibles, ágiles al cambio y evolución de los sistemas de información.
66
La Web como Plataforma: Parte Servidora
SOAP: Simple Object Access Protocol
• Define cómo dos objetos en diferentes procesos pueden comunicarse por medio de intercambio de datos XML.
• Deriva de un protocolo creado por David Winer en 1998, llamado XML-RPC.
• Fue creado por Microsoft, IBM, y otros y actualmente se encuentra bajo el auspicio de la W3C.
• Su arquitectura consiste en varias capas de especificaciones para formato de mensajes:
• Message Exchange Patterns (MEP)
• Protocolos de transporte (SMTP y HTTP/S)
• Modelos de procesado de mensajes
• Protocolo de extensibilidad
• WS-*
REST: Represantional State Transfer
• Estilo de arquitectura software para sistemas de hypermedia distribuidos como la WWW.
• Introducido en la tésis doctoral de Roy Fielding en el año 2000.
• Se refiere a una colección de principios de arquitectura de red, que marcan cómo definir e invocar los recursos.
• El término se usa a veces para describir una simple interfaz que transmite datos de un dominio específico por HTTP sin capas adicionales como SOAP o uso de cookies.
• Los sistemas que cumplen los principios marcados por Fielding suelen ser referidos como sistemas RESTful.
67
Understanding REST (1)
• Representational State Transfer (REST) is an architectural style for creating, maintaining, retrieving, and deleting resources
– REST is an information-driven, resource-oriented approach to building Web services
• Whilst SOAP is mostly useful for invoking behaviour, REST is good for managing information
– A resource can be anything (a file, query, calculation, or concept) of potential interest that is serializable (represented) in some form
– A representation is the transfer format of information or application state from a server to a client or back again.
• When to use SOAP and when to use REST?
– When you need to invoke behavior in standard contract-bound ways between disparate partners, SOAP is a good approach.
– If you are looking to share information in flexible, scalable, reusable, loosely-coupled ways, then REST is a great approach
• The HTTP protocol and its verbs are the most common implementation of REST, but other bindings are possible
68
Understanding REST (2)
• REST identifies resources by URLs – URLs are logical paths through information spaces
– Uniquely identify one or more resources in a resolvable context
– Specifies a path toward an answer that encourages caching
– Allows you to pass references to data, rather than the data itself
• Some example URLs could be:
– http://someserver/book returns a index of book categories
– http://someserver/book/genre/horror returns a book collection of genre horror
– http://someserver/author/Diego/Ipiña returns info about author Diego Ipiña
69
Understanding REST (3)
• REST is an architectural style, where the ‘R’ stands for representation. – A representation is the structural form of the resource as it
moves back and forth from client to server
• Resources are given logical names – There is no strict binding between an information consumer and
producer
• Unlike SOAP, in REST result negotiation allows for different representation selection: – XML may be a great format in the business tier
– In a browser-based API, you might like to refer to the same resource but ask for it back as JavaScript Object Notation (JSON)
70
Understanding REST (4)
• In summary, the REST architectural style is based on the following separation of concerns: – The things we care about (resources)
– How we refer to them (URIs)
– How we manipulate them (verbs)
– How we choose to represent them for creation, updates, and retrieval (Representations)
• REST concepts are the foundation for dynamic, scalable, sharable and loosely-coupled resource-oriented architectures (WOA)
71
Behaviour of a REST Application
72
JAX-RS: Java API for RESTful Web Services
• A Java programming language API that provides support in creating web services according to the Representational State Transfer (REST) architectural pattern. – Uses annotations, introduced in Java SE 5, to simplify the
development and deployment of web service clients and endpoints.
• Implementations of JAX-RS include: – Apache CXF, an open source Web service framework. – Jersey, the reference implementation from Sun (now
Oracle). – Restlet, created by Jerome Louvel, a pioneer in REST
frameworks
73
JAX-RS Annotations • JAX-RS provides some annotations to aid in mapping a resource class (a POJO) as a web resource:
– @Path specifies the relative path for a resource class or method.
– @GET, @PUT, @POST, @DELETE and @HEAD specify the HTTP request type of a resource.
– @Produces specifies the response Internet media types (used for content negotiation).
– @Consumes specifies the accepted request Internet media types.
• In addition, it provides further annotations to method parameters to pull information out of the request. All the @*Param annotations take a key of some form which is used to look up the value required.
– @PathParam binds the method parameter to a path segment.
– @QueryParam binds the method parameter to the value of an HTTP query parameter.
– @MatrixParam binds the method parameter to the value of an HTTP matrix parameter.
• E.g.: Matrix parameters apply to a particular path element while query parameters apply to the request as a whole
http://example.com/res/categories;name=foo/objects;name=green/?page=1
– @HeaderParam binds the method parameter to an HTTP header value.
– @CookieParam binds the method parameter to a cookie value.
– @FormParam binds the method parameter to a form value.
– @DefaultValue specifies a default value for the above bindings when the key is not found.
– @Context returns the entire context of the object.(for example @Context HttpServletRequest request)
74
Jersey: an implementation of JAX-RS • Jersey is the reference implementation of JAX-RS, it contains basically a REST
server and a REST client.
– The core client can be used provides a library to communicate with the server.
– On the server side Jersey uses a servlet which scans predefined classes to identify RESTful resources
• Via the web.xml configuration file for your web application, registers this servlet which is provided by the Jersey distribution
• The base URL of this servlet is: http://your_domain:port/display-name/url-pattern/path_from_rest_class
• This servlet analyzes the incoming HTTP request and selects the correct class and method to respond to this request.
– This selection is based on annotations in the class and methods.
• Download from: https://jersey.java.net/download.html
75
OpenID • Single sign-on es un procedimiento de autenticación que habilita al usuario para
acceder a varios sistemas con una sola instancia de identificación
• OpenID is an open standard that allows users to be authenticated by certain co-operating sites (known as Relying Parties or RP) using a third party service, eliminating the need for webmasters to provide their own ad hoc systems and allowing users to consolidate their digital identities
– Users may create accounts with their preferred OpenID identity providers, and then use those accounts as the basis for signing on to any website which accepts OpenID authentication.
• An extension to the standard (the OpenID Attribute Exchange) facilitates the transfer of user attributes, such as name and gender, from the OpenID identity provider to the relying party
• OpenID authentication is now used and provided by several large websites. – Providers include Google, Yahoo!, PayPal, BBC, AOL, LiveJournal, MySpace, IBM, Steam, Sherdog,
Orange and VeriSign
• Facebook Connect is a good alternative to OpenID – Allows users to "connect" their Facebook identity, friends and privacy to any site.
76
OpenID
77
OAuth
• OAuth is an open standard for authorization
– Provides a method for clients to access server resources on behalf of a resource owner (such as a different client or an end-user).
– Provides a process for end-users to authorize third-party access to their server resources without sharing their credentials (typically, a username and password pair), using user-agent redirections.
• Complementary to OpenID
78
Flujo de Autenticación OAuth
Primera vez
Sucesivamente
79
Concepto AJAX
• AJAX (Asynchronous Javascript and XML) es una técnica de desarrollo web que genera aplicaciones web interactivas combinando: – XHTML y CSS para la presentación de información – Document Object Model (DOM) para visualizar dinámicamente e
interactuar con la información presentada – XML, XSLT para intercambiar y manipular datos
• JSON y JSON-RPC pueden ser alternativas a XML/XSLT
– XMLHttpRequest para recuperar datos asíncronamente – Javascript como nexo de unión de todas estas tecnologías
• AJAX es un patrón de diseño que propone un nuevo modelo de interacción Web combinando las tecnologías anteriores
• Los navegadores que soportan las tecnologías mencionadas son las plataformas en las que se ejecutan las aplicaciones AJAX (Firefox, Iexplorer, Opera, Chrome y Safari)
80
La Web como Plataforma: Parte Cliente HTML 5.0
• El Web Hypertext Application Technology Working Group (WHATWG) ha dado lugar a la especificación de HTML 5.0 (www.w3.org/html/wg/html5):
– “The main area that has not been adequately addressed by HTML is Web Applications. This specification attempts to rectify this, while at the same time updating the HTML specs to address issues raised in the past few years”
• El enfoque predominante de WebApps basado en plug-ins debe quedar obsoleto
• HTML 5 proporciona un conjunto de nuevos elementos y atributos que reflejan el uso típico en portales Web modernos:
– Reemplazos semánticos para usos de elementos genéricos como (<div>) o (<span>) elements, por ejemplo <nav> (bloque de navegación de website) y <footer>.
– Otros elementos proveen nueva funcionalidad a través de una interfaz estándar, como los elementos <audio> o <video>
– Elimina elementos de HTML 4. Por ejemplo, elementos presentacionales como <font> y <center>, cuyos efectos son mejor logrados mediante CSS
– Hay un nuevo énfasis en la importancia de scripting DOM para comportamiento Web
81
• Introduce nuevos elementos de estructura como: header, nav, article, section, aside, y footer.
– aside – ofrece soporte para barras laterales, datagrid, dialog, figure, Web Forms 2.0
• El gran potencial de HTML 5 viene de sus nuevas APIs para la autoría de aplicaciones basadas en la Web :
– El interfaz WebSocket permite crear sockets TCP/IP bidireccionales entre la aplicación y el servidor
– El servicio Server-sent Events permite a los servidores enviar eventos document-objet-model (DOM) a aplicaciones
– Nueva API de almacenamiento local que permite a los agentes de usuario guardar y recuperar más información de la que podría crearse como un conjunto de pares nombre-valor como en las cookies.
• HTML 5.0 incluye soporte explícito para la ejecución offline de aplicaciones web: la caché de aplicaciones y application cache manifest
• Nuevas características multimedia como gráficos 2D y APIs de control de audio y video
• Mecanismos para permitir el drag&drop
• Webworkers (multithreading) y geolocation
• CSS3 añade fondos y bordes, efectos de texto, múltiples columnas, transformaciones 2D y 3D, animaciones
• Ejemplos de uso: http://www.w3schools.com/html/
Características de HTML 5.0
82
Evolución de HTML5
83
CSS3
• CSS is used to control the style and layout of Web pages.
– CSS3 is the latest standard for CSS.
• The old specification has been split into smaller pieces, and new ones are also added
– Selectors
– Box Model
– Backgrounds and Borders
– Text Effects
– Multiple Column Layout
– User Interface
– 2D/3D Transformations
– Animations
• Some good examples: http://www.w3schools.com/css/
84
• JavaScript (sometimes shortened to JS) is a lightweight, interpreted, object-oriented language with first-class functions, most known as the scripting language for Web pages, but used in many non-browser environments as well such as node.js or MongoDB
– It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles.
• JavaScript uses syntax influenced by that of C
– JavaScript copies many names and naming conventions from Java, but the two languages are otherwise unrelated and have different semantics
• Netscape shipped it in 1995 as Mocha, renamed it to LifeScript then to JavaScript for marketing purpose.
– From 1997 submitted to Ecma International, as ECMAScript
• As of 2012, all modern browsers fully support ECMAScript 5.1
• Officially managed by Mozilla Foundation
– Current version is 1.8.5
85
• jQuery is a lightweight, "write less, do more", JavaScript library.
– The purpose of jQuery is to make it much easier to use JavaScript on your website.
• jQuery seems to be the most popular and extendable JavaScript framework
– jQuery takes a lot of common tasks that requires many lines of JavaScript code to accomplish, and wraps it into methods that you can call with a single line of code.
• Simplifies a lot of the complicated things from JavaScript, like AJAX calls and DOM manipulation.
• The jQuery library contains the following features:
– HTML/DOM manipulation
– CSS manipulation
– HTML event methods
– Effects and animations
– AJAX
– Utilities
• Site: http://jquery.com/
86
jQuery Syntax • With jQuery you select (query) HTML elements and perform "actions" on
them.
• Basic syntax is: $(selector).action()
– A $ sign to define/access jQuery
– A (selector) to "query (or find)" HTML elements
– A jQuery action()to be performed on the element(s)
• Examples:
– $(this).hide() – hides the current element.
– $("p").hide() – hides all <p> elements.
– $(".test").hide() – hides all elements with class="test".
– $("#test").hide() – hides the element with id="test"
• jQuery defines a document’s ready event to prevent any code from running before the document is finished loading (is ready).
$(document).ready(function(){
// jQuery methods go here...
});
• Demos: http://www.w3schools.com/jquery/
87
jQuery UI
• jQuery UI is a widget and interaction library built on top of the jQuery JavaScript Library – It can be used to build highly interactive web applications
• The following site offers demos of all the controls provided in Iterations, Widgets or Effects – http://jqueryui.com/demos/
• jQuery UI's download builder allows you to choose the components you would like to download and get a custom version of the library for your project – http://jqueryui.com/download/
• The result will be a file named jquery-ui-1.8.24.custom.min.js
• The ThemeRoller app allows you to customize your controls: – http://jqueryui.com/themeroller/
• Documentation: http://docs.jquery.com/UI/Getting_Started
88
jQuery Mobile UI • jQuery Mobile is to mobile what jQuery UI is to desktop.
– jQuery mobile is a mobile first framework and works just as well to help build apps for desktop browsers.
• Platform support can be reviewed at: http://jquerymobile.com/gbs/
• A Touch-Optimized Web Framework for Smartphones & Tablets
– A unified, HTML5-based user interface system for all popular mobile device platforms, built on the rock-solid jQuery and jQuery UI foundation
• Although you can use HTML and JavaScript to develop mobile optimized sites, you’ll quickly run into some serious problems…mainly that different devices and browsers treat your code differently.
– Latest stable version 1.2.0
– Site: http://jquerymobile.com and demos: http://view.jquerymobile.com/master/demos/
• All pages in jQuery Mobile are built on a foundation of clean, semantic HTML to ensure compatibility with pretty much any web-enabled device
– jQuery Mobile uses the custom data-* attribute to assign roles to elements.
• More info at: http://html5doctor.com/html5-custom-data-attributes/
89
CSS3 Media Queries • Media queries, added in CSS3, let the presentation of content be tailored to a specific
range of output devices without having to change the content itself.
• Syntax:
– A media query consists of a media type and one or more expressions, involving media features, which resolve to either true or false.
– The result of the query is true if the media type specified in the media query matches the type of device the document is being displayed on and all expressions in the media query are true.
– When a media query is true, the corresponding style sheet or style rules are applied, following the normal cascading rules.
– A media type can be declared in the head of an HTML document using the "media" attribute inside of a <link> element.
– The value of the "media" attribute specifies on what device the linked document will be displayed
• braille, embossed, handheld, print, projection, screen, speech, tty, tv, all
• Example: – @media (min-width: 700px), handheld and (orientation:
landscape) { ... }
– @media screen and (min-width:500px) { ... }
• Documentation: https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Media_queries
90
Exemplary media queries
91
Responsive Web Design (RWD)
• Responsive web design (RWD) is a web design approach aimed at crafting sites to provide an optimal viewing experience—easy reading and navigation with a minimum of resizing, panning, and scrolling—across a wide range of devices (from mobile phones to desktop computer monitors).
– Coined by Ethan Marcotte, to describe the practice of flowing layouts, page elements and images, by leveraging media queries to support various device display properties.
• A site designed with RWD adapts the layout to the viewing environment by using:
– The fluid grid concept calls for page element sizing to be in relative units like percentages, rather than absolute units like pixels or points.
– Flexible images are also sized in relative units, so as to prevent them from displaying outside their containing element.
– Media queries allow the page to use different CSS style rules based on characteristics of the device the site is being displayed on, most commonly the width of the browser.
– Server-side components (RESS) in conjunction with client-side ones such as media queries can produce faster-loading sites for access over cellular networks and also deliver richer functionality/usability avoiding some of the pitfalls of device-side-only solutions
92
Responsive Web Design (RWD)
93
HTML5 vs. Native Apps
• Las aplicaciones nativas son mejores en experiencia de usuario, rendimiento y monetization
• Las HTML5 en portabilidad, base de desarrolladores, resolver problemas de fragmentación, etc.
94
HTML5 for Hybrid Native Mobile Apps
• “Write once, run everywhere” this is the mantra of HTML5 technology.
• HTML5 is popular with software application programmers due to its "familiar" use of HTML, JavaScript and CSS – "consistent user experience" across all devices in any usage scenario
– BUT:
• Performance poorer, particularly when accessing device resources
• Uneven support of HTML5 across browsers
• Hybrid app approach where elements of native code are presented in an HTML5 wrapper. – Some frameworks: Sencha Touch, jQuery Mobile, The M-Project,
DaVinci Studio, Wink and PhoneGap
95
PhoneGap / Apache Cordova
• PhoneGap es un framework para el desarrollo de aplicaciones móviles producido por Nitobi, y comprado posteriormente por Adobe Systems.
– Permite a los programadores desarrollar aplicaciones para dispositivos móviles utilizando herramientas genéricas tales como JavaScript, HTML5 y CSS3.
• Las aplicaciones resultantes son híbridas
– Maneja APIs que permiten tener acceso a elementos como el acelerómetro, cámara, contactos en el dispositivo, red, almacenamiento, notificaciones, etc.
• PhoneGap es una distribución de Apache Cordova
– La diferencia es que PhoneGap tien acceso a servicios de compilacion en la nube proporcionados por Adobe Creative Cloud
• https://build.phonegap.com/apps
– The use of web-based technologies leads many PhoneGap applications to run slower than native applications with similar functionality
• URL: http://cordova.apache.org/
96
PhoneGap
97
98
99
Node.js: Server-side JavaScript
• La mayoría de nosotros ha usado JavaScript como un mecanismo para añadir interactividad a las páginas web
• Con la aparición de jQuery, Prototype y otros nos hemos dado cuenta que es un lenguaje que sirve para algo más que hacer un window.open() – Sin embargo, todas estas innovaciones eran para JavaScript
como lenguaje en la parte cliente
• Node.js nace para permitir usar JavaScript también en la parte servidora – Sin embargo, tu enfoque de desarrollo tiene que cambiar
radicalmente • Va a estar basado en un enfoque asíncrono guiado por eventos
• URL: http://nodejs.org/
100
Node.js: Server-side JavaScript
• JavaScript es un lenguaje completo con el que puedes hacer cualquier cosa que puedes hacer con otros lenguajes
• Node.js te permite ejecutar código en el back-end, fuera del navegador
• Node.js utiliza Google V8 VM, el mismo entorno de ejecución para JavaScript de Chrome
– Además incorpora varios módulos para no hacer todo de fuera, por tanto …
• Node.js = entorno de ejecución + librería
101
Full-Stack JavaScript
• Todos los navegadores (Opera, Chrome, Firefox, Iexplorer) pelean por incorporar las últimas capacidades de HTML5
• La combinación HTML5+JavaScript se está configurando como “la plataforma de aplicaciones web” para el front-end e incluso back-end
– Con JavaScript se puede ya programar tanto la parte cliente que se ejecuta en el navegador como la parte servidora alojada en el servidor Web con frameworks como Node.js o motores de BBDD NoSQL como MongoDB
102
Full-Stack JS Mobile Web App • Conversor de números romanos a Árabes
– Interfaz HTML5/CSS generada con jQueryMobile Codiqa
– Parte servidora realizada con Node.js
– Conversión en aplicación móvil con la ayuda de PhoneGap Build https://build.phonegap.com/
103
Real-Time Web & Search Engines
• Servicios como Facebook o Twitter generan información en tiempo real
• Los buscadores actuales deben adaptarse para indexar este tipo de contenidos en tiempo real
– Real-time search
• Algunos ejemplos:
– Optimización Google Caffeine
104
¿Qué ocurre en la Web en 60’?
105
Real Time Web: Publish/Subscribe
• La web en tiempo real requiere un comportamiento PUSH de la web en vez de PULL como hasta ahora
• Diferentes soluciones están apareciendo en el mercado para resolver esto: – Comet – a web application model in which a long-held HTTP request
allows a web server to push data to a browser, without the browser explicitly requesting it (http://en.wikipedia.org/wiki/Comet_(programming))
– PubSubHubbub – A simple, open, server-to-server web-hook-based pubsub (publish/subscribe) protocol as an extension to Atom and RSS (http://code.google.com/p/pubsubhubbub/)
106
PubSubHubbub
• PubSubHubbub is an open protocol for distributed publish/subscribe communication on the Internet. – Initially designed to extend the Atom (and RSS) protocols for
data feeds can be applied to any data type(i.e text, pictures, audio, video) as long as its accessible via HTTP
• Aims to provide near-instant notifications of change updates, which would improve on the typical situation where a client periodically polls the feed server at some arbitrary interval. – Pushed HTTP notifications instead of requiring clients to poll
whole resources to monitor change
• PubSubHubbub is used by many content providers, including all blogs served by blogger.com and WordPress.com, news sites including CNN and Fox news.
108
Comet • Comet is a web application model in which a long-
held HTTP request allows a web server to push data to a browser, without the browser explicitly requesting it
– Umbrella term, encompassing multiple techniques for achieving this interaction.
• Relies on features included by default in browsers, such as JavaScript, rather than on non-default plugins
• Known by several other names, including Ajax Push, Reverse Ajax, Two-way-web, HTTP Streaming, and HTTP server push among others
• Attempts to eliminate the limitations of the page-by-page web model and traditional polling by offering real-time interaction, using a persistent or long-lasting HTTP connection between the server and the client
– The biggest hurdle is the HTTP 1.1 specification, which states that a browser should not have more than two simultaneous connections with a web server
• May be worked around by creating a distinct hostname for real-time information (domain sharding)
• Specific methods of implementing Comet fall into two major categories: streaming and long polling.
109
HTML5 Server-sent events • HTML5 Server-Sent Events allow a web page to get updates from a server.
• A server-sent event is when a web page automatically gets updates from a server.
• Examples: Facebook/Twitter updates, stock price updates, news feeds, sport results, etc.
• The EventSource object is used to receive server-sent event notifications: var source=new EventSource("demo_sse.php");
source.onmessage=function(event) {
document.getElementById("result").innerHTML+=event.data + "<br>";
};
• You need a server capable of sending data updates
– The server-side event stream syntax is simple. Set the "Content-Type" header to "text/event-stream".
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
$time = date('r');
echo "data: The server time is: {$time}\n\n";
flush();
?>
• Demo: http://www.w3schools.com/html/html5_serversentevents.asp
110
WebSocket
• WebSocket is a web technology providing full-duplex communications channels over a single TCP connection
– standardized by the IETF as RFC 6455 in 2011
• WebSocket is designed to be implemented in web browsers and web servers • The WebSocket Protocol is an independent TCP-based protocol.
– Its only relationship to HTTP is that its handshake is interpreted by HTTP servers as an Upgrade request
• Makes possible more interaction between a browser and a web site, facilitating live content and the creation of real-time games
– standardized way for the server to send content to the browser without being solicited by the client
• Communications are done over TCP port number 80, which is of benefit for those environments which block non-standard Internet connections using a firewall
– Supported in several browsers including Google Chrome, Internet Explorer, Firefox, Safari and Opera
• It is expected that HTML5 WebSockets will replace the existing XHR approaches as well as Comet services by a new flexible and ultra high speed bidirectional TCP socket communication technology.
111
WebSocket Features • Technical details about WebSocket
– Uses WebSocket protocol instead of HTTP – True full duplex communication channel; UTF8 strings and binary data can be
sent in any direction at the same time. – It is not a raw TCP socket – Connection established by "upgrading" (handshake) from HTTP to WebSocket
protocol – Runs via port 80/443 and is firewall/proxy friendly – Supports WebSocket ws:// and secure WebSocket wss://
• Benefits of using WebSockets – Reduces network traffic. each message has 2 bytes of overhead – Low latency – No polling overhead – WebSocket connections are terminated in the same rich application space
provided by HTTP servers, thus a WebSocket enabled web application can be developed in a single environment rather than by collaboration between a HTTP server and a separate WebSocket server
112
WebSocket in detail
• Differs from TCP in that it enables a stream of messages instead of a stream of bytes
– Before WebSocket, port 80 full-duplex communication was attainable using Comet channels
• WebSocket protocol handshake: – Client request: GET /mychat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat
Sec-WebSocket-Version: 13
Origin: http://example.com
– Server response: HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat
113
AJAX Polling vs. AJAX Long Polling vs. HTML5 Server-sent Events vs. HTML WebSockets
Regular HTTP
AJAX Polling
AJAX Long-Polling
HTML5 SSE
HTML5 WebSockets
115
IFTTT
• IFTTT is a service that lets you create powerful connections with one simple statement: – IFTTT is pronounced like “gift” without the “g.”
• Channels are the basic building blocks of IFTTT: Facebook, Evernote, Email, Weather, LinkedIn
• Each channel has its own Triggers and Actions: – The this part of a Recipe is a Trigger, e.g. “I’m tagged in a photo on
Facebook”
– The that part of a Recipe is an Action, e.g. “send me a text message”
– Pieces of data from a Trigger are called Ingredients
• Demos: https://ifttt.com/myrecipes/personal
116
SmartThings • Allows users to control everything surrounding them in their life on their
smartphone.
– Lights, air conditioning, even your house’s security system.
• Creates a service out of all of your existing hardware
– You can connect them to each other using real world apps
117
Atooma
• Es como un IFTTT pero para SmartPhones
• Permite definir eventos condicionales (IF) que lanzan automáticamente tareas (DO) asociadas actividades que pueden ser detectadas por tu móvil (hora, localización, estado de la batería, etc.)
– URL: http://www.atooma.com/
118
The Programmable World
• Los siguientes pasos para alcanzar la quimera de Programmable World:
1. Transformar los objetos cotidianos en inteligentes
2. Conectar estos objetos entre ellos y hacer que “conversen”, algo de lo que productos como SmartThings están tratando
3. Construir aplicaciones basadas en esta conectividad, interconectándolas con datos externos para predecir, por ejemplo, patrones de tiempo o consumo eléctrico..
• Soluciones como IFTTT facilitan esa conectividad entre diferentes canales de datos
119
El Futuro del Desarrollo Software
120
Latest Software Development Methodologies
Continuous integration
Test-driven development SCRUM Agile Methodology
121
Infraestructura Virtualizada: Cloud Computing
Un paradigma de computación emergente donde los datos y servicios residen en centros de datos muy escalables que pueden ser accedidos ubicuamente desde cualquier dispositivo conectado a Internet1
Merrill Lynch: Cloud computing market opportunity by 2011 = $95bn in business and
productivity apps + $65bn in online advertising =
$160bn
(1) Source: IBM
122
Cloud Computing es …
• … capacidad computacional y almacenamiento virtualizada expuesta mediante infraestructura agnóstica a la plataforma y accedida por Internet
– Recursos IT compartidos en demanda, creados y eliminados eficientemente y de modo escalable a través de una variedad de interfaces programáticos facturados en base a su uso
123
The “Cloud” = 10X Improvement
• Fácil de usar: hazlo tu mismo remotamente de cualquier lugar en cualquier momento
• Escalable: controla tu infraestructura con tu aplicación
• Riesgo: nada que comprar, cancela inmediatamente
• Robustez: basado en gran hardware empresarial
• Coste: paga sólo por lo que uses
124
Evolución hacia Cloud Computing
• La coexistencia y limitaciones de cluster computing y supercomputing dieron lugar a grid computing
• De grid computing progresamos hacia utility computing, i.e. Servicios computacionales empaquetados como agua, electricidad, etc.
• Esto derivó en Cloud Computing, es decir, todo como servicio (XaaS) :
• Plataforma como Servicio
• Software como Servicio
• Infraestructura como Servicio
125
Evolución de Tecnologías de Cloud Computing
• Maduración de tecnología de virtualización
• La virtualización permite nubes de computación
• Las nubes de computación demandan nubes de almacenamiento
• Las nubes de almacenamiento y computación crean infraestructura cloud
• La infraestructura cloud da lugar a plataformas y aplicaciones cloud
• Diferentes tipos de cloud dan lugar a Cloud Aggregators
• Nichos de requisitos dan lugar a Cloud Extenders
126
Características de Cloud
Tipos de despliegue • Cloud privada
– Propiedad de o alquilada por una empresa (centros de datos,…)
• Cloud comunitaria
– Infraestructura compartida por una comunidad específica
• Cloud pública
– Vendida al público, gran escala (ec2, S3,…)
• Cloud híbrida
– Composición de dos o más clouds
Manifestaciones • Cloud Software as a Service (SaaS)
– Uso de la aplicación del proveedor sobre la red, e.j., Salesforce.com,…
• Cloud Platform as a Service (PaaS)
– Despliega aplicaciones creadas por los clientes a la nube, e.j. Google App Engine, Microsoft Azure, …
• Cloud Infrastructure as a Service (IaaS)
– Alquilar procesamiento, almacenamiento, capacidad de red y otros recursos computacionales e.j., EC2 – Elastic Compute Cloud, S3 – Simple Storage Service, Simple DB,…
127
Arquitectura Cloud Computing
128
Aplicaciones Cloud
• Corresponden con lo que se denomina como SaaS
• Manifestación de cloud más popular
• Ejemplos: SalesForce, Gmail, Yahoo! Mail, rememberthemilk, doodle, Google Docs, DropBox, picnik, Panda Cloud Antivirus, scribd, slideshare
• Ventajas: Libre, Fácil, Adopción de consumo
• Desventajas: funcionalidad limitada, no hay control de acceso a la tecnología subyacente
129
Plataformas Cloud
• Contenedores de aplicaciones
• Entornos cerrados
• Ejemplos: Google App Engine, Microsoft Azure, Heroku, Mosso, Engine Yard, Joyent o Force.com
• Ventajas: buenas para desarrolladores, más control que en las aplicaciones cloud, configuradas estrechamente
• Desventajas: restringidas a lo que está disponible, otras dependencias, dependencia tecnológica
130
Infraestructura Cloud
• Proveen nubes de computación y almacenamiento
• Ofrecen capas de virtualización (hardware/software)
• Ejemplos: Amazon EC2, GoGrid, Amazon S3, Nirvanix, Linode, Arsys Cloud Flexible, EyeOS
• Ventajas: control completo del entorno y la infraestructura
• Desventajas: precio premium, competencia limitada
131
Amazon Web Services (AWS)
• AWS proporciona una infraestructura de servicios elástica donde alojar computación, almacenamiento o sistemas empresariales
– Amazon Elastic Cloud (EC2) – permite configurar y ejecutar un Amazon Machine Instance (AMI) – servidores en demanda
– Amazon Simple Storage Service (S3) – permite guardar y recuperar datos en la nube
– Amazon SimpleDB – proporciona la funcionalidad de una base de datos sobre S3 – basada en pares clave-valor
– Amazon Simple Queue Service (SQS) – servicio de mensajería para encolar tareas y mensajes
– Amazon Relational Database Service (RDS) – servicio web para crear, operar y escalar una base de datos en la nube
– Amazon CloudFront – copias de tus objetos más populares son cacheados en una red de nodos alrededor del mundo
– …
• Documentación: http://aws.amazon.com/documentation/
132
Amazon Web Services (AWS)
133
Amazon Web Services (AWS)
134
Amazon Elastic Compute Cloud: EC2 • Permite ejecutar varios servidores Linux o Windows virtuales en demanda,
facilitando tantos ordenadores como necesites para procesar tus datos o ejecutar una aplicación
• Otorga acceso root al sistema operativo de cada servidor, un cortafuegos para gestionar el acceso a la red y la libertad para instalar cualquier software
• Una vez configurado un servidor adecuadamente, se guarda como Amazon Machine Image (AMI) que puede ser lanzada para crear máquinas virtuales en demanda
• La EC2 API (Query o SOAP) ofrece funcionalidad para empezar y parar instancias de servidor, aplicar permisos de acceso y red o gestionar tus imágenes de servidor.
– Cada servidor individual se gestiona usando herramientas Linux o Windows sobre una sesión de shell segura.
• Se factura en función de los recursos consumidos : CPU y datos transferidos
• Más información en: http://aws.amazon.com/products/ec2
135
Amazon Simple Storage Service: S3
• Ofrece espacio de almacenamiento seguro para cualquier tipo de datos en los data centers de Amazon – Es una alternativa a construir, mantener y utilizar tus propios sistemas
de almacenamiento
– No tiene límites sobre cuánta información, por cuánto tiempo y con qué ancho de banda puede transferirse.
• Ofrece una simple API agnóstica a la información a guardar – Depende de ti qué datos y qué representación interna tienen
– El modelo de datos interno consta de dos tipos de recursos de almacenamiento:
• Objects: guardan datos y metadatos
• Buckets: contenedores que pueden contener infinidad de objetos
– Incorpora mecanismos de control de acceso (ACL) que pueden aplicarse a objetos y buckets
136
Amazon Simple Storage Service: S3
• Los recursos en S3 se identifican mediante URIs:
– http://s3.amazonaws.com/bucket-name/object-name
– https://s3-eu-west-1.amazonaws.com/dipinaimages/image1.png
• Algunas características de su arquitectura son:
– Los objetos S3 no pueden ser manipulados como ficheros estándar
– Los cambios sobre ellos tardan en propagarse
– Las peticiones a objetos pueden fallar ocasionalmente
– Permite guardar versiones
– Se deben resolver las direcciones IP de los nombres DNS de S3 periódicamente
– Se pueden guardar infinitos objetos de hasta 5GB en tamaño
– Se paga por almacenamiento, transferencia y operaciones
• Algunos posibles usos de S3:
– Compartir grandes ficheros
– Como repositorio de back-up de tus ficheros
– Sistema de ficheros mapeado sobre S3 (ElasticDrive)
• Más información en:
– http://aws.amazon.com/s3/,
137
Amazon CloudFront
• Mientras que en Amazon S3 se guardan contenidos (ficheros) con CloudFront se garantiza que tus objetos en S3 buckets son servidos rápidamente.
– Lo hace copiando los ficheros en buckets S3 a diferentes edge locations que sirven contenidos a los usuarios finales.
– Tales edge locations se distribuyen por el planeta asegurándose que los contenidos son servidos del servidor Amazon más cercano
• Es ventajoso porque el 80-90% del tiempo invertido esperando a una respuesta web se debe a la descarga de los componentes de la página: imágenes, hojas de estilo, scripts, Flash, etc.
– La clave es colocar la parte estática de nuestra web en una red de distribución de contenidos como Akamai.
• Con CloudFront hay que pagar las transferencias desde S3 a las localizaciones de los bordes.
• Más información en: http://aws.amazon.com/cloudfront/
138
Amazon SimpleDB
• Almacén de claves/valor: trabaja con los conceptos domain, item y attribute
• Diseñado para minimizar la complejidad y el coste de mantenimiento de tus datos
• Guarda pequeñas piezas de información textual en una estructura de base de datos sencilla simple de gestionar, modificar y buscar
– Ofrece su propio lenguaje de consultas de datos
– Ejemplos de consultas sencillas: • ['Date' > '2007-07-01' and Not 'Date' starts-with '2007-07-04']
• ['Suburb' = 'Newtown'] or['Price' < '100000'] intersection ['Bedrooms' =
'3']
• Si tus aplicaciones están basadas en bases de datos simples, este servicio puede reemplazar a tu RDBMS dejándote con una pieza de infraestructura menos que comprar y mantener
• No exige la especificación de un schema previo, tú puedes modificar la estructura y contenidos de tu base de datos cuando quieras
• Indexa cada pieza almacenada
• Guarda tu información de modo seguro, y redundante en la red de data centers de Amazon
• Pagas por almacenamiento, datos transferidos y operaciones
• Más información en: http://aws.amazon.com/simpledb/
139
Amazon Relational Database Service (Amazon RDS)
• Es un servicio web que facilita la instalación, operación y escalabilidad de una base de datos relacional en la nube
– Te da completo acceso a las capacidades de una base de datos MySQL
• Las aplicaciones que ya funcionan con MySQL también lo harán con Amazon RDS
– Amazon RDS modifica el software MySQL para programar la creación de back-ups o garantizar la escalabilidad, todo ello controlado a través de una API sencilla.
• Solamente se paga por los recursos utilizados.
• Más información en: http://aws.amazon.com/rds
• Herramienta: Amazon RDS Command Line Toolkit – http://developer.amazonwebservices.com/connect/entry.jspa?externalID=2928&catego
ryID=294
• Tutorial en: http://docs.amazonwebservices.com/AmazonRDS/latest/GettingStartedGuide/
140
Amazon SQS
• Implementa el servicio de mensajería basado en colas
• Los mensajes son siempre strings
• Útil para crear trabajos asíncronos y descargar de actividad a un web server
• Se paga por mensajes y datos transferidos
• Más información en: http://aws.amazon.com/sqs
141
Registro y Documentación
• Se puede ver en detalle cómo acceder a AWS:
– http://www.slideshare.net/ronaldbradford/getting-started-with-mysql-in-amazon-web-services?src=related_normal&rel=3462501
– http://docs.amazonwebservices.com/AWSEC2/2009-11-30/GettingStartedGuide/
– http://aws.amazon.com/free/ (Free usage tier)
143
Calculadora de Costes en Amazon
• La siguiente herramienta te permite estimar costes de consumo de servicios en Amazon:
– http://calculator.s3.amazonaws.com/calc5.html
• Además, desde la página http://aws.amazon.com/account, se puede acceder al menú “Account Activity” que ilustra el gasto actual incurrido.
144
APIs Disponibles por Servicio AWS
Service REST API Query API SOAP API
S3 Yes No Yes
EC2 No Yes Yes
SQS Yes Yes Yes
FPS No Yes Yes
SimpleDB No Yes Yes
RDS No Yes Yes
145
Usando AWS SDK for Java
• Se puede obtener documentación detallada en: – http://docs.amazonwebservices.com/AWSJavaSDK/latest/javadoc/
• Antes de empezar, debes registrarte en cada servicio que quieras utilizar.
• Necesitas obtener tus credenciales de seguridad de: http://aws.amazon.com/security-credentials – Previamente puede que tengas que firmar en
http://aws.amazon.com/products
– Los credenciales son un par de claves públicas y privadas que contienen:
• Access Key ID
• Secret Access Key
146
Caso práctico de Álbum de Fotos
• Solución Cloud con: S3, SDB, SQS y CloudFront
• Ejemplo descrito en: – http://www.slideshare.net/javasymposium/developing-with-amazon-
web-services-highly-scalable-services-that-are-someone-elses-headache-to-maintain-and-develop
147
Google Cloud Platform
• Consiste de los siguientes componentes: – Google App Engine – platform as a service that uses familiar technologies to
build and host applications on the same infrastructure used at Google. – Google Compute Engine – an infrastructure as a service that lets you run your
large-scale computing workloads on Linux virtual machines hosted on Google's infrastructure.
• https://cloud.google.com/products/compute-engine
– Google Cloud Storage – store, access and manage your data on Google’s storage infrastructure.
• https://developers.google.com/storage/docs/hellogooglestorage
– Google BigQuery – analyze Big Data in the cloud using SQL and get real-time business insights in seconds using Google BigQuery. Use a fully-managed data analysis service with no servers to install or maintain
• https://developers.google.com/bigquery/sign-up
– Google Cloud SQL – run MySQL databases in Google's cloud. Use a fully managed service to maintain and administer your databases.
• https://cloud.google.com/products/cloud-sql
– Google Cloud Datastore – fully managed, NoSQL, schemaless database for storing non-relational data.
• https://developers.google.com/datastore/
148
• Google App Engine es una herramienta para el alojamiento de aplicaciones web escalables sobre la infraestructura de Google
– Su misión es permitir al desarrollador web crear fácilmente aplicaciones web escalables sin ser un experto en sistemas
• Aporta las siguientes características a los desarrolladores:
– Limita la responsabilidad del programador al desarrollo y primer despliegue
• Google App Engine provee recursos computacionales dinámicamente según son necesarios
– Toma control de los picos de tráfico – si nuestro portal crece en popularidad no es necesario actualizar nuestra infraestructura (servidores, BBDD)
• Ofrece replicación y balanceo de carga automática apoyado en componentes como Bigtable
– Fácilmente integrable con otros servicios de Google – los desarrolladores pueden hacer uso de componentes existentes y la librería de APIs de Google (email, autenticación, pagos, etc.)
Ejemplo Plataforma Cloud: Google App Engine
149
• Ofrece una plataforma completa para el alojamiento y escalado automático de aplicaciones, consistiendo en:
– Servidores de aplicaciones Python y Java
– La base de datos BigTable
– El sistema de ficheros GFS
• Como desarrollador simplemente tienes que subir tu código Python o Java compilado a Google, lanzar la aplicación y monitorizar el uso y otras métricas
• Google App Engine incluye la librería estándar de Python 2.7 y soporta Java 7
– No todas las acciones se permiten (acceso a ficheros, llamadas al SO, algunas llamadas de red)
• Se ejecuta en un entorno restringido para permitir que las aplicaciones escalen
• Ejemplo: – https://appengine.google.com
– http://enpresadigitala.appspot.com/encuestas
– http://code.google.com/intl/en/appengine/docs/
Google App Engine: Características
150
151
App Engine para Java
• Crea aplicaciones web a través de tecnologías estándar de Java y las ejecuta en la infraestructura escalable Google – Usa JVM Java 7, interfaz de servlets Java y la compatibilidad de
interfaces estándar como JDO, JPA, JavaMail y JCache
• App Engine utiliza el estándar Java Servlet para aplicaciones web – JVM se ejecuta en un entorno seguro de la "zona de pruebas" para
aislar tu aplicación por servicio y seguridad.
• Una aplicación en GAE sólo pueda realizar acciones que no interfieran con el rendimiento ni con la escalabilidad de otras aplicaciones.
152
Funcionalidad de AppEngine for Java
• App Engine proporciona un conjunto de servicios escalables que pueden utilizar las aplicaciones para:
– Almacenar datos persistentes. En Java, el almacén de datos admite 2 interfaces Java estándar: los objetos de datos Java (JDO) 2.3 y el API de persistencia de Java (JPA) 1.0.
– Acceder a recursos en la red. A través de la URL Fectch API.
– Cachear información. Memcache de App Engine proporciona un almacenamiento en caché distribuido, transitorio y rápido de los resultados de cálculos y consultas de almacén de datos. La interfaz Java implementa JCache (JSR 107).
– Enviar email. Da soporte de JavaMail para el envío de correos
– Procesar imágenes. A través de la Images Java API, permite a las aplicaciones transformar y manipular datos de imágenes en varios formatos.
– Gestionar usuarios. A través de la Users Java API permite utilizar Cuentas de Google para la autenticación del usuario.
– Lanzar tareas planificadas o en background. Mediante la Task Queue Java API y la gestión de tareas por Cron.
153
Instalación de AppEngine for Java
1. Descargar el fichero de:
– http://code.google.com/intl/es/appengine/downloads.html#Google_App_Engine_SDK_for_Java
2. Descomprimir el fichero .zip
3. Crear una variable de entorno APPENGINE_JAVA_SDK que apunte al directorio raíz de instalación de la SDK
4. Incluir el directorio %APPENGINE_JAVA_SDK%\bin en la variable de entorno PATH
154
Guardando datos en GAE
• App Engine ofrece diferentes opciones para guardar datos:
– App Engine Datastore ofrece un almacén de objetos sin esquema NoSQL, con un motor de consultas y transacciones atómicas
– Google Cloud SQL provee una base de datos relacional SQL para tu aplicación sobre App engine, basada en MySQL
• https://developers.google.com/cloud-sql/
– Google Cloud Storage provee almacenamiento para objetos y ficheros de hasta terabytes accesibles desde aplicaciones Python y Java
• https://developers.google.com/storage/
155
Pasos para crear una Aplicación con Google App Engine para Java
1. Crear el proyecto de la aplicación
2. Crear la clase servlet
3. Crear el fichero de despliegue de la aplicación: web.xml
4. Crear el archivo appengine-web.xml
5. Ejecutar el proyecto
6. Probar el proyecto: http://localhost:8080/<nombre-aplicación>
7. Subir la aplicación al dominio appspot.com
156
Paso 1: Creando la estructura del proyecto • Dos opciones:
– Usar el plug-in para Eclipse: http://code.google.com/intl/es/appengine/docs/java/tools/eclipse.html
– Usar la plantilla de proyecto disponible en %APP_ENGINE_HOME%\demos\new_project_template
• Las aplicaciones Java de App Engine utilizan el API Java Servlet para interactuar con el servidor web.
– Un servlet HTTP es una clase de aplicación que puede procesar y responder solicitudes web. Esta clase amplía la clase javax.servlet.GenericServlet o a la clase javax.servlet.http.HttpServlet.
• La estructura del directorio de trabajo será la siguiente: Guestbook/
src/
...Java source code...
META-INF/
...other configuration...
war/
...JSPs, images, data files...
WEB-INF/
...app configuration...
classes/
...compiled classes...
lib/
...JARs for libraries...
157
Paso 2: Creando la clase Servlet
• Crear en el directorio src/guestbook/ un fichero denominado GuestbookServlet.java con el siguiente contenido:
package guestbook;
import java.io.IOException;
import javax.servlet.http.*;
public class GuestbookServlet extends HttpServlet {
public void doGet(HttpServletRequest req,
HttpServletResponse resp) throws IOException {
resp.setContentType("text/plain");
resp.getWriter().println("Hello, world");
}
}
158
Paso 3: Creando el fichero de despliegue – web.xml
• Cuando el servidor web recibe una solicitud, decide qué clase de servlet ejecutar mediante un archivo de configuración conocido como "descriptor de implementación de la aplicación web".
– Este archivo se denomina web.xml y se ubica en el directorio war/WEB-INF/ del directorio que contiene los ficheros de una aplicación web en Java
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5">
<servlet>
<servlet-name>guestbook</servlet-name>
<servlet-class>guestbook.GuestbookServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>guestbook</servlet-name>
<url-pattern>/guestbook</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
159
Paso 4: Crear el fichero de configuración de aplicación GAE:
appengine-web.xml
• App Engine necesita un archivo de configuración adicional para poder desarrollar y ejecutar la aplicación, denominado appengine-web.xml
– Se ubica en WEB-INF/ junto a web.xml.
– Incluye la ID registrada de la aplicación, el número de versión de la aplicación y listas de archivos que se deben tratar como archivos estáticos (por ejemplo, imágenes y CSS) y archivos de recursos (por ejemplo, JSP y otros datos de aplicación).
• El directorio war/WEB-INF/ incluye un archivo denominado appengine-web.xml que contiene lo siguiente:
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application>librocitas</application>
<version>1</version>
</appengine-web-app>
160
Paso 5: Ejecución del Proyecto
• El SDK de App Engine incluye un servidor web de pruebas para depurar tu aplicación.
• El servidor simula los servicios y el entorno App Engine, que incluyen restricciones en la zona de pruebas, el almacén de datos y los servicios.
• Con el fichero ant ejecuta: ant runserver
– Puedes detenerlo con Ctrl-C
161
Paso 6: Subiendo la aplicación
1. Puedes crear y administrar aplicaciones web App Engine con la consola de administración de App Engine a través de la siguiente URL: http://appengine.google.com/
2. Para crear una nueva aplicación, haz clic en el botón "Create an Application" (Crear aplicación)
3. Edita el archivo appengine-web.xml y, a continuación, cambia el valor del elemento <application> para que sea la ID registrada de tu aplicación (librocitas).
4. Ejecuta el siguiente comando en línea de comandos para subir la aplicación: $ appcfg update www
5. Vete a: http://librocitas.appspot.com/
162
Registrando la aplicación
163
Verificación de tu cuenta
164
Verificación de tu Cuenta
165
Registrando la aplicación en appengine.google.com
166
Registrando la applicación
167
Características Avanzadas de Google App Engine
• Acceso a datos mediante JDO – http://code.google.com/appengine/docs/java/gettingstarted/usingdatastore.html
• Gestión de usuarios – http://code.google.com/appengine/docs/java/users/
• Planificación de tareas con Cron for Java
– http://code.google.com/appengine/docs/java/config/cron.html
• Memcache Java API
– http://code.google.com/appengine/docs/java/memcache/overview.html
• URL Fech Java API
– http://code.google.com/appengine/docs/java/urlfetch/overview.html
• Envío de mensajes instantáneos con XMPP e email
– http://code.google.com/appengine/docs/java/xmpp/overview.html
• Colas de tareas – permite ejecutar asíncronamente tareas
– http://code.google.com/appengine/docs/java/taskqueue/overview.html
168
Google App Engine vs. Amazon Web Services
169
Mobile Cloud Computing
• Combinación e integración de aplicaciones móviles con front-end HTML5 con back-end en la Nube: ubicuidad, buen rendimiento, etc.
170
Web Semántica
• Problema de la Web Actual: – El significado de la web no es comprensible por máquinas
• Web Semántica crea un medio universal de intercambio de información, aportando semántica a los documentos en la web – Añade significado comprensible por ordenadores a la Web
– Usa técnicas inteligentes que explotan esa semántica
– Liderada por Tim Berners-Lee del W3C
• Misión “turning existing web content into machine-readable content“
171
La Pila de la Web Semántica
• La Web Semántica está compuesta de: – XML, sintaxis para documentos estructurados
– XML Schema, restringe la estructura de documentos XML
– RDF es un modelo de datos que hace referencia a objetos y sus relaciones
– RDF Schema, vocabulario para definir propiedades y clases de recursos RDF
– OWL, añade más vocabulario que RDFS, relaciones entre clases, cardinalidad, igualdad …
172
RDF: Recurso, Propiedad y Valor
• RDF identifica conceptos usando identificadores Web (URIs), y describe recursos con propiedades y valores de las mismas
• Definiciones: – Un Recurso es cualquier cosa que puede tener una URI, como por
ejemplo "http://www.w3schools.com/RDF"
– Una Propiedad es un Recurso que tiene un nombre, como “autor" o “páginaweb"
– Un Valor de propiedad es el valor de una Propiedad, tal como “Diego Ipiña" o "http://www.w3schools.com" (un valor de propiedad puede corresponder a un recurso)
173
Resource Description Framework (RDF)
• Un grafo RDF crea una web de conceptos distribuidos – Realiza aserciones sobre relaciones lógicas entre entidades
– La información en RDF puede ligarse con grafos en otros lugares
– Mediante software se pueden realizar inferencias
– Existen lenguajes de consulta sobre triple stores como SPARQL
• Mediante RDF hacemos que la información sea procesable por máquinas – Agentes software pueden guardar, intercambiar y utilizar metadatos
sobre recursos en la web
• Ontología jerarquía de términos a utilizar en etiquetado de recursos formalización de los metadatos de un domino/s
174
Formatos de Serialización RDF • Formato RDF/XML:
1: <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
2: xmlns:dc="http://purl.org/dc/elements/1.1/"
3: xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos/"
4: xmlns:edu="http://www.example.org/">
5: <rdf:Description rdf:about="http://www.deusto.es">
6: <geo:lat>43.270737</geo:lat>
7: <geo:long>-2.939637</geo:long>
8: <edu:hasFaculty>
9: <rdf:Bag>
10: <rdf:li rdf:resource="http://www.eside.deusto.es" dc:title="Facultad de Ingeniería"/>
11: <rdf:li rdf:resource="http://www.lacomercial.deusto.es" dc:title="Facultad de Empresariales"/>
12: </rdf:Bag>
13: </edu:hasFaculty>
14: </rdf:Description>
15: </rdf:RDF>
• Formato: N3/Turtle: 1: @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
2: @prefix dc: <http://purl.org/dc/elements/1.1/> .
3: @prefix geo: <http://www. w3.org/2003/01/geo/wgs84_pos#> .
4: @prefix edu: <http://www.example.org/> .
5: <http://www.deusto.es> geo:lat "43.270737" ; geo:long "-2.939637" .
6: <http://www.eside.deusto.es> dc:title “Facultad de Ingeniería" .
7: <http://www.deusto.es> edu:hasFaculty <http://www.eside.deusto.es> .
175
Ejemplo de Grafo RDF
• Generador de grafos RFD: http://www.w3.org/RDF/Validator/
• Conversor entre formatos RDF: http://www.mindswap.org/2002/rdfconvert/
176
¿Qué es una Ontología?
• Una ontología define conceptos de un dominio y relaciones entre ellos
• Los bloques básicos que componen el diseño de una ontología son: – clases o conceptos
– propiedades de cada concepto describiendo varias características y atributos del concepto
– restricciones sobre las propiedades
• Una ontología junto con las instancias de sus clases individuales constituyen un knowledge base
177
Características del Ontology Web Language (OWL)
• Una ontología difiere de un esquema XML en que es una representación de conocimiento, no un formato de mensaje
• La principal ventaja de una ontología escrita en OWL es que hay disponibles herramientas que pueden razonar sobre ella
• La sintaxis de intercambio de información en OWL es normalmente RDF/XML.
• OWL es una extensión del vocabulario de RDF • Las ontologías Web son distribuidas • Pueden ser importadas y extendidas para crear ontologías
derivadas • Se pueden alinear unas ontologías con otras
178
Ejemplo OWL Ontology Reasoning • Supongamos el siguiente modelo RDF en N3:
@prefix foaf: <http://xmlns.com/foaf/0.1/> . <http://www.ipina.org/> foaf:author
<http://www.ipina.org/osgi/> . <http://www.deusto.es/dipina/> foaf:author
<http://www.deusto.es/dipina/ajax/> . <http://www.eside.deusto.es/dipina/> foaf:author
<http://paginaspesonales.deusto.es/dipina/> .
• Aunque pertenecen al mismo autor, no están relacionadas entre ellas, con la ayuda de OWL podemos mapear estas URIs @prefix owl: <http://www.w3.org/2002/07/owl#> . <http://www.deusto.es/dipina/> owl:sameAs
<http://www.ipina.org/> . <http://www.eside.deusto.es/dipina/> owl:sameAs
<http://www.ipina.org/> .
• Si mezclamos ambos modelos y ejecutamos un razonador podríamos responder a “dime todo lo que ha escrito “<http://www.ipina.org>”: <http://www.ipina.org/osgi/>,<http://www.deusto.es/dipina/aja
x/> y <http://paginaspesonales.deusto.es/dipina/>
179
SPARQL
• SPARQL (http://www.w3.org/TR/rdf-sparql-query/) permite la consulta de grafos RDF a través de un lenguaje sencillo
• SPARQL es idóneo para extraer y consultar información mantenida por aplicaciones, servicios o repositorios ad-hoc de terceras partes expresados en RDF
• Consta de 3 elementos: – Lenguaje de consultas.
– Mecanismo para transmitir una consulta a un servicio de procesamiento de consultas remoto
– Formato XML en el que devolver los resultados
180
Ejemplo SPARQL PREFIX table: <http://www.daml.org/2003/01/periodictable/PeriodicTable#>
SELECT ?symbol ?number
FROM <http://www.daml.org/2003/01/periodictable/PeriodicTable#>
WHERE
{
{
?element table:symbol ?symbol;
table:atomicNumber ?number;
table:group table:group_17.
OPTIONAL { ?element table:color ?color. }
}
UNION
{
?element table:symbol ?symbol;
table:atomicNumber ?number;
table:group table:group_18.
}
}
ORDER BY DESC(?number)
LIMIT 10
OFFSET 10
181
Metadatos empotrados • Necesitamos que nuestros datos estén
preparados para responder adecuadamente a las preguntas de los navegadores y agentes software
– “Embedded metadata” son datos sobre datos empotrados en una página web
• Tres opciones principales:
– RDFa – sistema complejo conectado a XHTML
– Microformats – ampliamente usado y apollado, usan etiquetas XHTML antiguas <a href="http://jane-blog.example.org/" rel="sweetheart date met">Jane</a>
– Microdata – bastante nuevo, soportado por los buscadores, nivel de complejidad intermedio
• ¡¡Todas juntas nos ayudarán a alcanzar la visión de una web con más significado, pero todavía comprensible tanto a humanos como máquinas!!
182
RDFa
• RDFa = Haciendo más fácil empotrar RDF en XHTML y XML – Resuelve la principal limitación de RDF: es muy compresible por
máquinas pero muy poco por humanos – Añade metadatos a XHTML sin afectar la visualización de navegadores
• La página web es ahora legible tanto por humanos como agentes software
– Permite la agregación de datos y la asociación de metadatos para tareas más sofisticadas que aquellas permitidas mediante screen scrapping
– Utiliza algunos atributos de XHTML 1 existentes y otros nuevos de XHMTL 2 para guardar sujetos, predicados y objetos de tripletas RDF
• Los atributos XHTML 1 href, content, rel, rev, y datatype • Los nuevos atributos de meta-información about, role y property de
XHTML 2 (http://www.w3.org/TR/xhtml2/mod-meta.html) module
– Ejemplo: <p about="http://www.deusto.es/events/event1" instanceof="cal:Vevent">
• Referencia: http://rdfa.info/
183
GRDDL
• GRDDL es un mecanismo para extraer descripciones de recursos de dialectos de lenguajes – Define un estándar para declarar que una página web o XML puede ser transformada
en un grafo RDF, así como identifica el algoritmo a utilizar para tal transformación • glean –verb (used with object)
1. to learn, discover, or find out, usually little by little or slowly. –verb (used without object)
• Es un lenguaje de marcado para ... – ... declarar que un documento XML incluye datos extraíbles (PROFILE) o – ... ligarlo a un algoritmo (típicamente XSLT) para extraer los datos RDF del documento
(TRANSFORMATION)
• El lenguaje de marcado incluye: 1. Un atributo de espacio de nombres para ser incluido en documentos XML xmlns:grddl='http://www.w3.org/2003/g/data-view#'
grddl:transformation="glean_title.xsl" 2. Un enlace asociado a un perfil para incluirse en documentos XHTML válidos. <head profile="http://www.w3.org/2003/g/data-view"> <link rel="transformation" href="glean_title.xsl" />
184
MicroData
• Microdata is a WHATWG HTML specification used to nest metadata within existing content on web pages
– Search engines, web crawlers, and browsers can extract and process Microdata from a web page and use it to provide a richer browsing experience for users
– Microdata uses a supporting vocabulary to describe an item and name-value pairs to assign values to its properties
– Microdata is an attempt to provide a simpler way of annotating HTML elements with machine-readable tags than the similar approaches of using RDFa and Microformats.
185
Schema.org
• Iniciativa lanzada en 2011 por Bing, Google, Yahoo y luego Yandex
• Objetivo: “create and support a common set of schemas for structured data markup on web pages.”
– Proponen usar sus esquemas y Microdata en HTML5 para marcar los contenidos de una página web con metadatos
• Los metadatos son reconocidos por los buscadores y otros parsers, así accediendo al “significado” de los portales
• Sus vocabularios fueron inspirados por formatos anteriores como Microformats, FOAF, GoodRelations y OpenCyc
• Ofrecen esquemas en los siguientes dominios (http://schema.org/docs/schemas.html):
– Eventos, salud, organización, persona, lugar, producto, oferta, revisión, etc.
• Para mapear declaraciones en microdatos a RDF se puede usar http://schema.rdfs.org/
• URL: http://schema.org/
186
Microdata attributes
• itemscope – Creates the Item and indicates that descendants of this element contain information about it.
• itemtype – A valid URL of a vocabulary that describes the item and its properties context.
• itemid – Indicates a unique identifier of the item. • itemprop – Indicates that its containing tag holds the value of the
specified item property. The properties name and value context are described by the items vocabulary. Properties values usually consist of string values, but can also use URLs using the a element and its href attribute, the img element and its src attribute, or other elements that link to or embed external resources.
• itemref – Properties that are not descendants of the element with the itemscope attribute can be associated with the item using this attribute. Provides a list of element ids (not itemids) with additional properties elsewhere in the document.
187
Ejemplo de Microdata <section itemscope itemtype="http://schema.org/Person">
Hello, my name is
<span itemprop="name">John Doe</span>,
I am a
<span itemprop="jobTitle">graduate research assistant</span>
at the
<span itemprop="affiliation">University of Dreams</span>.
My friends call me
<span itemprop="additionalName">Johnny</span>.
You can visit my homepage at
<a href="http://www.JohnnyD.com" itemprop="url">www.JohnnyD.com</a>.
<section itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">
I live at
<span itemprop="streetAddress">1234 Peach Drive</span>,
<span itemprop="addressLocality">Warner Robins</span>,
<span itemprop="addressRegion">Georgia</span>.
</section>
</section>
• Da lugar a:
Item
Type: http://schema.org/Person
name = John Doe
jobTitle = graduate research assistant
affiliation = University of Dreams
additionalName = Johnny
url = http://www.johnnyd.com/
address = Item(1)
Item 1
Type: http://schema.org/PostalAddress
streetAddress = 1234 Peach Drive
addressLocality = Warner Robins
addressRegion = Georgia
188
Mezclando MicroData y RDFa
189
Web Semántica vs. web semántica
Web Semántica web semántica
Filosofía
Construye un formato común de datos
para expresar el significado de los
datos. Utiliza ontologías para ayudar a
las máquinas a entender el contenido
web.
Los humanos primero, las máquinas
después. Codifican el contenido web
con etiquetas especiales
Lenguaje RDF, RDFS, OWL Microformats (basados en XHTML),
Microdata, RDFa, GRDDL
Formato Debe contener documentos RDF bien
formados
Cualquier cosa vale, siempre que sea
XHTML
Semántica Definida por el modelo ontológico
subyacente (e.j., OWL)
Desacoplado. No hay modelo semántico
formal, a no ser que se use RDFa
Ejemplos FOAF, OWL-S, OWL-Time
XFN (red social), hCard (contacto),
hReview (opiniones), rel-tag
(etiquetado)
190
Aplicaciones Semánticas • Son aplicaciones que intentan determinar el significado del texto y otros
datos y crean conexiones para el usuario
– Promocionan la portabilidad de datos y conectividad transforman la Web en una plataforma
• http://www.readwriteweb.com/archives/10_semantic_apps_to_watch.php
191
OpenCalais
• La misión de OpenCalais es generar metadatos semánticos a partir de contenido textual
– Utiliza técnicas de NLP, machine learning y otras
– Analiza documentos y encuentra entidades en ellos • No sólo identificar entidades, devuelve hechos
• Ejemplo de uso:
– http://viewer.opencalais.com/
– http://www.opencalais.com/showcase
• Proyecto relacionado:
– http://semanticproxy.com
192
Web of Data: Limitaciones de la Web de Documentos
• Demasiada información con muy poca estructura y hecha además para consumo humano
– Es una web sintáctica no semántica
– La búsqueda de contenidos es muy simplista • Se requieren mejores métodos
• Los contenidos web son heterogéneos
– En términos de contenido
– En términos de estructura
– En términos de codificación de caracteres
• El futuro requiere integración de información inteligente
193
LinkedData
• “A term used to describe a recommended best practice for exposing, sharing, and connecting pieces of data, information, and knowledge on the Semantic Web using URIs and RDF.“
• Permite descubrir, conectar, describir y reutilizar todo tipo de datos. – Pasa de una Web de Documentos a una Web de Datos
• En Septiembre 2011 ya contenía 31 billones de tripletas RDF, ligadas por 504millones de enlaces
• Pensado para abrir y conectar diversos vocabularios e instancias semánticas, para que puedan ser utilizados por la comunidad semántica
• URL: http://linkeddata.org/
194
Tipos de Datos en Linked Data
• Los datos publicados como LinkedData puede seguir la siguiente clasificación, según Tim Bernes-Lee:
– 1 estrella: datos disponibles en la web (en cualquier formato), pero con una licencia abierta
– 2 estrellas: datos disponibles son estructurados y legibles por máquinas. Por ejemplo, Microsoft Excel en vez de una imagen escaneada de una tabla.
– 3 estrellas: los datos disponibles como en (2) pero no siguen un formato propietario. Por ejemplo, CSV en vez de Excel.
– 4 estrellas: los datos son dispuestos de manera abierta usando un estándar abierto de W3C (RDF y SPARQL) para identificar cosas, de modo que la gente los pueda enlazar.
– 5 estrellas: los datos son dispuestos siguiendo lo anterior, incluyendo enlaces externos a los datos de otra gente.
195
4 reglas de Linked Data
1. Usa URIs para identificar cosas
2. Usa URIs HTTP para que estas cosas puedan ser referenciadas y dereferenciadas por gente y agentes de usuario
3. Proporciona información útil (descripción estructurada y metadatos) sobre la cosa/concepto al que referencia la URI
4. Incluye enlaces a otras URIs para mejorar el descubrimiento de información relacionada en la Web
196
Ejemplo de Linked Data
http://…/isbn978
Programming the Semantic Web
978-0-596-15381-6
Toby Segaran
http://…/publisher1
O’Reilly
title
name
author
publisher
isbn
http://…/isbn978
sameAs
http://…/review1
Awesome Book
http://…/reviewer
Juan Sequeda
http://juansequeda.com/id
hasReview
hasReviewer
description
name
sameAs
livesIn
Juan Sequeda name
http://dbpedia.org/Austin
198
Linked Data Life Cycle
• Linked Data must go through several stages (several iterations on Linkage) before are ready for exploitation:
199
Web of Data: MORElab Research Projects’ Dataset
199
201
Mash-up Semánticos
• Los mashups semánticos mezclan información proveniente de diferentes fuentes y organizan los resultados
• Los mash-up semánticos son mucho más flexibles – convierten la información recuperada a formato RDF (lingua franca) fácilmente filtrable y consultable con SPARQL. – Tienen la capacidad de evolucionar sin requerir cambios en su código
• Los datos provistos en formatos de representación sintácticos diferentes, pero tales datos, semánticamente, deben proveer una información muy similar, fácilmente convertible a un vocabulario RDF común.
202
Mash-ups Semánticos
203
Ejemplo Ontología de Mash-up
• Ontología que modela “Eventos geo-localizados organizados por una entidad” – En vez de diseñar una ontología desde cero, es preferible hacer uso de
vocabularios RDF bien conocidos tales como Calendar, vCard y Geo, que permiten representar eventos:
• RDF Calendar (http://www.w3.org/TR/2005/NOTE-rdfcal-20050929/)
• vCard-RDF (http://www.w3.org/TR/vcard-rdf)
• Geo RDF (http://www.w3.org/2003/01/geo/)
– Y de sus microformatos equivalentes:
• hCalendar (http://microformats.org/wiki/hcalendar)
• hCard (http://microformats.org/wiki/hcard)
• geo (http://microformats.org/wiki/geo)
204
Evento geolocalizado expresado con hCalendar
<div id="empresadigital: event1" class="vevent">
<h1><span class="summary">OSGI: una Plataforma Modular y Ligera para Construir Aplicaciones basadas en Servicios</span></h1>
<h2><abbr title="20080401T0900" class="dtstart">22 Mayo del 2008 9am a </abbr><abbr title="20080401T1400" class="dtend">2pm</abbr> en <span class="location">Parque Tecnológico de Álava, Miñano</span></h2>
<abbr class="geo" title="42.883; -2.760"></abbr>
<p class="description">OSGi es una de las tecnologías de software distribuido que más impacto está causando últimamente. Ven a este curso y aprende que hay detrás de OSGi.<a href="http://www.empresadigital.net/osgi" class="url">Pulsa</a> para obtener más información.</p>
<p><span class="organizer vcard">Organizado por</span>
<a href="http://www.arabadigitala.com" class="url"><span class="fn org">Araba Enpresa Digitala</span></a>. Contáctanos en <a class="email" href="mailto:[email protected]"> [email protected]</a>
</p>
<p><span class="logo" content="images/logo_ARABA.gif"> <img src="images/logo_ARABA.gif"/></span></p>
</div>
Ver fichero
205
Evento geolocalizado en RDFa <?xml version="1.0" encoding="iso-8859-1"?>
<!--<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">-->
<html xmlns:cal="http://www.w3.org/2002/12/cal/ical#"
xmlns:contact="http://www.w3.org/2001/vcard-rdf/3.0#"
xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
<head>
<title>Eventos de la Facultad de Ingenieria de la Universidad de Deusto</title>
</head>
<body>
<p about="http://www.deusto.es/events/event1" instanceof="cal:Vevent">
Charla técnica:
<span property="cal:summary">
Web con minusculas
</span>
a celebrarse el dia
<span property="cal:dtstart" content="20080412T1600-0500">
12 de Marzo a las 4pm.
</span>
en Auditorio Principal Universidad de Deusto
<span href="#p1" rel="geo:Point">
<span about="#p1">
<span property="geo:lat">43.270737</span>
<span property="geo:long">-2.939637</span>
</span>
</span>
organizado por
<span href="http://www.deusto.es/staff/dipina" rel="cal:organizer">Diego Lopez de Ipina</span>
</p>
...
Ver RDFa Ver RDF
206
Consulta que extrae eventos agregados PREFIX cal: <http://www.w3.org/2002/12/cal/icaltzd#>
PREFIX contact: <http://www.w3.org/2001/vcard-rdf/3.0#>
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT DISTINCT ?summary ?description ?dtstart ?dtend ?lat ?long ?org ?url ?email ?logo
WHERE {
?event cal:summary ?summary.
?event cal:dtstart ?dtstart.
OPTIONAL { ?event cal:organizer ?organizer.
?organizer contact:fn ?org.
?organizer contact:url ?url.
?organizer contact:email ?email.
OPTIONAL { ?organizer contact:logo ?logo. } }
OPTIONAL { ?event geo:Point ?point.
?point geo:lat ?lat.
?point geo:long ?long. }
OPTIONAL { ?event cal:geo ?loc.
?loc <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> ?lat.
?loc <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> ?restgeo.
?restgeo <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> ?long. }
OPTIONAL { ?event cal:dtend ?dtend. }
OPTIONAL { ?event cal:description ?description. }
FILTER ( xsd:dateTime(?dtstart) >= xsd:dateTime("2008-04-14T00:00:00Z") )
FILTER ( xsd:dateTime(?dtend) <= xsd:dateTime("2008-04-21T00:00:00Z") )
} ORDER BY ?event;
208
Bases de Datos NoSQL
• NoSQL – "not only SQL” – es una categoría general de sistemas de gestión de bases de datos que difiere de los RDBMS en diferente modos: – No tienen schemas, no permiten JOINs, no intentan garantizar
ACID y escalan horizontalmente
– Tanto las bases de datos NoSQL como las relacionales son tipos de Almacenamiento Estructurado.
• El término fue acuñado en 1998 por Carlo Strozzi y resucitado en 2009 por Eric Evans – Evans sugiere mejor referirse a esta familia de BBDD de nueva
generación como “Big Data” mientras que Strozzi considera ahora que NoREL es un mejor nombre
209
Características principales
• Fáciles de usar en clústers de balanceo de carga convencionales facilitan escalabilidad horizontal
• Guardan datos persistentes (no sólo cachés)
• No tienen esquemas fijos y permite la migración del esquema sin tener que ser reiniciadas o paradas
• Suelen tener un sistema de consultas propio en vez de usar un lenguaje de consultas estándar
• Tienen propiedades ACID en un nodo del clúster y son “eventualmente consistentes” en el clúster
210
¿Por qué necesitas NoSQL?
• Desafíos de gestión de información son difíciles de resolver con tecnología de bases de datos relacionales:
– BBDD no escala a tu tráfico a un coste aceptable
– El tamaño de tu esquema de datos ha crecido desproporcionalmente.
– Generas mucho datos temporales que no corresponden al almacén de datos principal (carritos de compra, personalización de portales)
– BBDD ha sido desnormalizada por razones de rendimiento o por conveniencia para utilizar los datos en una aplicación
– Dataset tiene grandes cantidades de texto, imágenes y BLOBs
– Consultas contra datos que no implican relaciones jerárquicas sencillas; recomendaciones o consultas de inteligencia de negocio.
• Ejemplo: "all people in a social network who have not purchased a book this year who are once removed from people who have“
– Usas transacciones locales que no necesitan ser durables, e.j. Like. • Los sites AJAX tienen muchos casos de uso de este estilo.
211
Conceptos asociados a BBDD distribuidas
• Almacenes basados en columnas y filas. RDBMS almacenan las filas de modo continuo en disco, mientras que algunas NoSQL guardan columnas de modo continuo
• Consistencia eventual: si no se realizan nuevas actualizaciones a un elemento de datos, todos los accesos del elemento devolverán el último valor actualizado
• Sharding: es una partición horizontal en una BBDD donde las filas de una tabla se mantienen de modo separado
• Replicación maestro-maestro es un método de replicación de BBDD que permite almacenar datos en un grupo de nodos y su actualización por cualquier miembro del grupo
• Replicación maestro-esclavo donde un sólo elemento se designa como “maestro” de un datastore y es el único nodo que permite modificar datos
• Particionado es la división de una BBDD lógica y sus partes constituyentes en un conjunto de partes independientes.
• Modelo de consistencia: contrato entre el programador y el sistema sobre las garantías de consistencia (write & read consistency: one, all, quorum, etc.)
212
Taxonomía de soluciones NoSQL • Los principales tipos de BBDD de acuerdo con su
implementación son los siguientes: – Almacenes de Clave-Valor
– Almacenes de Familia de Columnas
– Almacenes de Documentos
– Grafos
213
Características BBDD orientadas a Clave-Valor
• Su precursor fue Amazon Dynamo
– Basadas en DHT (Distributed Hash Tables)
• Modelo de datos: colección de pares clave/valor
• Ejemplos: Dynomite, Voldemort, Tokyo
214
BBDD orientadas a Columnas
• Su precursor fue Google BigTable
• Modelo de datos: familia de columnas, esto es, un modelo tabular donde cada fila puede tener una configuración diferente de columnas – Guardan datos por columna en vez de las BBDD tradicionales que lo
hacen por filas
• Ejemplos: HBase, Hypertable, Cassandra, Riak
• Buenas en: – Gestión de tamaño
– Cargas de escrituras masivas orientas al stream
– Alta disponibilidad
– MapReduce
215
BBDD orientadas a Documentos
• La precursora fue Lotus Notes
• Modelo de datos: colecciones de documentos (JSON, XML, BSON) que contienen colecciones de claves-valor
• Ejemplos: CouchDB, MongoDB
• Buenas en:
– Modelado de datos natural
– Amigables al programador
– Desarrollo rápido
– Orientas a la web: CRUD
216
BBDD orientadas a Grafos
• Inspiradas por Euler y la teoría de grafos
• Modelo de datos: nodos, relaciones con pares clave valor en ambos
• Ejemplos: AllegroGraph, VertexBD, Neo4j
• Buenas en:
– Modelar directamente un dominio en forma de grafo, una manera común de representar y entender datasets
– Ofrecer excelente rendimiento cuando los datos están interconectados y no tabulares
– Realizar operaciones transaccionales que exploten las relaciones entre entidades
217
El teorema de CAP
218
MongoDB
• Similar a CouchDB
• Pretende combinar lo mejor de los almacenes clave/valor, bases de datos de documentos y RDBMS
• Hace uso de JSON y tiene su propio lenguaje de consultas
• Implementada en C++
• Usada por SourceForge, Bit.ly, Foursquare o GitHub
• URL: http://www.mongodb.org/
219
MongoDB
• MongoDB (de la palabra en ingles “humongous” que significa enorme) es un sistema de base de datos NoSQL orientado a documentos
• MongoDB guarda estructuras de datos en documentos tipo BSON (Binary JSON (JSON Binario) con un esquema dinámico , haciendo que la integración de los datos en ciertas aplicaciones sea mas fácil y rápida.
220
Características Principales • Consultas Ad hoc
– MongoDB soporta la búsqueda por campos, consultas de rangos y expresiones regulares.
– Las consultas pueden devolver un campo específico del documento pero también puede ser una función JavaScript definida por el usuario.
• Indexación
– Cualquier campo en un documento de MongoDB puede ser indexado, al igual que es posible hacer índices secundarios.
• El concepto de índices en MongoDB es similar a los encontrados en base de datos relacionales.
• Replicación
– MongoDB soporta el tipo de replicación maestro-esclavo.
• El maestro puede ejecutar comandos de lectura y escritura.
• El esclavo puede copiar los datos del maestro y sólo se puede usar para lectura o para copia de seguridad, pero no se pueden realizar escrituras.
– El esclavo tiene la habilidad de poder elegir un nuevo maestro en caso del que se caiga el servicio con el maestro actual.
221
Características Principales
• Balanceo de carga – MongoDB se puede escalar de forma horizontal usando el concepto de “shard”.
– El desarrollador elije una llave shard, la cual determina como serán distribuidos los datos en una colección. los datos son divididos en rangos (basado en la llave shard) y distribuidos a través de múltiples shard.
– Un shard es un maestro con uno o más esclavos.
– MongoDB tiene la capacidad de ejecutarse en múltiple servidores, balanceando la carga y/o duplicando los datos para poder mantener el sistema funcionando en caso que exista un fallo de hardware.
• Almacenamiento de archivos – MongoDB puede ser utilizado con un sistema de archivos, tomando la ventaja de la capacidad que tiene MongoDB
para el balanceo de carga y la replicación de datos utilizando múltiples servidores para el almacenamiento de archivos.
– Esta función (que es llamada GridFS ) está incluida en los drivers de MongoDB y disponible para los lenguajes de programación que soporta MongoDB.
• Agregación – La función MapReduce puede ser utilizada para el procesamiento por lotes de datos y operaciones de agregación.
– Esta función permite que los usuarios puedan obtener el tipo de resultado que se obtiene cuando se utiliza el comando SQL “group-by”.
• Ejecución de JavaScript del lado del servidor – MongoDB tiene la capacidad de realizar consultas utilizando JavaScript, haciendo que estas sean enviadas
directamente a la base de datos para ser ejecutadas.
222
Manipulación de Datos: colecciones y documentos
• MongoDB guarda la estructura de los datos en documentos tipo JSON con un esquema dinámico llamado BSON, lo que implica que no existe un esquema predefinido.
• Los elementos de los datos son llamados documentos y se guardan en colecciones
• Una colección puede tener un número indeterminado de documentos
– Las colecciones son como tablas y los documentos como filas
– Cada documento en una colección puede tener diferentes campos.
• La estructura de un documento es simple y compuesta por “key-value pairs” parecido a las matrices asociativas en un lenguaje de programación
– Como valor se pueden usar números, cadenas o datos binarios como imágenes o cualquier otro “key-value pairs”.
223
Ejemplo de documento en MongoDB
{
"_id":
ObjectId("4efa8d2b7d284dad101e4bc7"),
"Last Name": "PELLERIN",
"First Name": "Franck",
"Age": 29,
"Address": {
"Street": "1 chemin des Loges",
"City": "VERSAILLES"
}
}
224
Utilidades de MongoDB
• Los siguientes comandos pueden ser instalados para el manejo y la administración del sistema de base de datos:
– mongo: es un Shell interactivo que permite a los desarrolladores ver, insertar, eliminar y actualizar datos en su base de datos. Este también permite entre otras funciones la replicación de información, configurar los Shards, apagar los servidores y ejecutar JavaScript.
– mongostat: es un instrumento de línea de comandos que muestra en resumen una lista de estadísticas de una instancia de MongoDB en ejecución.
– mongotop: es un instrumento de línea de comandos que provee un método para dar
seguimiento a la cantidad de tiempo que dura una la lectura o escritura de datos en una instancia.
– mongosniff: es un instrumento de línea de comandos que provee un sniffing en la base de datos haciendo un sniffing en el tráfico de la red que va desde y hacia MongoDB.
– mongoimport/mongoexport: es un instrumento de línea de comandos que facilita la importación exportación de contenido desde JSON, CSV o TSV.
– mongodump/mongorestore: es un instrumento de línea de comandos para la creación de una exportación binaria del contenido de la base de datos.
225
Documentación e instalación
• La documentación completa de MongoDB puede encontrarse en:
– http://docs.mongodb.org/manual/
• Instrucciones para instalar MongoDB en Windows:
– Descargar la última versión de: http://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/
– Crear directorio de datos: mkdir data/db
– Ejecutar el comando: mongod.exe --dbpath ..\data\db
– Ejecutar el cliente mongo y los siguientes comandos en JavaScript: %INSTALL_DIR%\mongodb-win32-x86_64-2.4.5\bin>mongo
MongoDB shell version: 2.4.5
connecting to: test
> db.test.save( {a:1} )
> db.test.find()
{ "_id" : ObjectId("4fe6e41b184d3a26629be9b6"), "a" : 1 }
>
226
Usando MongoDB • mongo es un shell JavaScript completo, cualquier función JavaScript, sintáxis o clase puede
usarse en el shell > j = { name : "mongo" };
{ "name" : "mongo" }
> t = { x : 3 };
{ "x" : 3 }
> db.things.save(j);
> db.things.save(t);
> db.things.find();
{ "_id" : ObjectId("51e50d3b70f9b7c7fdbd8d90"), "name" : "mongo" }
{ "_id" : ObjectId("51e50d3b70f9b7c7fdbd8d91"), "x" : 3 }
> for (var i = 1; i <= 20; i++) db.things.save({x : 4, j : i});
> db.things.find();
{ "_id" : ObjectId("51e50d3b70f9b7c7fdbd8d90"), "name" : "mongo" }
{ "_id" : ObjectId("51e50d3b70f9b7c7fdbd8d91"), "x" : 3 }
...
Type "it" for more
> // Iterate through the remaining items
> it
{ "_id" : ObjectId("51e50d3b70f9b7c7fdbd8da4"), "x" : 4, "j" : 19 }
{ "_id" : ObjectId("51e50d3b70f9b7c7fdbd8da5"), "x" : 4, "j" : 20 }
227
Usando MongoDB > // Store the cursor of the DB in a variable
> var cursor = db.things.find();
> while (cursor.hasNext()) printjson(cursor.next());
{ "_id" : ObjectId("51e50d3b70f9b7c7fdbd8d90"), "name" : "mongo" }
{ "_id" : ObjectId("51e50d3b70f9b7c7fdbd8d91"), "x" : 3 }
...
> // Use functional features of JavaScript
> db.things.find().forEach(printjson);
{ "_id" : ObjectId("51e50d3b70f9b7c7fdbd8d90"), "name" : "mongo" }
{ "_id" : ObjectId("51e50d3b70f9b7c7fdbd8d91"), "x" : 3 }
...
> // cursors like an array
> var cursor = db.things.find();
> printjson(cursor[4]);
{ "_id" : ObjectId("51e50d3b70f9b7c7fdbd8d94"), "x" : 4, "j" : 3 }
>
228
Documentos de consulta
• Documentos que indican el patrón de claves y valores que deben ser localizados
• Ejemplos:
– SELECT * FROM things WHERE name="mongo“
• db.things.find({name:"mongo"}).forEach(printjson);
– SELECT * FROM things WHERE x=4
• db.things.find({x:4}).forEach(printjson);
– SELECT j FROM things WHERE x=4
• db.things.find({x:4}, {j:true}).forEach(printjson);
– Recuperar el primer elemento que cumple alguna restricción:
• printjson(db.things.findOne({name:"mongo"}));
– Limitar el número de resultados:
• db.things.find().limit(3);
229
Programando MongoDB
• MongoDB tiene soporte variado de lenguajes y librerías cliente:
– http://docs.mongodb.org/ecosystem/drivers/java/
• Para soporte en Java mirar:
– http://docs.mongodb.org/ecosystem/drivers/java/
– http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/
• Algunos buenos ejemplos en:
– http://www.mkyong.com/tutorials/java-mongodb-tutorials/
230
MongoDB (2.4.5) • Written in: C++
• Main point: Retains some friendly properties of SQL. (Query, index)
• License: AGPL (Drivers: Apache)
• Protocol: Custom, binary (BSON)
• Master/slave replication (auto failover with replica sets)
• Sharding built-in
• Queries are javascript expressions
• Run arbitrary javascript functions server-side
• Better update-in-place than CouchDB
• Uses memory mapped files for data storage
• Performance over features
• Journaling (with --journal) is best turned on
• On 32bit systems, limited to ~2.5Gb
• An empty database takes up 192Mb
• GridFS to store big data + metadata (not actually an FS)
• Has geospatial indexing
• Data center aware
• Best used: If you need dynamic queries. If you prefer to define indexes, not map/reduce functions. If you need good performance on a big DB. If you wanted CouchDB, but your data changes too much, filling up disks.
• For example: For most things that you would do with MySQL or PostgreSQL, but having predefined columns really holds you back.
231
Persistencia Políglota
• Toda empresa va a acabar teniendo una variedad de tecnologías de almacenamiento para diferentes tipos de datos – El código de nuestros sistemas va a tener acceso a diferentes repositorios
de datos
– Muchos datos seguirán guardándose en almacenes relacionales pero debemos empezar a preguntarnos cómo queremos utilizar los datos y sólo entonces decidir qué tecnología es mejor
• Usar NoSQL para una característica particular de una aplicación
– Rápido procesado batch
– Logging distribuido
– Para grandes tablas
• Usar una RDBMS para reporting
– Se complica la lógica de la aplicación y el despliegue
– Responsabilidades administrativas adicionales
• Hay que ¡elegir la herramienta adecuada para cada trabajo!
232
Persistencia Políglota
233
¿Qué es Big Data?
• "Big Data are high-volume, high-velocity, and/or high-variety information assets that require new forms of processing to enable enhanced decision making, insight discovery and process optimization“ Gartner, 2012 – El término “Big Data” se originó dentro de la comunidad open source,
donde hubo un esfuerzo por desarrollar procesos de análisis que fueran más rápidos y escalables que el data warehousing tradicional, y pudieran extraer valor de los inmensos volúmenes de datos no estructurados producidos a diario por usuarios web
• Es una oportunidad para encontrar percepciones en nuevos y tipos emergentes de datos y contenidos, para hacer a tu negocio más ágil, y para responder preguntas que fueron consideradas con anterioridad fuera de tu alcance.
234
Motivation
• We're generating more content than ever before, but in many cases it leads to more questions and fewer answers. – What is happening in the atmosphere?
– Which candidate do voters prefer?
– Which movies, books, and TV shows are going to satiate the public's appetite?
– Which trends are coming down the road?
• Technology can drive the business: – Finding "competitive advantages," getting "data on the board's
agenda" and driving "innovative products and startups.“
• http://econsultancy.com/es/blog/63365-three-reasons-why-big-data-is-awesome
235
¿Qué es Big Data?
• Big Data is your data!!! It's the information owned by your company, obtained and processed through new techniques to produce value in the best way possible
– Doug Laney in 2001 coined the 3Vs concept: "volume, velocity and variety“:
• A lot of data produced very quickly in many different forms
– Customer transactional histories, production databases, web traffic logs, online videos, social media interactions
– In 2013 Mark van Rijmenam added "veracity, variability, visualization, and value“
• "90% of all data ever created, was created in the past two years. From now on, the amount of data in the world will double every two years.“
• Example: Netflix uses BigData to enhance their video streaming service and to make more accurate suggestions as to what subscribers might like
236
Features of Big Data
• The structure (or lack thereof) and size of Big Data that makes it so unique
• Represents both significant information and the way this information is analyzed
– "Big Data" represents a noun – "the data" - and a verb – "combing the data to find value.“
• Interpretation of Big Data can bring about insights which might not be immediately visible or which would be impossible to find using traditional methods.
237
Evolución de Big Data • ¡¡Explosión de los datos!!
– 48 horas de datos del mercado de valores ~ 5 TB
– 3,3 meses de fuentes OPRA ~ 5 PB
– Datos semi y no estructurados en tiempo real de redes sociales
– Procesos de Google PB/hour
• Bioinformatics – enormes conjuntos de datos sobre genética y drogas
• Blanqueo de dinero / financiación terrorista, Spatial Data
• Para 2015, más del 85% de las organizaciones Fortune 500 no serán capaces de procesar Big Data para ganar ventaja competitiva. – Gartner
• Ya se están produciendo más de 1.9 zettabytes de datos
238
Necesidad de Big Data Analytics
• La percepción de los procesos de Data Warehousing es que son lentos y limitados en escalabilidad
• La necesidad de converger datos de varias fuentes, tanto estructuradas como no estructuradas
• Es crítico el acceso a la información para extraer valor de las fuentes de datos incluyendo dispositivos móviles, RFID, la web y otro largo listado de tecnologías sensoriales automatizadas.
240
Las 4 Vs de Big Data
241
¿Cómo funciona Big Data Analytics?
242
Hadoop • Hadoop es una framework gratuita en Java para procesar grandes
volúmenes de datos en un entorno de computación distribuido
– Hace posible la ejecución de aplicaciones sobre sistemas con miles de nodos que procesan miles de terabytes
– Su sistema de ficheros distribuido facilita la rápida transferencia de datos entro nodos y permite al sistema seguir operando ininterrumpidamente en caso de fallo de un nodo
– Inspirado por Google MapReduce, un modelo de computación donde una aplicación se divide en varias partes
• Cada una de esas partes (fragmentos o bloques) puede ser ejecutada en cualquier nodo de un clúster
– El ecositema actual de Apache Hadoop consiste de:
• Hadoop kernel, MapReduce, el sistema de ficheros distribuido de Hadoop (HDFS) y otros proyectos relacionados como Apache Hive, HBase and Zookeeper.
– Usado por los grandes agentes de la industria Google, Yahoo and IBM
– Algunas variantes comerciales producidas por Cloudera, Hortonworks, MapR and Amazon
243
Hadoop
• Hadoop is "a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models.“
– It has two main parts:
• A distributed file system for data storage, named Hadoop Distributed File System (HDFS)
• A data processing Java framework named MapReduce used to work with the data
– MapReduce runs as a series of jobs, with each job essentially a separate Java application that goes out into the data and starts pulling out information as needed.
– Modus operandi:
• The Map part is accomplished by the JobTracker dividing computing jobs up into defined pieces and shifting those jobs out to the TaskTrackers on the machines out on the cluster where the needed data is stored
• Once the job is run, the correct subset of data is Reduced back to the central node of the Hadoop cluster
245
Google BigQuery
• Querying massive datasets can be time consuming and expensive without the right hardware and infrastructure
• Google BigQuery solves this problem by enabling super-fast, SQL-like queries against append-only tables, using the processing power of Google's infrastructure.
• You can access BigQuery by using a browser tool or a command-line tool, or by making calls to the BigQuery REST API using a variety of client libraries such as Java, PHP or Python.
• El servicio BigQuery de Google facilita en gran medida este tipo de análisis, ofreciendo un sistema de almacenamiento totalmente escalable y una forma sencilla y rápida de consultar estos datos.
– Gracias a su modelo de pago por uso, los usuarios de este servicio pueden comenzar a explotar sus datos sin costosas inversiones iniciales
• URL: https://developers.google.com/bigquery/
247
Big Data y SmartCities
User
Linked Citizens & Enterprises
Device Capabilities
Third Party Services
Linked Data Normalizer
LinkedCity Back-end
Users & Groups
Management
SocialNetworksUrban Apps
Repository
Search Engine & Recommender
Services & Data Manager
Big (Linked) Data Analysis
Events & Incidences
Sreening Media Tool
City Council Open Data Data Analyzer & ProviderCity sensor network
HTTP over IPv6
REST SPARQL Interface
HTTP RESTInterface
REST Interface
HTTP (AJAX)
Company
248
Smart City
250
Conclusiones • Sólo una nueva Internet posibilitará de un modo robusto nuevos servicios
y funcionalidades
– Internet of Services, Internet of Things, Web of Data …
• La Web del Futuro será una plataforma de ejecución de servicios cada vez más inteligentes, consumibles y alojados en y desde dispositivos heterogéneos (en móviles, desde la nube, a servidores web tradicionales o los propios objetos cotidianos)
• Los paradigmas Big Data, Semantic Web, Cloud Computing e Internet de las Cosas van a cambiar cómo desplegar funcionalidad empresarial y cotidiana en la Web
– Todo va a alojarse en la Web: la Web va a ser el ordenador y el navegador el SO que gestiona los recursos de la Web
– La coordinación de Web de Datos y los Ecosistemas de Servicios Distribuidos en Internet sólo será posible mediante mediación semántica o complejos análisis y minería de datos no estructurados
• Ejemplos del curso en: https://dl.dropboxusercontent.com/u/2763621/examplesFutureInternet.rar
251
Referencias
• European Future Internet Portal, http://www.future-internet.eu/
• The Future of the Internet, Bled 31 March 2008, ftp://ftp.cordis.europa.eu/pub/fp7/ict/docs/ch1-g940-280-future-internet-ld_en.pdf
• Future Internet: The Cross-ETP Vision Document, Version 1, 8. January, 2009, http://www.future-internet.eu/fileadmin/documents/reports/Cross-ETPs_FI_Vision_Document_v1_0.pdf
• How Web 3.0 Will Work, http://computer.howstuffworks.com/web-30.htm
• Web Evolution, http://www.slideshare.net/novaspivack/web-evolution-nova-spivack-twine
• Three New Search Services: Wolfram|Alpha, Microsoft Bing, Google Squared, http://dltj.org/article/alpha-bing-squared/
• Bing Search Engine, http://en.wikipedia.org/wiki/Bing_(search_engine)
252
Referencias
• Web Applications 1.0 – http://www.whatwg.org/specs/web-apps/2005-09-01/
• The Internet of Things
– http://www.itu.int/osg/spu/publications/internetofthings/InternetofThings_summary.pdf
• Enterprise 2.0, Web 2.0, WOA
– http://blogs.zdnet.com/Hinchcliffe/
– http://hinchcliffe.org/
• Programmable Web
– http://www.programmableweb.com
253
Referencias
• HTML5
– The HTML5 Vs. Native Apps Battle Broken Down
• http://www.businessinsider.com/battle-between-html5-vs-native-apps-2013-7
– The future for HTML5 is hybrid native mobile apps
• http://www.computerweekly.com/blogs/cwdn/2013/03/the-future-for-html5-is-hybrid-native-mobile-apps.html
254
Referencias
• Future of Search
– FAQ: All About The New Google “Hummingbird” Algorithm
• http://searchengineland.com/google-hummingbird-172816
– Google’s Impressive “Conversational Search” Goes Live On Chrome
• http://searchengineland.com/googles-impressive-conversational-search-goes-live-on-chrome-160445
255
Referencias • Browsers:
– Opera Labs
• http://labs.opera.com/
– Mozilla Labs
• http://wave.google.com/
• Cloud Computing
– Google App Engine
• http://code.google.com/intl/en/appengine/docs/java/gettingstarted/
– Amazon Web Services
• http://aws.amazon.com/
– Cloud Computing – Disruptive Innovation & Enabling Technology,
• http://blog.gogrid.com/2008/08/20/presentation-cloud-computing-disruptive-innovation-enabling-technology/
256
Referencias • Semantic Web
– Semantic Web Apps and Platforms:
• http://www.readwriteweb.com/archives/10_semantic_apps_to_watch.php
• http://www.readwriteweb.com/archives/top_10_semantic_web_products_of_2009.php
• Web of Data
– From the Semantic Web to the Web of Data ten years of linking up, Davide Palmisano - Fondazione Bruno Kessler, 30/03/2010
• http://es.slideshare.net/dpalmisano/from-the-semantic-web-to-the-web-of-data-ten-years-of-linking-up
• GreaseMonkey
– A six-pack of useful Greasemonkey scripts
• http://howto.cnet.com/8301-11310_39-57565901-285/a-six-pack-of-useful-greasemonkey-scripts/
257
Referencias • Big Data
– How is big data faring in the enterprise?
• http://www.zdnet.com/how-is-big-data-faring-in-the-enterprise-7000002404/
– Big Data Hadoop solutions with Hive, Mahout, HBase and Cassandra • http://www.theserverside.com/feature/Big-Data-Hadoop-solutions-with-Hive-Mahout-HBase-
and-Cassandra
– Hadoop: What It Is And How It Works • http://readwrite.com/2013/05/23/hadoop-what-it-is-and-how-it-
works#awesm=~omeohBbsanPhqA
– Big-Data Tutorial • http://planet-data.eu/sites/default/files/presentations/Big_Data_Tutorial_part4.pdf
– Big Data Online Training • http://contest.trendmicro.com/2013/train.htm
– 3D Data Management: Controlling Data Volume, Velocity and Variety • http://blogs.gartner.com/doug-laney/files/2012/01/ad949-3D-Data-Management-Controlling-
Data-Volume-Velocity-and-Variety.pdf
– Why The 3V’s Are Not Sufficient To Describe Big Data • http://www.bigdata-startups.com/3vs-sufficient-describe-big-data/
258
Internet del Futuro: Internet de las Cosas, Computación en la Nube y la Web de Datos
6 de Noviembre 2013, 9:00-12:30, Araba Enpresa Digitala
Parque Tecnológico de Álava (Miñano) - Edificio Central
Dr. Diego López-de-Ipiña González-de-Artaza [email protected]
http://paginaspersonales.deusto.es/dipina http://www.morelab.deusto.es