GreenPowerMonitor efficient and scalable big data architecture

GreenPowerMonitor diseña una arquitectura eficiente y escalable para procesar y almacenar time-series data

GreenPowerMonitor empezó su actividad en el desarrollo de soluciones de monitorización en el año 2007. Desde entonces, el número de plantas y variables monitorizadas ha aumentado año tras año. Hace poco, a principios del 2016, el volumen de datos que almacenamos superó el billón (1×1012) de filas.

Tres hechos para ilustrar esta tendencia al alza:

  • 400 millones (4×108) de datos nuevos cada día.
  • Más de 100.000 millones (1×1011) de filas recibidos en 2015, lo que supuso un crecimiento de un 30% respecto al 2014.
  • En 2016, según previsiones conservadoras, esta cifra aumentará hasta los 150.000 millones (1,5×1011) de filas. Un crecimiento de un 50% respecto al 2015.

Como se aprecia en la siguiente gráfica, el número de datos que procesamos y almacenamos diariamente ha crecido de forma exponencial. Sostener este crecimiento sin comprometer el rendimiento de nuestras aplicaciones ha supuesto un difícil reto para los equipos de Dev & Ops, que han tenido que esforzarse al máximo para exprimir cada ciclo de CPU y cada byte en disco.

Grafico

Evolución anual del volumen de datos recibidos. El valor de 2016 se ha estimado proyectando la media de la tasa de recepción diaria obtenida entre Enero y Febrero del 2016.

 

El modelo que hemos utilizado hasta ahora para gestionar los datos, desarrollado en los inicios de la compañía, estaba basado en un gestor de base de datos relacional y presentaba inconvenientes importantes que dificultaban la escalabilidad del sistema. Es por ello que en GreenPowerMonitor decidimos llevar a cabo un proyecto que tiene como objetivo desarrollar e implementar una nueva arquitectura que pueda escalar de forma coherente con nuestro ritmo de crecimiento actual y esperado en los próximos años.

En una fase inicial del proyecto se identificaron todos los requisitos de la arquitectura. Estos incluyen: minimizar la latencia en operaciones de lectura y escritura, permitir la deslocalización geográfica de los servicios, garantizar la alta disponibilidad de todos los elementos y dotar al sistema de la capacidad suficiente para utilizar herramientas que permitan explotar la información monitorizada. Antes de empezar la fase de diseño realizamos un estudio para determinar si existía alguna solución en el mercado capaz de cumplir con los requisitos y finalmente llegamos a la conclusión de que ninguna cubría con todos.

Por tanto, nos planteamos desarrollar una solución propia, que combinara conceptos y estrategias de las soluciones Big Data y NoSQL actuales, así como ideas propias, para cumplir con la totalidad de los objetivos fijados. La ausencia de soluciones adecuadas que se adapten a los requisitos de la gestión de plantas de producción de energías renovables nos ha forzado a investigar y desarrollar nuevas maneras de abordar el tratamiento y almacenamiento del flujo de datos característico de este sector.

La arquitectura que hemos implementado integra diferentes tecnologías y en términos generales se inspira en la arquitectura lambda (ver http://lambda-architecture.net). Esta estrategia permite crear un pipeline donde los datos se procesan en tiempo real y, gracias a esto, es posible cumplir con los requisitos de latencia y entregar datos agregados a las aplicaciones de monitorización en near real-time.

Architecture global overview (article web)

Esquema global de la arquitectura que presenta similitudes con la arquitectura lambda. El flujo de datos es encaminado a la capa de RT o Batch dependiendo de su criticidad.

 

El modelo de arquitectura lambda nos ofrece la capacidad de poder servir datos diarios agregados en tiempo real así como vistas de los datos históricos preagregadas en múltiples dimensiones, todo esto de forma transparente a las aplicaciones. Con la nueva arquitectura, alrededor del 99% de las peticiones de datos se están completando con latencias que no superan los 2 milisegundos.

Los datos que almacenamos en GPM provienen mayoritariamente de dispositivos físicos –sensores, por ejemplo– que miden alguna magnitud. Esta información es capturada en intervalos regulares, lo que da lugar a una serie de medidas asociadas a una referencia temporal y ordenadas cronológicamente. Las particularidades de este patrón de datos, comúnmente denominado “time series data”, hacen posible la explotación de técnicas novedosas que permiten optimizar la inserción y las queries de datos.

Una de estas técnicas son los índices con árboles fractales (ver http://oreil.ly/1RAezo8). En la arquitectura que hemos desarrollado implementamos este tipo de índices para almacenar los datos históricos. Esto nos permite aumentar notablemente la eficiencia en la inserción de datos y evitar la degradación de rendimiento que sufren los índices tradicionales, así podemos garantizar que el rendimiento de las lecturas de datos será óptimo a lo largo del tiempo.

La alta disponibilidad es uno de los objetivos principales de la arquitectura. Para abordar este requisito, se han creado nodos con replicación master-master, lo que permite que cualquiera de los nodos sea funcional, incluso en condiciones adversas, como un corte de red o la caída de un nodo. Este tipo de replicación presenta importantes diferencias respecto a arquitecturas tradicionales master-slave, donde existe sólo un nodo funcional, y los otros están en estado de “reserva”.

Distributed architecture emphasys (article web)

Funcionamiento distribuido de la arquitectura. Las aplicaciones del cliente pueden solicitar datos a cualquiera de las réplicas.

 

 

Esto no se limita sólo a los nodos de datos sino que ha sido un principio de diseño presente en el desarrollo de todos los componentes. De hecho, todos los elementos permiten ser ejecutados de forma distribuida con instancias redundadas. Para evitar mecanismos de centralización, a los que recurren muchos sistemas distribuidos, se han utilizado estrategias y estructuras de datos que no requieren coordinación entre las distintas instancias (lock-free) lo que sitúa a la arquitectura dentro del paradigma shared-nothing. Esto tiene importantes ventajas: gracias a que cada componente es auto-suficiente e independiente de los demás se aporta un alto grado de tolerancia a fallos y se posibilita la deslocalización geográfica de los servicios, lo que es especialmente importante en un contexto claro de internacionalización.

Otro de los puntos fuertes de la arquitectura es la optimización del uso de espacio en disco. La vida útil de una planta fotovoltaica es de, al menos, 25 años. Esto obliga a tener una política de gestión de datos históricos fuera de lo normal. Para ello utilizamos algoritmos de compresión avanzados que nos permiten reducir el tamaño de los datos hasta 10 veces respecto a su tamaño original. Gracias a un ajuste adecuado del tamaño de los bloques de compresión, conseguimos un alto nivel de compresión sin penalizar las operaciones de lectura e inserción.

Esto es relevante porque la tasa de compresión y la rapidez con la que se pueden realizar las operaciones de compresión o descompresión dependen íntimamente del tipo de datos y del tamaño de los bloques de compresión. En nuestro caso hemos optimizado los parámetros de compresión para maximizar su eficiencia para los “time series data”.

Este proyecto ha recibido la ayuda del Plan Avanza 2014 y ha implicado a varios equipos multidisciplinares dentro de GreenPowerMonitor así como expertos independientes. Actualmente, el proyecto se encuentra en fase de despliegue de la arquitectura a producción, después de haber sido sometida a un extenso período de pruebas en nuestro entorno de desarrollo.

En resumen: en los últimos dos años hemos diseñado, implementado y desplegado una arquitectura Big Data adaptada a las previsiones de crecimiento actuales y que nos permite cumplir con estrictos requisitos de escalabilidad, latencia, alta disponibilidad y robustez. La utilización de mecanismos de compresión adaptados a los “time series data” nos permite maximizar la relación coste-efectividad de nuestro sistema de almacenamiento.

Consideramos que esta arquitectura es óptima para nuestro caso de uso ya que nos permite sostener el crecimiento mejorando la capacidad de respuesta del sistema: podemos servir datos crudos y agregados con latencias que no superan los 2ms y entregar los datos a las aplicaciones en menos de un segundo. Gracias a esto, somos capaces de explotar la inmediatez característica de los datos monitorizados y transformarla en valor.

Además, el uso de nuevos algoritmos abre la puerta al desarrollo de sistemas de “data mining” y forecasting que permitirán extraer información valiosa de las plantas de producción de energía renovable. Concretamente, se plantea como una línea futura el desarrollo de “sistemas expertos” que permitan realizar análisis mediante mecanismos de correlación de datos así como machine learning.

GreenPowerMonitor apuesta por la innovación continua y creemos que, conceptualmente, el diseño de la nueva arquitectura aporta un alto valor dentro del ecosistema de aplicaciones Big Data y NoSQL ya que ofrece una solución novedosa y probada para el sector de la gestión de plantas de energías renovables y, en general, para aquellos sectores que operen y almacenen un gran volumen de “time series data”.

Estamos encantados de recibir feedback sobre nuestros proyectos. Si tienes alguna duda, sugerencia o quieres saber más sobre nuestra arquitectura, contáctanos por mail en bigdata@greenpowermonitor.com.

Categories Noticias

david