Blog

Arquitectura para el procesamiento de alto rendimiento

27/01/2020

Analiza tus datos antes de ser engullido por ellos

En estos años de la era digital hemos ido resolviendo los problemas que han ido surgiendo según las necesidades del momento. Y ahora volcados con la fiebre de analizar todo lo analizable no iba a ser menos. Podría decir que todo esto realmente se originó cuando empezamos a digitalizar la información de las personas, datos de las investigaciones, informes …, Primer reto conseguido, aquí el problema no era el volumen, solo unos cuantos digitalizaban su información. Más adelante más empresas, y lo que no eran empresas, se sumaron a digitalizar su información adaptándonos a esas necesidades con máquinas más potentes. Hasta llegar a la situación actual en la que las propias máquinas generan más información, operan automáticamente y cualquier dispositivo registra información potencialmente analizable; lo que llamamos internet de las cosas (IoT → Internet of Things) . Este es el reto en el que estamos ahora, una máquina es más rápida que un conjunto alto de personas, pero, ya si las propias máquinas generan información que queremos analizar, nos obliga a cambiar la filosofía a la hora de analizar nuestros datos.

Puntos de vista en el tratamiento de datos

Con el tratamiento de los datos existen diferentes puntos de vista y diferentes necesidades. En un desarrollo de proyectos orientados a los datos tendremos dos aspectos a tener en cuenta:

  • El científico de datos: aplicando los algoritmos, procesos estocásticos y definiendo los modelos acordes al objetivo que se quiere analizar.
  • El ingeniero de datos: definiendo la mejor arquitectura para poder procesar el volumen de datos de la forma más eficientemente posible.

En relación a la arquitectura también tendremos que tener en cuenta las necesidades del proyecto. Cada proyecto es un mundo pero para simplificar nos centraremos en dos necesidades importantes que podrás deducir con estas dos frases.

Cuanto más información tengas, mejores serán tus decisiones

  • Cuanto más información tengas y puedas analizar mejor serán tus decisiones. Aquí es donde entra la matemática descriptiva y el mundo del Big Data, donde han ido surgiendo tecnologías y servicios como Hadoop, Spark, Hive, Pig, Hbase, Tez, Cassandra/Scylla, BigQuery… y así mejorar los tiempos en esta fase de análisis.
  • La información que no llega a tiempo y/o que no puedes reaccionar a tiempo no sirve de nada o sirve de muy poco. Aquí es donde entra la matemática predictiva y el mundo del Fast Data donde, junto a las tecnologías mencionadas anteriormente, surgen otras tecnologías como Kafka, Storm, Flink…

Esta es nuestra visión y, como puedes comprobar, en los últimos años han surgido muchas tecnologías con similares características o que se complementan.

Durante estos años ASPgems ha ido definiendo su propio sistema de procesamiento de datos de alto rendimiento para resolver lo que hemos dividido como Big Data y Fast Data.
Las tecnologías adoptadas en ASPgems para llevar a cabo este tipo de proyectos son:

  • Play Framework
  • Akka
  • Spark
  • Kafka
  • Flink
  • Cassandra/Scylla
  • Elasticsearch
  • Docker
  • Kubernetes
  • Prometheus / Alert-Manager

Arquitectura para procesamiento de alto rendimiento

Este es nuestro ecosistema, pero, según el alcance del proyecto y el cliente, implantamos o no ciertas tecnologías, ya que un cliente podría solo necesitar la parte descriptiva y con; informes diarios, semanales o mensuales es suficiente para ser líderes en su sector. Pero… ¿Por qué este ecosistema y no otro?

Volviendo unos renglones atrás hay un punto clave que hace que tengamos que evolucionar en nuestra forma de desarrollar y hacer software para este tipo de proyectos orientado en los datos y es que cualquier dispositivo puede generar información y ya no basta con tener un cojo-mainframe y escalar verticalmente. Nuestro sistema tiene que ser totalmente escalable de forma horizontal (Combatir la información de dispositivos con un ejército de más máquinas). El ecosistema con el que trabaja ASPgems lo permite, es el pilar principal para que una tecnología sea añadida o reemplace a otra en dicho ecosistema.

Para poder describir más en detalle las decisiones que nos han llevado a definir este ecosistema en ASPgems, primero tengo que hacer la siguiente identificación de componentes clasificados en:

  • Flujo de entrada
  • Procesamiento de datos (streaming)
  • Persistencia de datos
  • Análisis de datos
  • Interfaz de consulta (API REST)
  • Administración, Operación y Monitorización

Para el flujo de entrada de datos nuestra tecnología adoptada ha sido Kafka. La plataforma de streaming distribuida Kafka nos proporciona el servicio necesario para la ingesta de datos procedentes de una variedad de fuentes de datos (sockets, sondas, ficheros de log…)
Kafka permite:

  • Publicación y suscripción del flujo de registro, similar a la cola de mensajes.
  • Almacenar el flujo de registro de un modo tolerante a fallos.
  • Procesar el flujo de datos tal cual ocurre.
  • Todo ello organizado en topics

Desde el punto de vista del procesamiento de datos (streaming), Flink nos permite procesar eventos de uno o más flujos (en este caso desde los topics de Kafka), proporcionando un estado de tolerancia a fallos, lo cual nos permite alcanzar la consistencia de datos hasta persistir la información. Gracias a Flink podremos procesar un gran volumen de datos con una latencia de nivel de milisegundos.

  • En este punto tendremos nuestra fase ETL
  • También podremos implementar procesos para notificar a otros sistemas aproximándonos al Real Time, y así ejecutar las acciones oportunas a tiempo.

Para la persistencia de datos, Cassandra o su equivalente en C++ Scylla (ambos usados en diferentes proyectos) nos permitirá la persistencia de la información con un alto rendimiento de inserciones por milisegundo. Además de otras características como tolerancia a fallos gracias a su cluster en anillos. En otros proyectos por ejemplo de carácter más “semántico”, es decir procesamiento de lenguaje natural NLP (natural language processing) se ha usado Elasticsearch. Según el proyecto es necesario tomar la decisión de usar uno, otro o ambos para su desarrollo.

Spark, nuestra tecnología estrella para el análisis de datos

Sobre el análisis de datos, Spark es nuestra tecnología estrella, nos permitirá realizar análisis de los datos procesados de Flink, los cuales fueron almacenados en Cassandra o ScyllaDB. Gracias a los conectores de Cassandra se podrá hacer un tratamiento de los datos eficientemente dentro del cluster de Cassandra.

Tendremos toda la potencia de análisis gracias a paquetes como Pyspark o SparkR por si fuera necesario que departamentos del cliente necesiten integrarse para completar sus análisis desde python o R y Mllib para llevar nuestro datos a una predicción a futuro. Aunque Spark también soporta streaming, preferimos usar Flink para esta fase y usar la parte batch de Spark para análisis de información ya consolidada en Cassandra, Scylla o Elasticsearch. En modo batch estaremos hablando de latencias de segundos a minutos pero con la capacidad de procesar un volumen alto de información. Aun así, siempre es bueno tener la posibilidad de trabajar en “streaming” desde spark.

Nos falta el poder interactuar con este sistema de procesamiento de datos de alto rendimiento, y para ello integramos Play framework y AKKA. Nos permitirá proporcionar un punto de acceso a la información procesada y analizada por el resto de componente de la arquitectura. Altamente integrable con el resto de los componentes dentro de esta arquitectura: kafka, Spark y Cassandra. Y alineado con la arquitectura de altamente escalable.

La complejidad del entorno es diferente a los desarrollos tradicionales de monolitos, por ello ASPgems apuesta también en tecnologías como Docker, Kubernetes, Prometheus y Alert-Manager para la administración, operación y monitorización del ciclo de vida del proyecto.

Como he dicho antes, el ecosistema puede llegar a ser complejo, pero el problema que necesitamos resolver no es fácil. Recordar que:

    • Conseguir procesar toda la información en el momento preciso puede llegar a marcar la diferencia.
    • El volumen de datos ha ido en aumento en los últimos años e incrementando.
    • Tener toda la información te ayudará a tomar la mejor decisión.
    • Sin embargo transformar la información en bruto en datos de valor puede llegar a ser muy costoso, y no obtener dicho dato de valor en el momento necesario es como no tener dicha información.
    • El rango de tiempo aceptable puede llegar a ser muy variado, aceptando días a solo microsegundo.
    • Y por supuesto el volumen de información que se debe procesar puede llegar a ser inmanejable para los sistemas tradicionales.

    Por ello necesitamos un nuevo sistema de procesamiento de datos y este es con el que ASPgems apuesta para resolver estos tipos de proyectos.

 

Un post escrito por David Alonso

También te puede gustar…

Caso de éxito: Binfluencer

Caso de éxito: Binfluencer

Binfluencer es otra de las empresas que ha confiado en ASPgems. En este caso de éxito te contamos nuestra colaboración con ellos.

ASPgems icon
C/ Sextante, 9
28023 Madrid,
España

Hablemos.

A %d blogueros les gusta esto: