Arquitectura de sistemas: Título: AnalyticsMOOCSolución TIC Big Data para entornos MOOC Número de expediente: TSI100105-2014-192 Código: AVZ14002 Edición: 1 Fecha: 11/12/2014 Persona de Contacto: Carlos Vicente Corral Telefónica Learning Services Cuadro de control de firmas EDICIÓN FECHA ELABORADO 1 Diciembre 2014 Carlos Vicente Corral APROBADO POR 2 3 4 AVZ14002 Edición: 1 Arquitectura de Sistemas Propiedad de Telefónica Learning Services. Prohibida cualquier reproducción, distribución o comunicación pública, salvo autorización expresa. Fecha:11/12/2014 Página 1 Telefónica Learning Services Control de cambios Cumplimentar sólo en caso de cambios sobre la primera edición del documento Edición Fecha Apartados que cambian Descripción del cambio 1 2 3 AVZ14002 Edición: 1 Arquitectura de Sistemas Propiedad de Telefónica Learning Services. Prohibida cualquier reproducción, distribución o comunicación pública, salvo autorización expresa. Fecha:11/12/2014 Página 2 Telefónica Learning Services Índice 1. OBJETIVO DEL DOCUMENTO ................................................................................................. 3 2. ARQUITECTURA DEL SISTEMA PROPUESTA ....................................................................... 3 3. DESCRIPCIÓN DE LAS TECNOLOGÍAS ELEGIDAS PARA EL PROYECTO. ........................ 6 3.1. BASE DE DATOS DISTRIBUIDA. ..................................................................................................................... 6 3.2. SISTEMA DE CONTADORES. ......................................................................................................................... 6 3.3. SISTEMA DE LEARNING ANALYTICS EN DIFERIDO. .......................................................................................... 6 3.4. SISTEMA DE MACHINE LEARNING. ............................................................................................................... 6 3.5. SISTEMA DE REPORTING. ............................................................................................................................ 7 3.6. SISTEMA DE DASHBOARD EN TIEMPO REAL. ................................................................................................. 7 1. Objetivo del documento El presente documento describe la arquitectura de sistemas y arquitectura de software necesario para ampliar Wemooc, en una solución basada en Big Data y Learning Analytics. Los objetivos del proyecto son: Modificar la arquitectura del sistema para poder escalar de forma lineal. Ello implica sobre todo cambiar el sistema de base de datos, por una base no distribuida. Realizar un sistema de learning analytics sobre los datos que almacena Wemooc. Existirán tres subsistemas: o Un sistema de analíticas en tiempo real basado en dashboards. o Un sistema de analíticas en procesos batch, que calculan analíticas complejas. o Un sistema de recomendaciones de cursos para los usuarios basados en algoritmos de Machine Learning. Es importante además que los desarrollos que se realicen y el cambio de arquitectura sean optativos a Wemooc, es decir, que en proyectos sencillos, pueda seguir usándose con bases de datos relacionales estándar, y que en lo posible los sistemas de learning analitics sigan funcionando en dicho caso. Este punto es especialmente complejo, ya que implica modificar el código también de Liferay en algunos puntos. 2. Arquitectura del sistema propuesta La arquitectura del sistema se refleja en el siguiente diagrama. AVZ14002 Edición: 1 Arquitectura de Sistemas Propiedad de Telefónica Learning Services. Prohibida cualquier reproducción, distribución o comunicación pública, salvo autorización expresa. Fecha:11/12/2014 Página 3 Telefónica Learning Services Para poder explicar los cambios, empezamos una comparación con la arquitectura actual: El funcionamiento de la actual arquitectura tiene cierta escalabilidad en algunos puntos: AVZ14002 Edición: 1 Arquitectura de Sistemas Propiedad de Telefónica Learning Services. Prohibida cualquier reproducción, distribución o comunicación pública, salvo autorización expresa. Fecha:11/12/2014 Página 4 Telefónica Learning Services Es posible aumentar el rendimiento de la parte de frontend ampliando el número de servidores Liferay y o Apache. Puede configurarse el buscador en cluster. Es posible ampliar la parte de SQLServer con un sistema de cluster basado en mirror. Los problemas que tiene el sistema actual son los siguientes: Por el propio diseño de las bases de datos relacionales, estas no pueden hacer un escalado lineal del número de escrituras por segundo que se realizan, y tienen problemas a la hora de manejar tablas con miles de millones de registros. Esto se puede remediar con mecanismos de sharding pero hace muy complejo el desarrollo, y por otro lado, dificulta enormemente el poder extraer informes del sistema. Es por tanto necesario cambiar, sobre todo para las tablas que más crecen, el sistema de persistencia, por uno plenamente distribuido que permita escalar linealmente. Muchos de los datos del sistema, p.e. la entrega de tareas P2P, se almacenan en el sistema de ficheros. Actualmente para mantener la coherencia del cluster, se utilizan carpetas compartidas por NFS, pero este sistema tiene limitación de escalabilidad. Actualmente los informes que existen por defecto, atacan directamente a la base de datos de producción o a un mirror, pero este sistema empieza a tener problemas de escalado. Por otro lado, el hecho de disponer de un sistema de base de datos distribuido NoSQL impide utilizar este mecanismo para realizar agrupaciones de datos, y es necesario utilizar soluciones Big Data para ello. Por otro lado, el sistema es muy poco flexible, y permite pocos estudios. Los cambios realizados en la arquitectura son los siguientes: Utilizar la base de datos Cassandra para el almacenamiento de los datos transaccionales. Esto permite escalar linealmente el sistema, pero como contra, no permite utilizar SQL y sistemas tradicionales para la extracción de informes. Sustituir el sistema actual de informes, por un sistema de BI como Pentahoo. Esto permite diseñar informes interactivos para poder estudiar los datos de una forma más flexible. Esto implica 2 componentes más. o Un componente de Liferay que permita visualizar los dashboards e informes de Pentahoo como parte de la solución entera. o Una base de datos DataWarehouse, que contengan los datos precocinados para los informes. Dado que es prácticamente imposible trabajar directamente con Cassandra con fines estadísticos, es necesario implementar una serie de trabajos que permitan extraer de la misma, aquellos datos precocinados con los que se alimenta el DataWarehouse. La solución elegida es SPARK, un sistema de trabajos de Big Data que tiene una buena conectividad tanto con Cassandra como con Bases de datos Relacionales. Con SPARKML además se realizarán los procesos de machine learning que se necesitan para realizar los procesos de recomendaciones. Aparte de este sistema, se necesitan algunos datos en tiempo real de la plataforma que permitan tener una visión de lo que está pasando en el momento en la plataforma. Estos contadores se almacenarán como contadores distribuidos de Cassandra, y habrá unos procesos periódicos de SPARK cada pocos minutos que realizarán el cálculo de AVZ14002 Edición: 1 Arquitectura de Sistemas Propiedad de Telefónica Learning Services. Prohibida cualquier reproducción, distribución o comunicación pública, salvo autorización expresa. Fecha:11/12/2014 Página 5 Telefónica Learning Services los mismos, para ser visualizados directamente desde unos portlets desarrollados al efecto, sin necesidad de pasar por el dashboard de Pentahoo. 3. Finalmente habrá que modificar el sistema de almacenamiento de ficheros por uno que permita escalado lineal. En este caso tendremos 2 opciones. Una es usar sistemas de Amazon, que tiene el problema de que ata la solución a un proveedor. Alternativamente se proporcionará un sistema que usa cassandra como repositorio de ficheros para Liferay. Descripción de las tecnologías elegidas para el proyecto. A continuación se listan las tecnologías elegidas para diseñar la arquitectura, y su uso. 3.1. Base de datos Distribuida. Se utilizará Apache Cassandra como base de datos distribuida en lugar de una base de datos Relaciona, como MySQL, que es la usada habitualmente. En todo caso, no se almacenará en cassandra todos los contenidos de la base de datos relacional, sino solo aquellas tablas que tienen el mayor crecimiento que son a su vez, aquellas que acumulan las trazas de las actividades de los usuarios. 3.2. Sistema de contadores. Para los principales datos del dashboard se implementará un sistema de contadores en tiempo real. que permitan disponer de forma inmediata de las principales métricas de seguimiento de los cursos a varios niveles. Estos contadores, se implementarán como contadores distribuidos de cassandra. 3.3. Sistema de learning analytics en diferido. Este sistema el responsable de realizar los cálculos distribuidos de las diferentes learning analítics y reports que se definan. Se utilizará Apache Spark, ya que la integración con Cassandra es muy buena, el rendimiento es muy superior a Hadoop u otros sistemas similares, y es posible montarlo de forma distribuida de forma sencilla. En este sistema se crearán los trabajos de cálculo de las principales learning analitics, que posteriormente serán almacenados como datos precalculados, para su posterior visualización en el sistema de reporting. 3.4. Sistema de Machine Learning. El sistema de Machine Learning escogido para implementar las recomendaciones personalizadas será SPARML. Se realizará un proceso diario que calcule las recomendaciones en base a los cursos que haya hecho o visto, y la categorización de los mismos para personalizar las recomendaciones. Adicionalmente se montará un sistema de mailing para enviar periódicamente las recomendaciones a los usuarios. AVZ14002 Edición: 1 Arquitectura de Sistemas Propiedad de Telefónica Learning Services. Prohibida cualquier reproducción, distribución o comunicación pública, salvo autorización expresa. Fecha:11/12/2014 Página 6 Telefónica Learning Services 3.5. Sistema de reporting. El sistema de Reporting se utilizará la suite de BI de Pentaho. Se implementarán una serie de Dashboards contra el sistema de Data Warehouse. Se desarrollará además una serie de portlets en Liferay que permitan acceder a dichos dashboards desde el portal, sin necesidad de cambiar de entorno. 3.6. Sistema de Dashboard en tiempo real. Este sistema será desarrollado internamente como una aplicación de Liferay compuesta de una serie de portlets que permitan la visualización integrada de dicha información en el sistema, a partir de los contadores actualizados en tiempo real. Se utilizará una suite de componentes gráficos que permiten la recarga dinámica para ver la evolución al instante de determinados parámetros. AVZ14002 Edición: 1 Arquitectura de Sistemas Propiedad de Telefónica Learning Services. Prohibida cualquier reproducción, distribución o comunicación pública, salvo autorización expresa. Fecha:11/12/2014 Página 7