smart data

Post on 09-Feb-2017

232 Views

Category:

Internet

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

@dmunozgaete

Mejorando la comunicación de datos con protocolos de consulta

Datos Inteligentes

David Antonio Muñoz Gaete

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

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.

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

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

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.

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.

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

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

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

“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

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

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

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": ”dmunozgaete@gmail.com", ”name": ”David Antonio Muñoz Gaete” }, { "token": "30e517b6-5f76-4fd3-8668-fefae56c8519” ….......

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.

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": ”dmunozgaete@gmail.com", ”fullname": ”David Antonio Muñoz Gaete” },..]}

HTTP REQUEST HTTP RESPONSE

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

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": ”mjorquera@dummy.com”, ”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)

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

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

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

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

top related