SlideShare una empresa de Scribd logo
1 de 49
Descargar para leer sin conexión
Ya eres parte de la evolución
Liquid Day
Almacenamiento masivo
en el sector bancario con
StorageGRID Webscale & Elasticsearch
Domingo Suarez Torres
@domix
Agenda
• Storage
• Alternativas
• Caso de estudio
• Lecciones aprendidas
Sobre Domingo
• @domix (twitter, github)
• CTO @ HolaGus
• CoFounder @ TheDataPub
• YouTube Channel http://bit.ly/coderdog
• Previamente
• Solution Architect @ SyC
• Chief Architect @ Grupo Expansión
• CTO @ clickOnero
storage
https://www.domo.com/blog/2015/08/data-never-sleeps-3-0/
https://www.domo.com/blog/2016/06/data-never-sleeps-4-0/
Almacenamiento masivo
• No solo para compañías de social media
• Tendencia a la alta en compañías de bienes y servicios
• Requerimientos legales
• Archivo muerto
• Data Analytics
• Medios de información cada vez más ricos
Tipos de almacenamiento
• Archivos
• File systems
• Estructura jerárquica (Carpetas/Directorios)
• Objeto (Blob storage/Object storage)
• Contenedores (Buckets/Containers)
• No estructurado, para acceder se requiere un conjunto de
llaves
• Identificador del contenedor + identificador del objeto
Cloud Storage
REST API propietario
Storage REST APIs
• Amazon S3
• OpenStack Swift
• CDMI (Cloud Data Management Interface)
• By Storage Network Industry Association
(SNIA)
• Propietarias como Azure <- NO recomendado
¿Cuando usar cloud storage?
• Pay as you go (presupuesto limitado)
• Capacidad interna en la compañía para integrar
el servicio con sistemas existentes
• Información no restringida por las leyes locales/
federales (recuerden terrible caso del INE)
Opciones en
Appliances
Interface de appliances
• Muchos están basados en estándares abiertos
• OpenStack Swift
• CDMI
• Amazon S3
• Se ha convertido en un estándar de industria.
Cuando usar un appliance
• Tienes presupuesto
• Tienes un centro de datos dedicado
• Usas Colocation
• Administras información restringida por las leyes
locales/federales
Alternativa OpenSource
• LinkedIn recientemente
anuncio Ambry
• http://bit.ly/linkedin-ambry
• Distributed Object
Storage
• https://github.com/
linkedin/ambry
• API REST propietaria
• Pensado para cloud
• Escalamiento horizontal
• Baja latencia
• Optimizado para
archivos pequeños y
grandes
A considerar
• Object storage es el camino para alto
escalamiento y gran capacidad de
almacenamiento
• Las soluciones de Object storage en general no
ofrecen un mecanismo de búsqueda por metadata
• Si se desea poder hacer búsquedas no hay
soporte nativo, solo paginaciones de los
contenedores y filtros sencillos (fecha, patrones
de nombre)
Caso de estudio
• El Banco más grande de México
• Solución para almacenamiento y recuperación de
al menos 7 sistemas fuentes
• Estados de cuenta (XMLs pequeños y algunos
enormes)
• Archivo digital (imágenes)
• Bitácora de transacciones
• Mi rol en el proyecto fue de Arquitecto de Solución.
Requerimientos
• Alta capacidad de almacenamiento (Petas)
• Replicación en 2 centros de datos nacionales,
ademas del banco (activo-activo)
• Búsqueda de documentos basada en metadata
• Alta disponibilidad
• API RESTful para integrar en los sistemas internos
• Seguridad
• Cifrado, Confidencialidad, Integridad, No repudio
Búsqueda por metadata
• Metadata por tipo de documento
• Atributos de metadata deben ser dinámicos
• N documentos por N atributos de metadata
• Millardos de documentos (do the math!)
• Velocidad de consulta (2 segundos máximo)
Solución
Almacenamiento
• NetApp StorageGRID Webscale
• Appliance de “fácil” configuración
• Soporta Amazon S3, Swift y CDMI
• Se usó Amazon S3.
• Políticas de replicación
Retos de almacenamiento
• Millardos de documentos pequeños (~4K)
• Capacidad de ingestar 5 millones de
documentos por hora
• Latencia de red
• Procesos, Verificación de integridad, cifrado,
etc.
• Velocidad de recuperación
Búsqueda de metadata
You know, for search…
Features
• Real-Time Data. Yo (Domingo) digo que es cercano a Real-Time Data.
• Massivamente Distribuido
• Alta Disponibilidad
• Full-Text Search
• Document-Oriented
• Schema-Free
• Developer-Friendly, RESTful API
• Extensible via plugins
Conceptos
• Cluster
• Node
• Index
• Shard & Replica
• Type(s)
• Mapping
• Documents
Como se organiza la
información en Elasticsearch
Nodes & shards
Indexing documents
Sharding es crucial
• Un Shard es un indice fisico de Lucene
• Limite de # documentos en un indice de Lucene
es de 2 millardos.
• Cuando un indice es creado se debe
especificar el # de shards, no se puede cambiar
después. ¡Cuidado!
• ¡No hagan over-sharding del indice! ¡Cuidado!
Distributed indexing
Shard allocation awareness
• Los shards pueden ubicarse en nodos diferentes
• Con metadata a nivel nodo podemos indicar a
Elasticsearch que el nodo vive en cierto “rack” del
data center
• Con mas metadata podemos indicarle que el
nodo vive en cierto data center
• Con la combinación correcta, la replicación no
compromete la integridad de los datos
Elasticsearch setup
• 2 Centros de datos. Geográficamente separados por 700 KM
• 24 Nodos
• 12 Nodos en cada Centro de datos
• 10 Nodos de datos
• 2 Nodos cliente
• Cada VM
• 16 CPUs
• 32 GB RAM. 16 GB para Elasticsearch
• 700 GB de Storage, para nodos de datos.
• Centos 6
Cluster de Elasticsearch
API REST
Microservices
• Desarrollados con SpringBoot y Java 8
• Ingesta de documentos
• blob del documento y metadata (JSON)
• Recuperación directa
• Búsqueda basada en criterios (atributos de
metadata). ES ~40 milisegundos de respuesta
• Spring Cloud. Hystrix, Eureka, RxJava de Netflix
• Escalar horizontal bajo demanda
Lecciones aprendidas
• Monitoreo de la infraestructura es elemental
• VMs, Microservicios, Salud cluster de ES
• Análisis muy detallado de los requerimientos de atributos
metadata
• Hizo falta involucrar un experto en gestión de
documentos y archivos.
• Falta de recursos con conocimientos de Elasticsearch.
Evangelización dentro del banco.
• Los bancos pueden adoptar nuevas tecnologías si se
comunican eficientemente los beneficios.
¡Es divertido trabajar
desde un data center!
Ya eres parte de la evolución
Liquid Day
¿Preguntas?
@domix
domingo.suarez@gmail.com
http://domingosuarez.com
http://www.slideshare.net/domingo.suarez
http://bit.ly/coderdog

Más contenido relacionado

La actualidad más candente

La actualidad más candente (14)

Documertar APIs - Meetup.js
Documertar APIs - Meetup.jsDocumertar APIs - Meetup.js
Documertar APIs - Meetup.js
 
CloudCamp - Big Data – La revolución de los datos
CloudCamp - Big Data – La revolución de los datosCloudCamp - Big Data – La revolución de los datos
CloudCamp - Big Data – La revolución de los datos
 
Automatización del despliegue de aplicaciones multi cloud
Automatización del despliegue de aplicaciones multi cloudAutomatización del despliegue de aplicaciones multi cloud
Automatización del despliegue de aplicaciones multi cloud
 
software APACHE.
software APACHE.software APACHE.
software APACHE.
 
TAREA DE ALOJAMIENTO
TAREA DE ALOJAMIENTOTAREA DE ALOJAMIENTO
TAREA DE ALOJAMIENTO
 
Big data2
Big data2Big data2
Big data2
 
DocumentDB la base de datos NoSql de Microsoft Azure
DocumentDB la base de datos NoSql de Microsoft AzureDocumentDB la base de datos NoSql de Microsoft Azure
DocumentDB la base de datos NoSql de Microsoft Azure
 
Arquitectura a escala
Arquitectura a escalaArquitectura a escala
Arquitectura a escala
 
Azure Realtime analytics: Análisis de datos en tiempo real
Azure Realtime analytics: Análisis de datos en tiempo realAzure Realtime analytics: Análisis de datos en tiempo real
Azure Realtime analytics: Análisis de datos en tiempo real
 
Orquestación de contenedores con Kubernetes
Orquestación de contenedores con KubernetesOrquestación de contenedores con Kubernetes
Orquestación de contenedores con Kubernetes
 
Azure Functions
Azure FunctionsAzure Functions
Azure Functions
 
Capas de acceso a datos .net escalables de verdad contra SQL Server
Capas de acceso a datos .net escalables de verdad contra SQL ServerCapas de acceso a datos .net escalables de verdad contra SQL Server
Capas de acceso a datos .net escalables de verdad contra SQL Server
 
motor de base de datos
motor de base de datosmotor de base de datos
motor de base de datos
 
Azure CosmosDB @ NETConf AR 2017
Azure CosmosDB @ NETConf AR 2017Azure CosmosDB @ NETConf AR 2017
Azure CosmosDB @ NETConf AR 2017
 

Destacado

Destacado (10)

JVM Reactive Programming
JVM Reactive ProgrammingJVM Reactive Programming
JVM Reactive Programming
 
Inizia il 2016 con Herbalife!!!
Inizia il 2016 con Herbalife!!!Inizia il 2016 con Herbalife!!!
Inizia il 2016 con Herbalife!!!
 
Serling dev team, development process
Serling dev team, development processSerling dev team, development process
Serling dev team, development process
 
Machine Learning & Apache Mahout
Machine Learning & Apache MahoutMachine Learning & Apache Mahout
Machine Learning & Apache Mahout
 
SGCE 2012 Lightning Talk-Single Page Interface
SGCE 2012 Lightning Talk-Single Page InterfaceSGCE 2012 Lightning Talk-Single Page Interface
SGCE 2012 Lightning Talk-Single Page Interface
 
SGCE 2015 REST APIs
SGCE 2015 REST APIsSGCE 2015 REST APIs
SGCE 2015 REST APIs
 
Elasticsearch JVM-MX Meetup April 2016
Elasticsearch JVM-MX Meetup April 2016Elasticsearch JVM-MX Meetup April 2016
Elasticsearch JVM-MX Meetup April 2016
 
Webinar Arquitectura de Microservicios
Webinar Arquitectura de MicroserviciosWebinar Arquitectura de Microservicios
Webinar Arquitectura de Microservicios
 
SOA Latam Workshop: Comparison Dropwizard, ratpack & Spring Boot
SOA Latam Workshop: Comparison Dropwizard, ratpack & Spring BootSOA Latam Workshop: Comparison Dropwizard, ratpack & Spring Boot
SOA Latam Workshop: Comparison Dropwizard, ratpack & Spring Boot
 
SGCE 2014 micro services
SGCE 2014 micro servicesSGCE 2014 micro services
SGCE 2014 micro services
 

Similar a SGNext Elasticsearch

Big data Jornada Fundación Ramón Areces
Big data Jornada Fundación Ramón ArecesBig data Jornada Fundación Ramón Areces
Big data Jornada Fundación Ramón Areces
Joaquín Salvachúa
 
Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con Redis
Alberto Gimeno
 

Similar a SGNext Elasticsearch (20)

Modernizando el rol de un Data Lake en una arquitectura Data Fabric
Modernizando el rol de un Data Lake en una arquitectura Data FabricModernizando el rol de un Data Lake en una arquitectura Data Fabric
Modernizando el rol de un Data Lake en una arquitectura Data Fabric
 
El futuro de Big Data: La calidad del análisis. Modelos efectivos y casos de uso
El futuro de Big Data: La calidad del análisis. Modelos efectivos y casos de usoEl futuro de Big Data: La calidad del análisis. Modelos efectivos y casos de uso
El futuro de Big Data: La calidad del análisis. Modelos efectivos y casos de uso
 
Introducción mongodb y desarrollo
Introducción mongodb y desarrolloIntroducción mongodb y desarrollo
Introducción mongodb y desarrollo
 
Desayuno de arquitectos: Big data en azure
Desayuno de arquitectos: Big data en azureDesayuno de arquitectos: Big data en azure
Desayuno de arquitectos: Big data en azure
 
Unidad 1 - Introducción a los Sistemas de Gestión de Bases de Datos.pdf
Unidad 1 - Introducción a los Sistemas de Gestión de Bases de Datos.pdfUnidad 1 - Introducción a los Sistemas de Gestión de Bases de Datos.pdf
Unidad 1 - Introducción a los Sistemas de Gestión de Bases de Datos.pdf
 
Big data Jornada Fundación Ramón Areces
Big data Jornada Fundación Ramón ArecesBig data Jornada Fundación Ramón Areces
Big data Jornada Fundación Ramón Areces
 
Un universo de datos. El fenómeno Big Data y la Ciencia
Un universo de datos. El fenómeno Big Data y la CienciaUn universo de datos. El fenómeno Big Data y la Ciencia
Un universo de datos. El fenómeno Big Data y la Ciencia
 
Base de datos
Base de datos Base de datos
Base de datos
 
Introducción a NoSQL
Introducción a NoSQLIntroducción a NoSQL
Introducción a NoSQL
 
Microsoft Data & AI Experience LATAM 2018 - Azure Cosmos DB
Microsoft Data & AI Experience LATAM 2018 - Azure Cosmos DBMicrosoft Data & AI Experience LATAM 2018 - Azure Cosmos DB
Microsoft Data & AI Experience LATAM 2018 - Azure Cosmos DB
 
Introducción a Azure DocumentDB
Introducción a Azure DocumentDBIntroducción a Azure DocumentDB
Introducción a Azure DocumentDB
 
Desarrollo Full Stack UAM.net
Desarrollo Full Stack UAM.netDesarrollo Full Stack UAM.net
Desarrollo Full Stack UAM.net
 
AWS Analytics Experience Argentina
AWS Analytics Experience Argentina AWS Analytics Experience Argentina
AWS Analytics Experience Argentina
 
ALMACEN DE DATOS.pptx
ALMACEN DE DATOS.pptxALMACEN DE DATOS.pptx
ALMACEN DE DATOS.pptx
 
01 Introduccion a Big Data y Hadoop.pdf
01 Introduccion a Big Data y Hadoop.pdf01 Introduccion a Big Data y Hadoop.pdf
01 Introduccion a Big Data y Hadoop.pdf
 
Introducción a Microsoft Azure SQL Data Warehouse
Introducción a Microsoft Azure SQL Data WarehouseIntroducción a Microsoft Azure SQL Data Warehouse
Introducción a Microsoft Azure SQL Data Warehouse
 
Base de datos
Base de datos Base de datos
Base de datos
 
Desarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQL
Desarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQLDesarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQL
Desarrollo de Almacenes de Datos con Sistemas Gestores de Bases de Datos NOSQL
 
Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con Redis
 
Arquitecturas de Referencia para los Repositorios y Preservación de Archivos
Arquitecturas de Referencia para los Repositorios y Preservación de ArchivosArquitecturas de Referencia para los Repositorios y Preservación de Archivos
Arquitecturas de Referencia para los Repositorios y Preservación de Archivos
 

Más de Domingo Suarez Torres

Más de Domingo Suarez Torres (20)

Cloud Native MX Meetup - Asegurando tu Cluster de Kubernetes
Cloud Native MX Meetup - Asegurando tu Cluster de KubernetesCloud Native MX Meetup - Asegurando tu Cluster de Kubernetes
Cloud Native MX Meetup - Asegurando tu Cluster de Kubernetes
 
Java Dev Day 2019 No kuberneteen por convivir
Java Dev Day 2019  No kuberneteen por convivirJava Dev Day 2019  No kuberneteen por convivir
Java Dev Day 2019 No kuberneteen por convivir
 
Contenedores 101 Digital Ocean CDMX
Contenedores 101 Digital Ocean CDMXContenedores 101 Digital Ocean CDMX
Contenedores 101 Digital Ocean CDMX
 
Retos en la arquitectura de Microservicios
Retos en la arquitectura de MicroserviciosRetos en la arquitectura de Microservicios
Retos en la arquitectura de Microservicios
 
Java Cloud Native Hack Nights GDL
Java Cloud Native Hack Nights GDLJava Cloud Native Hack Nights GDL
Java Cloud Native Hack Nights GDL
 
meetup digital ocean kubernetes
meetup digital ocean kubernetesmeetup digital ocean kubernetes
meetup digital ocean kubernetes
 
Peru JUG Micronaut & GraalVM
Peru JUG Micronaut & GraalVMPeru JUG Micronaut & GraalVM
Peru JUG Micronaut & GraalVM
 
DevFest Lima Corriendo cargas e trabajo seguras en GKE con Istio
DevFest Lima Corriendo cargas e trabajo seguras en GKE con IstioDevFest Lima Corriendo cargas e trabajo seguras en GKE con Istio
DevFest Lima Corriendo cargas e trabajo seguras en GKE con Istio
 
Cloud Native Development in the JVM
Cloud Native Development in the JVMCloud Native Development in the JVM
Cloud Native Development in the JVM
 
Cloud Native Mexico - Introducción a Kubernetes
Cloud Native Mexico - Introducción a KubernetesCloud Native Mexico - Introducción a Kubernetes
Cloud Native Mexico - Introducción a Kubernetes
 
Meetup DigitalOcean Cloud Native architecture
Meetup DigitalOcean Cloud Native architectureMeetup DigitalOcean Cloud Native architecture
Meetup DigitalOcean Cloud Native architecture
 
Cloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y Envoy
Cloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y EnvoyCloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y Envoy
Cloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y Envoy
 
Cloud Native Mexico Meetup enero 2018 Observability
Cloud Native Mexico Meetup enero 2018 ObservabilityCloud Native Mexico Meetup enero 2018 Observability
Cloud Native Mexico Meetup enero 2018 Observability
 
Cloud Native Mexico Presentacion
Cloud Native Mexico PresentacionCloud Native Mexico Presentacion
Cloud Native Mexico Presentacion
 
gRPC: Beyond REST
gRPC: Beyond RESTgRPC: Beyond REST
gRPC: Beyond REST
 
Devops Landscape
Devops LandscapeDevops Landscape
Devops Landscape
 
Ratpack JVM_MX Meetup February 2016
Ratpack JVM_MX Meetup February 2016Ratpack JVM_MX Meetup February 2016
Ratpack JVM_MX Meetup February 2016
 
SOA Latam 2015
SOA Latam 2015SOA Latam 2015
SOA Latam 2015
 
javerosmx-2015-marzo-groovy-java8-comparison
javerosmx-2015-marzo-groovy-java8-comparisonjaverosmx-2015-marzo-groovy-java8-comparison
javerosmx-2015-marzo-groovy-java8-comparison
 
Escribir código y ganarse la vida de paso
Escribir código y ganarse la vida de pasoEscribir código y ganarse la vida de paso
Escribir código y ganarse la vida de paso
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Último (10)

Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 

SGNext Elasticsearch

  • 1. Ya eres parte de la evolución Liquid Day Almacenamiento masivo en el sector bancario con StorageGRID Webscale & Elasticsearch Domingo Suarez Torres @domix
  • 2. Agenda • Storage • Alternativas • Caso de estudio • Lecciones aprendidas
  • 3. Sobre Domingo • @domix (twitter, github) • CTO @ HolaGus • CoFounder @ TheDataPub • YouTube Channel http://bit.ly/coderdog • Previamente • Solution Architect @ SyC • Chief Architect @ Grupo Expansión • CTO @ clickOnero
  • 6.
  • 8.
  • 9. Almacenamiento masivo • No solo para compañías de social media • Tendencia a la alta en compañías de bienes y servicios • Requerimientos legales • Archivo muerto • Data Analytics • Medios de información cada vez más ricos
  • 10. Tipos de almacenamiento • Archivos • File systems • Estructura jerárquica (Carpetas/Directorios) • Objeto (Blob storage/Object storage) • Contenedores (Buckets/Containers) • No estructurado, para acceder se requiere un conjunto de llaves • Identificador del contenedor + identificador del objeto
  • 12.
  • 14.
  • 15.
  • 16.
  • 17. Storage REST APIs • Amazon S3 • OpenStack Swift • CDMI (Cloud Data Management Interface) • By Storage Network Industry Association (SNIA) • Propietarias como Azure <- NO recomendado
  • 18. ¿Cuando usar cloud storage? • Pay as you go (presupuesto limitado) • Capacidad interna en la compañía para integrar el servicio con sistemas existentes • Información no restringida por las leyes locales/ federales (recuerden terrible caso del INE)
  • 20.
  • 21. Interface de appliances • Muchos están basados en estándares abiertos • OpenStack Swift • CDMI • Amazon S3 • Se ha convertido en un estándar de industria.
  • 22. Cuando usar un appliance • Tienes presupuesto • Tienes un centro de datos dedicado • Usas Colocation • Administras información restringida por las leyes locales/federales
  • 23. Alternativa OpenSource • LinkedIn recientemente anuncio Ambry • http://bit.ly/linkedin-ambry • Distributed Object Storage • https://github.com/ linkedin/ambry • API REST propietaria • Pensado para cloud • Escalamiento horizontal • Baja latencia • Optimizado para archivos pequeños y grandes
  • 24.
  • 25. A considerar • Object storage es el camino para alto escalamiento y gran capacidad de almacenamiento • Las soluciones de Object storage en general no ofrecen un mecanismo de búsqueda por metadata • Si se desea poder hacer búsquedas no hay soporte nativo, solo paginaciones de los contenedores y filtros sencillos (fecha, patrones de nombre)
  • 26. Caso de estudio • El Banco más grande de México • Solución para almacenamiento y recuperación de al menos 7 sistemas fuentes • Estados de cuenta (XMLs pequeños y algunos enormes) • Archivo digital (imágenes) • Bitácora de transacciones • Mi rol en el proyecto fue de Arquitecto de Solución.
  • 27. Requerimientos • Alta capacidad de almacenamiento (Petas) • Replicación en 2 centros de datos nacionales, ademas del banco (activo-activo) • Búsqueda de documentos basada en metadata • Alta disponibilidad • API RESTful para integrar en los sistemas internos • Seguridad • Cifrado, Confidencialidad, Integridad, No repudio
  • 28. Búsqueda por metadata • Metadata por tipo de documento • Atributos de metadata deben ser dinámicos • N documentos por N atributos de metadata • Millardos de documentos (do the math!) • Velocidad de consulta (2 segundos máximo)
  • 30. Almacenamiento • NetApp StorageGRID Webscale • Appliance de “fácil” configuración • Soporta Amazon S3, Swift y CDMI • Se usó Amazon S3. • Políticas de replicación
  • 31. Retos de almacenamiento • Millardos de documentos pequeños (~4K) • Capacidad de ingestar 5 millones de documentos por hora • Latencia de red • Procesos, Verificación de integridad, cifrado, etc. • Velocidad de recuperación
  • 33.
  • 34. You know, for search…
  • 35. Features • Real-Time Data. Yo (Domingo) digo que es cercano a Real-Time Data. • Massivamente Distribuido • Alta Disponibilidad • Full-Text Search • Document-Oriented • Schema-Free • Developer-Friendly, RESTful API • Extensible via plugins
  • 36. Conceptos • Cluster • Node • Index • Shard & Replica • Type(s) • Mapping • Documents
  • 37. Como se organiza la información en Elasticsearch
  • 40. Sharding es crucial • Un Shard es un indice fisico de Lucene • Limite de # documentos en un indice de Lucene es de 2 millardos. • Cuando un indice es creado se debe especificar el # de shards, no se puede cambiar después. ¡Cuidado! • ¡No hagan over-sharding del indice! ¡Cuidado!
  • 42. Shard allocation awareness • Los shards pueden ubicarse en nodos diferentes • Con metadata a nivel nodo podemos indicar a Elasticsearch que el nodo vive en cierto “rack” del data center • Con mas metadata podemos indicarle que el nodo vive en cierto data center • Con la combinación correcta, la replicación no compromete la integridad de los datos
  • 43. Elasticsearch setup • 2 Centros de datos. Geográficamente separados por 700 KM • 24 Nodos • 12 Nodos en cada Centro de datos • 10 Nodos de datos • 2 Nodos cliente • Cada VM • 16 CPUs • 32 GB RAM. 16 GB para Elasticsearch • 700 GB de Storage, para nodos de datos. • Centos 6
  • 46. Microservices • Desarrollados con SpringBoot y Java 8 • Ingesta de documentos • blob del documento y metadata (JSON) • Recuperación directa • Búsqueda basada en criterios (atributos de metadata). ES ~40 milisegundos de respuesta • Spring Cloud. Hystrix, Eureka, RxJava de Netflix • Escalar horizontal bajo demanda
  • 47. Lecciones aprendidas • Monitoreo de la infraestructura es elemental • VMs, Microservicios, Salud cluster de ES • Análisis muy detallado de los requerimientos de atributos metadata • Hizo falta involucrar un experto en gestión de documentos y archivos. • Falta de recursos con conocimientos de Elasticsearch. Evangelización dentro del banco. • Los bancos pueden adoptar nuevas tecnologías si se comunican eficientemente los beneficios.
  • 48. ¡Es divertido trabajar desde un data center!
  • 49. Ya eres parte de la evolución Liquid Day ¿Preguntas? @domix domingo.suarez@gmail.com http://domingosuarez.com http://www.slideshare.net/domingo.suarez http://bit.ly/coderdog