SGNext Elasticsearch
-
Upload
domingo-suarez-torres -
Category
Technology
-
view
530 -
download
3
Transcript of 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
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
¿[email protected]@gmail.com
http://domingosuarez.com
http://www.slideshare.net/domingo.suarez
http://bit.ly/coderdog