sgnext elasticsearch

49
Ya eres parte de la evolución Liquid Day Almacenamiento masivo en el sector bancario con StorageGRID Webscale & Elasticsearch Domingo Suarez Torres @domix

Upload: domingo-suarez-torres

Post on 11-Jan-2017

530 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: SGNext Elasticsearch

Ya eres parte de la evolución

Liquid Day

Almacenamiento masivo en el sector bancario con

StorageGRID Webscale & Elasticsearch

Domingo Suarez Torres @domix

Page 2: SGNext Elasticsearch

Agenda

• Storage

• Alternativas

• Caso de estudio

• Lecciones aprendidas

Page 3: SGNext Elasticsearch

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

Page 4: SGNext Elasticsearch

storage

Page 5: SGNext Elasticsearch

https://www.domo.com/blog/2015/08/data-never-sleeps-3-0/

Page 6: SGNext Elasticsearch
Page 7: SGNext Elasticsearch

https://www.domo.com/blog/2016/06/data-never-sleeps-4-0/

Page 8: SGNext Elasticsearch
Page 9: SGNext Elasticsearch

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

Page 10: SGNext Elasticsearch

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

Page 11: SGNext Elasticsearch

Cloud Storage

Page 12: SGNext Elasticsearch
Page 13: SGNext Elasticsearch

REST API propietario

Page 14: SGNext Elasticsearch
Page 15: SGNext Elasticsearch
Page 16: SGNext Elasticsearch
Page 17: SGNext Elasticsearch

Storage REST APIs• Amazon S3

• OpenStack Swift

• CDMI (Cloud Data Management Interface)

• By Storage Network Industry Association (SNIA)

• Propietarias como Azure <- NO recomendado

Page 18: SGNext Elasticsearch

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

Page 19: SGNext Elasticsearch

Opciones en Appliances

Page 20: SGNext Elasticsearch
Page 21: SGNext Elasticsearch

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.

Page 22: SGNext Elasticsearch

Cuando usar un appliance

• Tienes presupuesto

• Tienes un centro de datos dedicado

• Usas Colocation

• Administras información restringida por las leyes locales/federales

Page 23: SGNext Elasticsearch

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

Page 24: SGNext Elasticsearch
Page 25: SGNext Elasticsearch

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)

Page 26: SGNext Elasticsearch

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.

Page 27: SGNext Elasticsearch

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

Page 28: SGNext Elasticsearch

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)

Page 29: SGNext Elasticsearch

Solución

Page 30: SGNext Elasticsearch

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

Page 31: SGNext Elasticsearch

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

Page 32: SGNext Elasticsearch

Búsqueda de metadata

Page 33: SGNext Elasticsearch
Page 34: SGNext Elasticsearch

You know, for search…

Page 35: SGNext Elasticsearch

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

Page 36: SGNext Elasticsearch

Conceptos• Cluster

• Node

• Index

• Shard & Replica

• Type(s)

• Mapping

• Documents

Page 37: SGNext Elasticsearch

Como se organiza la información en Elasticsearch

Page 38: SGNext Elasticsearch

Nodes & shards

Page 39: SGNext Elasticsearch

Indexing documents

Page 40: SGNext Elasticsearch

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!

Page 41: SGNext Elasticsearch

Distributed indexing

Page 42: SGNext Elasticsearch

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

Page 43: SGNext Elasticsearch

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

Page 44: SGNext Elasticsearch

Cluster de Elasticsearch

Page 45: SGNext Elasticsearch

API REST

Page 46: SGNext Elasticsearch

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

Page 47: SGNext Elasticsearch

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.

Page 48: SGNext Elasticsearch

¡Es divertido trabajar desde un data center!

Page 49: SGNext Elasticsearch

Ya eres parte de la evolución

Liquid Day

¿[email protected]@gmail.com

http://domingosuarez.com

http://www.slideshare.net/domingo.suarez

http://bit.ly/coderdog