smart data

22
@dmunozgaete Mejorando la comunicación de datos con protocolos de consulta Datos Inteligentes David Antonio Muñoz Gaete

Upload: david-munoz-gaete

Post on 09-Feb-2017

231 views

Category:

Internet


0 download

TRANSCRIPT

Page 1: Smart data

@dmunozgaete

Mejorando la comunicación de datos con protocolos de consulta

Datos Inteligentes

David Antonio Muñoz Gaete

Page 2: Smart data

Hola!, Yo soyDavidArquitecto de Soluciones – MentorEntusiasta de la tecnología, Emprendedor empedernido, y arquitecto de software de corazón ;).

Hoy particularmente feliz y haciendo del mundo, un mundo mas conectado junto con un equipo de cracks ;)!

Creador del framework RESTFul Gale

Page 3: Smart data

En esta oportunidad veremos: Qué son los datos inteligentes?

• Big Data: El inicio de todo.• La “insolvencia” de los servicios específicos en el tiempo.• La “complejidad” de estructurar (orientación a micro servicios).

Mejorando la comunicación de datos• RESTFul en su forma correcta ^^!.• ODATA en detalle.

Workshop Practico• Definiendo puntos de consulta filtrables.• Principios de arquitectura para consumo de datos compuestas.• Mejores practicas en la seguridad de punto a punto.

Page 4: Smart data

RESTFul

Diseño Rapidez

Conocimiento

OD

ATA

C#Emprendimiento

Microservicios

API

ProgramaciónGALE

Servicios

Fabric

Experiencia

Soluciones

Escalable

Calidad

Qué son los datos inteligentes?

(qué pasa cuando mucha información es inutilizable…)

Page 5: Smart data

Big Data: El inicio de todo Antes de comenzar a hablar de Smart Data, debemos entender

que es Big Data. Big Data: es un concepto que hace referencia

al almacenamiento de grandes cantidades de datos y a los procedimientos usados para encontrar patrones repetitivos dentro de esos datos. El fenómeno del Big Data también es llamado ”datos a gran escala”.

Las dificultades más habituales vinculadas a la gestión de estas cantidades de datos se centran en la recolección y el almacenamiento, búsqueda, compartición, análisis, y visualización.1 MINUTO en internet:

204.000.000

De emails

2.500.000Contenidos en

Facebook216.000Fotos en Instagram

Page 6: Smart data

Smart Data: Cuando mucha información es inutilizable Sin estructura… no hay tabla , excel, csv, ni orden que aguante. Sin estructura… da lo mismo la cantidad de información que

tengas ya que tomarías mucho tiempo en entenderla. La cantidad de servicios que debemos crear para disponibilizar la

información se vuelve verdaderamente agobiante.. (y ahí es cuando verdaderamente sentimos pena por el futuro encargado de lo que estamos creando..).

SOLO cuando entiendes el significado del monstruo que estamos creado… es cuando comenzamos a entender que son y para que sirven los datos inteligentes.

Page 7: Smart data

Entonces… Que es Smart Data? Podríamos definir “Smart Data” como ”datos con estructura”, y

su real utilización se encuentra en el manejo de datos masivos que dan forma a nuevos modelos de consulta y comunicación con formatos mas “transparentes”.

Pero bueno si yo fuera Facebook y tuviera esos problemas … me equivoque de charla =(.

Wait!!, Hay un uso muy interesante en el concepto de Smart Data el cual veremos a continuación.

Page 8: Smart data

La “insolvencia” de los servicios en el tiempo Cuando la centralización SOLO se entiende como en “juntar

todo en uno”….

One “ring” database to rule them all

ObtenerUsuarioPorRut

ObtenerUsuariosPorNombre

ObtenerUsuariosPorFechaNacimiento

ObtenerUsuarioPorCodigo

ObtenerUsuariosPorRol

ObtenerUsuariosActivos

ObtenerUsuariosInactivos

Pobre… Pobre desarrollador(el solo queria buscar un usuario..)

Page 9: Smart data

La “complejidad” de estructurar Aplicando protocolos de comunicación de datos:

One “ring” database to rule them all

/Usuarios /Usuarios?$filter=rut eq 14327558

/Usuarios?$filter=name contains ‘david’/Usuarios?$filter=active eq true

...&$limit=5&$offset=0

Bueno y como llegamos a eso :O??

Page 10: Smart data

RESTFul

Diseño Rapidez

Conocimiento

OD

ATA

C#Emprendimiento

Microservicios

API

ProgramaciónGALE

Servicios

Fabric

Experiencia

Soluciones

Escalable

Calidad

Mejorando la comunicación de datos

(y evitar el colapso después de atomizar…)

Page 11: Smart data

“Representational State Transfer”, es un tipo de arquitectura de desarrollo web que se apoya totalmente en el estándar HTTP.

REST nos permite crear servicios y aplicaciones que pueden ser usadas por cualquier dispositivo o cliente que entienda HTTP, por lo que es increíblemente más simple y convencional que otras alternativas que se han usado en los últimos diez años como SOAP y XML-RPC.

Podríamos considerar REST como un framework para construir aplicaciones web respetando HTTP.

RESTFul es la implementación de la arquitectura REST en servicios orientados a web.

Arquitectura REST y principio RESTFul

Page 12: Smart data

Entidad: User

Uso “semántico” en los recursos

Endpoint: /v1/UsersEntidad Física: TB_UsuariosSiempre en Plural

GET /Users Listar todos los usuariosGET /Users/fyhr102 Detalle del usuario fyhr102

GET /Users/fyhr102/Roles Listar los roles del usuario fyhr102

DELETE /Users/fyhr102 Eliminar al usuario fyhr102

Page 13: Smart data

Relaciones en los recursos Las relaciones deben ser manejadas como sub-recursos del

recurso principalGET /Users/fyhr102/Messages Mensajes del usuario fyhr102

GET /Users/fyhr102/Roles Roles del usuario fyhr102

PUT /Users/fyhr102/Activate Activar usuario fyhr102DELETE /Users/fyhr102/Deactivate Desactivar usuario fyhr102

Las acciones que no corresponden a las operaciones CRUD como por ejemplo “Activar”, lo mejor es tratarlas como un sub recurso con principios REST

Page 14: Smart data

ODATA (Open Data Protocol – http://www.odata.org)

Open Data Protocol, es una iniciativa impulsada por Microsoft para la exposición de datos como Servicio basándose en estándares de Internet como RESTFul

La creación de una forma uniforme de representación de datos estructurados a través de Atom o JSON (JavaScript Object Notación)

La utilización de convenciones URL uniformes tanto para la navegación, filtrado, orden y paginación de datos (entre otros)

Un formato de consulta estándar para endpoints REST

GET http://piik.in/v1/Users?$limit=10&$offset=0&$filter=name contains ‘David’{ "offset": 0, "limit": 10, "total": 9, "elapsedTime": "00:00:00.0570876", "items": [ { "token": "30e517b6-5f76-4fd3-8668-fefae56c8519", "createdAt": "2016-02-27T12:30:43.65-03:00", "email": ”[email protected]", ”name": ”David Antonio Muñoz Gaete” }, { "token": "30e517b6-5f76-4fd3-8668-fefae56c8519” ….......

Page 15: Smart data

ODATA: Formato de una respuesta (envelope){ "offset": 0, "limit": 10, "total": 9, "elapsedTime": "00:00:00.0190876", "items": [ … registros ]}

Offset: 0 registros saltados de la fuente

Limit: limitar los resultados a 10 registros

Total: la fuente de datos contiene 9 registros en total.

ElapsedTime: El tiempo de respuesta tuvo una demora de 190 ms (campo opcional).

Items: Colección de registros devueltos.

Page 16: Smart data

ODATA: clausula $select Permite limitar los campos devueltos en un endpoint basado en OData, es

realmente útil para reducir el payload de nuestra llamada, si solo deseamos cierta información de la entidad consultada.

Method: GET Endpoint: /UsersQuery: $select=fullname,

email,token

{ … "items": [ { "token": "30e517b6-5f76-4fd3-8668-fefae56c8519", "email": ”[email protected]", ”fullname": ”David Antonio Muñoz Gaete” },..]}

HTTP REQUEST HTTP RESPONSE

Page 17: Smart data

ODATA: clausula $filter (múltiple)

Permite filtrar los resultados de la consulta a través de operadores simples en los campos del endpoint basado en OData.

Algunas operadores son: equal (eq) , contains, greater (>), greaterThanOrEqual (>=), less (<), lessThanOrEqual (<=), in.

Method: GET Endpoint: /UsersQuery: $filter=fullname

contains ‘Mar’

… "items": [ { "token": "30e517b6-5f76-4fd3-8668-fefae56c8519", ”fullname": ”Marco Jorquera” },{ "token": ”8d93d5vk-1r68-3ft2-8668-fefae56c8519", ”fullname": ”Mario Pereira” }..]

HTTP REQUEST HTTP RESPONSE

Page 18: Smart data

ODATA: clausula $offset y $limit Se utilizan para restringir los registros devueltos o para indicar cuantos registros

debe saltarse la fuente de datos devuelta. Su utilización mas común es para paginar los registros (resultado parcial).

Method: GET Endpoint: /UsersQuery: $offset=2&

$limit=1

… "items": [ { "token": "30e517b6-5f76-4fd3-8668-fefae56c8519", ”fullname": ”Marco Jorquera”, ”email": ”[email protected]”, ”createdAt": "2016-02-27T12:30:43.65-03:00", }]

HTTP REQUEST HTTP RESPONSE

Registro 1

Registro 2

Registro 3

Registro 4

$offset (2)

$limit (1)

Page 19: Smart data

ODATA: clausula $orderBy Se utiliza para definir el campo de orden por el cual será ordenada la fuente de

datos devuelta. Permite ordenar de acuerdo a un campo de forma ascendente o descendente

Method: GET Endpoint: /UsersQuery: $orderBy= points

desc

… "items": [ { ”points": 200, ”fullname": ”Marco Jorquera” },{ ”points": 100, ”fullname": ”Mario Pereira” }..]

HTTP REQUEST HTTP RESPONSE

Page 20: Smart data

RESTFul

Diseño Rapidez

Conocimiento

OD

ATA

C#Emprendimiento

Microservicios

API

ProgramaciónGALE

Servicios

Fabric

Experiencia

Soluciones

Escalable

Calidad

Workshop Practico (combinando todo sin morir en el intento..)

Page 21: Smart data

Instalación Demosmothership$: git clone https://github.com/dmunozgaete/demo-smart-data.git mothership$: cd Demosmothership$: npm installmothership$: bower installmothership$: grunt lift

Page 22: Smart data

Puedes seguir mis aventuras en:

Gracias por tu tiempo!

https://github.com/dmunozgaete

https://twitter.com/DMunozGaete

https://cl.linkedin.com/in/dmunozgaete

Gale RESTFul API FrameworkEsta presentación no hubiera sido lo mismo sin:

David Muñoz Gaete

Arquitecto de SoftwareMentor Técnico

Emprendedor