Charla impartida por Marco Antonio Sanz Molina Prados, Fundador de CloudAppi, que repasa las tecnologías más habituales del mundo Big Data y su aplicación en el desarrollo de las Apis.
En la ponencia se tratan os siguientes puntos:
• Arquitectura Lambda
• Arquitectura de APIs
• Bases de datos noSQL
• Datawarehouses Big Data
• Ejemplos de arquitecturas
2. Índice
❏ ¿Quienes somos?
❏ ¿Por qué unir Big Data y las Apis?
❏ ¿Qué es Big Data?
❏ Las 4 Vs
❏ Bases de datos noSQL
❏ Datawarehouses Big Data
❏ Arquitectura Lambda
❏ Arquitectura de Apis
❏ Ejemplos
❏ Mashups
3. ¿Quienes somos?
Grupo de meetup
http://www.meetup.com/API-Addicts/
Meetups realizados
❏ MADA. Metodología ágil de
definición de APIs
❏ Taller de definición de APIs
❏ Desarrolla tu primera API
❏ Seguridad en las APIs
❏ Las Apis como modelo de negocio
❏ El Mundo Cloud y las APis
Marco Antonio Sanz:http://es.linkedin.com/pub/marco-antonio-sanz-molina-prados/18/335/97/
5. ➢ Del internet de las cosas...
¿Cómo se van a conectar?
Internet de las APIs
¿Por qué unir Big Data y las Apis?
6. ¿Qué se hacía antes del Big Data?
¿Qué es Big Data?
➢ Clusters
➢ Optimización de servidores de aplicaciones
(cacheo, …)
➢ Optimización de servidores de base de datos
(vistas, vistas materializadas..)
➢ Data Warehouses (OBI, Mondrian…)
➢ ETLs (OBI, Kettle…)
7. ¿Qué es Big Data?
¿Qué es Big Data?
➢ Conjunto de tecnologías
que permiten la
acumulación masiva de
datos.
8. Convirtiendo Big Data en Valor
The Four V’s
http://www.slideshare.net/BernardMarr/140228-big-data-slide-share
9. CAP
● Consistencia fuerte (la C en ACID y CAP).
● Disponibilidad o Availability (la A de CAP
pero no en ACID).
● Tolerancia a fallos (la P en CAP, en inglés
Partition Tolerance).
Bases de datos noSQL
https://eamodeorubio.wordpress.com/2010/05/17/nosql-2-no-necesitas-acid/
10. LandScape MAP
Bases de datos noSQL
http://files.meetup.
com/1789394/Matt
%20Aslett%20-
%20DB%20landsc
ape.pdf
12. Llave / Valor
Bases de datos noSQL
La arquitectura Llave/Valor consta en una llave como
“Colonia” que se asocia con un valor “Centro”.
Estas estructuras pueden ser utilizadas como colecciones,
diccionarios, arreglos asociados o caches.
Las búsquedas realizadas en este tipo de estructuras son
rápidas ya que funcionan bajo el concepto de tablas hash.
Considerando la ausencia de índices, este tipo de
estructuras no son útiles para realizar operaciones complejas
con los datos, solo soportan sentencias simples de creación,
lectura, actualización y eliminación.
13. Llave / Valor - Cassandra
Bases de datos noSQL
Apache Cassandra es una base de datos NoSQL distribuida y
basada en un modelo de almacenamiento de «clave-valor»,
escrita en Java.
Permite grandes volúmenes de datos en forma distribuida. Por
ejemplo, lo usa Twitter para su plataforma.
Su objetivo principal es la escalabilidad lineal y la disponibilidad.
La arquitectura distribuida de Cassandra está basada en una serie
de nodos iguales que se comunican con un protocolo P2P con lo
que la redundancia es máxima.
Cassandra está desarrollada por Apache Software Foundation.
14. Llave / Valor - Redis
Bases de datos noSQL
Redis es Open Source, con licencia BSD,
que permite el almacenamiento clave valor
tanto en memoria como en disco.
Las claves pueden contener texto, hashes,
listas, conjuntos, bitmaps o hyperlogs.
Permite suscribirse a la información, por lo
que n clientes pueden recibir la
información al momento.
15. Orientadas a Documentos
Bases de datos noSQL
La arquitectura basada en documentos
utiliza una estructura compleja de datos
denominada documento para almacenar los
campos de cada registro. Se pueden
generar arreglos de registros o
anidamientos de documentos. Estas
estructuras de datos son del tipo JavaScript
Object Notation (JSON), XML o BSON o del
tipo binario como PDF
16. MongoDB
Bases de datos noSQL
Sistema de base de datosNoSQL orientado a documentos,
desarrollado bajo el concepto de código abierto.
MongoDB forma parte de la nueva familia de sistemas de
base de datos NoSQL. En vez de guardar los datos en
tablas como se hace en las base de datos relacionales,
MongoDB guarda estructuras de datos en documentos tipo
JSON con un esquema dinámico (MongoDB llama ese
formato BSON), haciendo que la integración de los datos
en ciertas aplicaciones sea más fácil y rápida.
Posee algunas características de las bases de datos
tradicionales, como transaccionalidad a nivel de
documento, índices…
Además, permite un escalamiento horizontal.
17. Columnar
Bases de datos noSQL
El modelo de columnar utiliza el esquema de llave/valor para
almacenar la información pero introduce un patrón de
jerarquías y un semi-esquema para ordenar y almacena
los datos, generando las columnas por la que es llamada
esta arquitectura. Las filas contenidas en esta base de datos
pueden variar, es decir pueden contener un número
diferente de campos ya que es una propiedad de los
registros llave/valor. Las tablas de estas bases de datos
deben ser declaradas, lo cual amarra a este tipo de bases a
la presencia de esquemas definidos para trabajar los datos.
18. Columnar - DynamoDB
Bases de datos noSQL
Amazon DynamoDB es un servicio de base de datos
NoSQL rápido y flexible para todas las aplicaciones
que requiren latencias de milisegundos de un solo
dígito constantes a cualquier escala. Se trata de una
base de datos totalmente gestionada compatible con
modelos de datos de valor de clave y de documentos.
Su modelo de datos flexible y su rendimiento fiable la
convierten en una herramienta ideal para móviles,
web, juegos, tecnología publicitaria, Internet de las
cosas (IoT) y muchas otras aplicaciones.
19. Grafos
Bases de datos noSQL
Las bases de datos de grafos reconocen entidades en un
negocio o dominio, y explícitamente siguen las relaciones
entre estas. Las entidades reciben el nombre de nodos y
las relaciones el nombre de aristas. Nuevas aristas
pueden ser agregadas en cualquier momento,
permitiendo relaciones uno a muchos o muchos a
muchos de una manera sencilla, evitando el uso de
tablas intermedias para la representación de esta unión,
como será en el caso en una base de datos relacional.
Estas bases de datos se enfocan más en las relaciones
de los datos, más que en las características de sus
valores.
20. Grafos - neo4j
Bases de datos noSQL
Neo4j es altamente escalable, robusta base de datos
orientada a grafos (full ACID) . Es utilizada por miles
de startups, compañías y gobiernos. Sus
características principales son las siguiente:
➢ Alto rendimiento para datos altamente
conectados.
➢ Alta disponibilidad en Clúster.
➢ Cypher, un lenguaje de queries para grafos.
➢ ETL, fácil importar a través de un CSV
➢ Backups en caliente y monitorización avanzada.
21. Big Query
➢ Big Query permite que los
datos puedan ser
consumidos y utilizados
utilizando SQL - like queries
que utilizan la
infraestructura de Google
para realizar computación
paralela.
DWS Big Data
https://cloud.google.com/bigquery/what-is-bigquery
22. Amazon Redshift
➢ Amazon Redshift es una
solución rápida y
totalmente gestionada de
almacén de datos a
escala de petabytes que
permite analizar todos los
datos empleando de
forma sencilla y rentable
las herramientas de
inteligencia empresarial
de que ya disponga.
DWS Big Data
http://aws.amazon.com/es/redshift/
23. Hadoop
➢ Es una framework que
permite la computación de
dataset con gran cantidad
de datos usando modelos
de programación simple.
➢ Está diseñado para
escalar hasta ciento de
máquinas.
➢ La arquitectura está
diseñada para detectar y
manejar fallos en la capa
de aplicación.
Procesando los datos
http://hadoop.apache.org/
24. AWS Elastic Map Reduce
➢ Es un web service que hace
más fácil el proceso de
ingentes cantidades de
datos. Amazon EMR usas
Hadoop, para distribuir los
datos a través del clúster
formado por Amazon EC2.
➢ También puede ejecutar
otros frameworks como
Spark y Presto.
Procesando batch
http://aws.amazon.com/elasticmapreduce/
25. Storm
Es una tecnología open source que
permite el procesamiento en tiempo
real de datos.
El funcionamiento es simple, va
procesando millones de tuplas por
segundo, en una arquitectura
escalable, orientada a fallos que
garantiza que tus datos van a ser
procesados
Procesamiento online
https://storm.apache.org/
27. Descripción
Es un conjunto de principios
para una arquitectura de
sistemas Big Data en Tiempo
Real.
Tres capas:
❏ Batch layer
❏ Serving layer
❏ Speed layer
Arquitectura Lambda
https://unpocodejava.wordpress.com/2013/09/07/arquitectura-lambda-
principios-de-arquitectura-para-sistemas-big-data-en-tiempo-real/
28. Batch Layer
Almacena en HDFS el
dataset maestro que es
inmutable y
constantemente crece
Crear vistas arbitrarias
desde este dataset
vía MapReduce (Hive,
Pig,…).
Arquitectura Lambda
https://unpocodejava.wordpress.com/2013/09/07/arquitectura-lambda-
principios-de-arquitectura-para-sistemas-big-data-en-tiempo-real/
29. Serving Layer
Se encarga de indexar y exponer las
vistas para que puedan ser
consultadas.
Como las Vistas Batch son estáticas
esta Capa sólo necesita proveer
lecturas y para eso puede usar
Impala, Stinger,…
Arquitectura Lambda
https://unpocodejava.wordpress.com/2013/09/07/arquitectura-lambda-
principios-de-arquitectura-para-sistemas-big-data-en-tiempo-real/
30. Speed Layer
Computa Vistas cuando llegan los
datos.
Esta Capa sirve para compensar la
alta latencia de la Capa Batch
generando vistas en tiempo real
usando pj Storm
Arquitectura Lambda
https://unpocodejava.wordpress.com/2013/09/07/arquitectura-lambda-
principios-de-arquitectura-para-sistemas-big-data-en-tiempo-real/
31. Al desarrollar una API
➢ Selección de la base de datos noSQL según el teorema CAP.
Pueden coexistir bases de datos noSQL con SQL.
➢ Utilizar el mundo cloud como base.
➢ Utilizar las tecnologías que mejor se ajusten a tu negocio (tener
en cuenta arquitectura Lambda).
➢ Usar formato ligeros de datos (por ejemplo, peticiones rest).
➢ No utilizar sesión en las peticiones.
➢ Al invocar servicios de terceros se deben realizar siempre de
forma asíncrona
Arquitectura de Apis
32. Ejemplos: Twitter
Arquitectura de Apis
➢ Red social que permite
dejar mensajes de 140
caracteres.
source:http://www.slideshare.net/raffikrikorian/qcon-nyc-2012-twitters-real-time-architecture
38. Ejemplos: Linkedin
Arquitectura de Apis
➢ Obtener distancia entre
usuarios
Source: https://engineering.linkedin.com/real-time-distributed-graph/using-set-cover-algorithm-optimize-query-latency-large-scale-distributed
39. ¿qué son?
➢ Aplicación web que usa
contenido de más de una fuente
y que generalmente
➢ Su principal característica es
combinación, visualización y
agregación
source:
http://en.wikipedia.org/wiki/Mashup_%28web_application_hybri
d%29
Mashups
40. Directorios de Apis
source: https://developers.bbva.com/
➢ Directorio de Apis Públicas
○ ProgramableWeb
○ apis.io
○ http://api500.com/ (api rating
agency)
○ Google :-)
Mashups
41. Principales categorías de Apis
source: http://www.slideshare.net/fullscreen/programmableweb/fastest-growing-web-api-
categories-last-6-months/2
Mashups