Hoy nos complace anunciar el lanzamiento del Abrir edX Analytics Devstack y quiero tomarme un tiempo para explicar cómo surgió el proyecto. Muchas gracias a Philippe Chiu y Braden MacDonald por sus heroicos esfuerzos para hacer realidad este proyecto.
En la primera Hackathon de la Conferencia Open edX del año pasado, Philippe Chiu (de IONISx) sugirió un proyecto increíble: ejecutar toda la pila de análisis de edX desde un contenedor Docker. El objetivo de este proyecto era desarrollar algo como la pila de desarrolladores (Devstack) que utilizan la mayoría de los desarrolladores de Open edX cuando desarrollan parches para la plataforma edx. Esta "pila de desarrollo de análisis" contendría todas las dependencias externas que necesitan los sistemas de análisis, instaladas en un contenedor convenientemente aislado.

Diagrama que muestra todos los servicios que coexisten dentro del contenedor de análisis devstack
El equipo de análisis de edX había estado realizando la mayor parte de nuestro desarrollo en clústeres de Elastic MapReduce (en AWS), que convenientemente incluye todas las dependencias necesarias para ejecutar nuestro código. Sin embargo, este enfoque es engorroso y prohibitivamente costoso para muchos contribuyentes de código abierto. En su lugar, queríamos crear una pila de análisis dentro de un contenedor que pudiera ingerir registros de seguimiento (datos de flujo de clics), procesarlos y mostrar los resultados en Insights (el panel de análisis proporcionado a los instructores y al personal del curso que trabaja en los cursos de edX). Philippe y yo pasamos los siguientes dos días analizando todas las partes que debían suceder para lograr ese objetivo. Al final, habíamos llegado bastante lejos. Pudimos ejecutar la canalización de datos (edx-analytics-tubería), pero aún necesitaba cablear algunos de los servicios. Después del hackathon, dediqué un poco de tiempo a impulsarlo, principalmente al convertir la configuración basada en Dockerfile en roles y libros de jugadas ansible. Esta adición nos permitió ejecutar la configuración de ansible en cualquier lugar que elegimos (incluso durante un proceso de creación de imágenes de Docker, una creación de AMI o un paso de aprovisionamiento de imágenes vagas).
Avance rápido unos meses, y Braden MacDonald (de OpenCraft) buscaba hacer algunas contribuciones significativas a los servicios de análisis. También vio la necesidad de un equivalente devstack para los servicios de análisis de edX y desarrolló una imagen vagabunda completamente funcional que puede ejecutar toda la pila. Al hacerlo, descubrió un montón de detalles que habían quedado pendientes después del esfuerzo inicial.
El equipo de ingeniería de edX quedó tan impresionado con esta enorme contribución que pensamos que tenía sentido fusionarlo con el trabajo existente y producir un producto final que pudiera:
- Se puede instalar en un Open edX devstack normal o se puede girar en una máquina virtual completamente separada.
- Se ejecuta en la misma máquina que el LMS, lo que permite una configuración de red significativamente simplificada, sin necesidad de preocuparse por el reenvío de puertos y otras complicaciones similares.
- Estar estrechamente integrado con el repositorio de configuración/edx, lo que permite una futura implementación simplificada en sandboxes y otros entornos de desarrollo de edX.
- Use la misma lógica de implementación que se usa en producción.
- Aproveche otra infraestructura de edX que admita la implementación y administración de estas aplicaciones implementables de forma independiente (IDA).
el resultado neto es un conjunto de roles y manuales de ansible que se han fusionado en el repositorio edx/configuration. Ahora, con solo unos pocos comandos, los desarrolladores pueden soportar un entorno de desarrollo analítico completo dentro de una máquina virtual. Dentro de este entorno, puede hacer clic en el LMS, ejecutar la canalización de datos y luego actualizar una página en Insights para ver cómo cambian los gráficos según sus acciones.
¿Quieres probarlo? Consulte la documentación en Analytics Devstack!
¿Quiere mejorar aún más el desarrollo de análisis? Esperamos extenderlo de las siguientes maneras:
- Nos gustaría poder ejecutar las pruebas de aceptación de canalización de datos en este entorno. Actualmente, hay algunos dependencias codificadas en S3. El equipo de ingeniería de edX planea hacer esto en un futuro cercano.
- Tenemos algunos elementos de configuración relacionados con análisis en el repositorio edx/edx-analytics-configuration y otros elementos en el repositorio edx/configuration. Nos gustaría idear una estrategia para reducir la complejidad de esta situación, moviendo la lógica de uno a otro, para que tenga un lugar a donde ir para encontrar cosas operativas relacionadas con el análisis.
- Haga que el procedimiento de implementación de edx-analytics-pipeline sea más idiomático y coherente con otros servicios, como Insights y Analytics Data API.
- Permita que Insights muestre los datos de hoy en lugar de mostrar siempre los datos de ayer. Algunos informes actualmente no muestran ningún cambio hasta el próximo día calendario.
No puedo agradecer lo suficiente a Braden y Philippe por poner todo esto junto y hacer posible que todos nosotros trabajemos en la pila de análisis de manera más fácil y efectiva. Esperamos ver qué cambios tiene en mente la comunidad de Open edX para Open edX Insights, y qué proyectos geniales se desarrollarán a partir de la Hackatón Open edX 2015! Esperamos verte ahí.
Gabe Mulley es ingeniero de software principal en el equipo de análisis de edX.
![]()