Upload
david-munoz-gaete
View
230
Download
0
Embed Size (px)
Citation preview
@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": ”[email protected]", ”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": ”[email protected]", ”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": ”[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)
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