Aujourd'hui, nous avons le plaisir de vous annoncer la sortie du Ouvrir la pile de développement edX Analytics et je veux prendre le temps d'expliquer comment le projet est né. Un grand merci à Philippe Chiu et Braden MacDonald pour leurs efforts héroïques dans la réalisation de ce projet.
Lors du tout premier hackathon de la conférence Open edX de l'année dernière, Philippe Chiu (de IONISx) a suggéré un projet génial : courir l'ensemble de la pile d'analyse edX depuis un conteneur Docker. L'objectif de ce projet était de développer quelque chose comme la pile de développement (Devstack) qui est utilisée par la plupart des développeurs Open edX lorsqu'ils développent des correctifs pour la plate-forme edx. Cette "pile de développement analytique" contiendrait toutes les dépendances externes nécessaires aux systèmes d'analyse, installées sur un conteneur isolé de manière pratique.

Diagramme montrant tous les services coexistant à l'intérieur du conteneur devstack d'analyse
L'équipe d'analyse d'edX a effectué la majeure partie de notre développement sur des clusters Elastic MapReduce (sur AWS), qui incluent commodément toutes les dépendances nécessaires pour exécuter notre code. Cependant, cette approche est lourde et d'un coût prohibitif pour de nombreux contributeurs open source. Au lieu de cela, nous voulions mettre en place une pile d'analyses à l'intérieur d'un conteneur qui pourrait ingérer des journaux de suivi (données de flux de clics), les traiter et afficher les résultats sur Analyses (le tableau de bord d'analyse fourni aux instructeurs et au personnel de cours travaillant sur les cours edX). Philippe et moi avons passé les deux jours suivants à pirater tous les éléments nécessaires pour atteindre cet objectif. À la fin, nous étions allés assez loin. Nous avons pu exécuter le pipeline de données (pipeline-edx-analytics), mais encore besoin de câbler certains des services. Après le hackathon, j'ai passé un peu de temps à le faire avancer, principalement en convertissant la configuration basée sur Dockerfile en rôles et playbooks ansibles. Cet ajout nous a permis d'exécuter la configuration ansible partout où nous avons choisi (y compris lors d'un processus de création d'image Docker, d'une génération d'AMI ou d'une étape de provisionnement d'image vagabonde).
Avance rapide de quelques mois, et Braden MacDonald (de OpenCraft) cherchait à apporter des contributions significatives aux services d'analyse. Il a également vu le besoin d'un équivalent devstack pour les services d'analyse edX et a développé une image vagabonde entièrement fonctionnelle qui peut exécuter l'ensemble de la pile. Ce faisant, il a compris un tas de détails qui étaient restés en suspens après l'effort initial.
L'équipe d'ingénierie d'edX a été tellement impressionnée par cette contribution massive que nous avons pensé qu'il était logique de la fusionner avec le travail existant et de produire un produit final qui pourrait :
- Être installé dans une pile de développement Open edX normale ou être lancé dans une machine virtuelle entièrement distincte.
- Exécutez sur la même machine que le LMS, ce qui permet une configuration réseau considérablement simplifiée, sans avoir à vous soucier de la redirection de port et d'autres complications similaires.
- Être étroitement intégré au référentiel edx/configuration, permettant un futur déploiement simplifié vers des bacs à sable et d'autres environnements de développement edX.
- Utilisez la même logique de déploiement que celle utilisée en production.
- Tirez parti d'autres infrastructures edX qui prennent en charge le déploiement et la gestion de ces applications déployables indépendamment (IDA).
Le résultat net est un ensemble de rôles ansibles et de playbooks qui ont été fusionnés dans le dépôt edx/configuration. Désormais, avec seulement quelques commandes, les développeurs peuvent mettre en place un environnement de développement d'analyse complet à l'intérieur d'une machine virtuelle. Dans cet environnement, vous pouvez cliquer dans le LMS, exécuter le pipeline de données, puis actualiser une page dans Insights pour voir les graphiques changer en fonction de vos actions !
Vous voulez essayer ? Consultez la documentation sur Analytics Devstack!
Vous voulez rendre la pile de développement analytique encore meilleure ? Nous espérons l'étendre de la manière suivante :
- Nous aimerions pouvoir exécuter les tests d'acceptation du pipeline de données dans cet environnement. Actuellement, il y a quelques dépendances codées en dur sur S3. L'équipe d'ingénierie d'edX prévoit de le faire dans un proche avenir.
- Nous avons des éléments de configuration liés à l'analyse dans le référentiel edx/edx-analytics-configuration et d'autres éléments dans le référentiel edx/configuration. Nous aimerions trouver une stratégie pour réduire la complexité de cette situation, en déplaçant la logique de l'un vers l'autre, afin que vous ayez un endroit où aller pour trouver des éléments opérationnels liés à l'analyse.
- Rendre la procédure de déploiement edx-analytics-pipeline plus idiomatique et cohérente avec d'autres services, tels que Insights et l'API Analytics Data.
- Autorisez Insights à afficher les données d'aujourd'hui au lieu de toujours afficher les données d'hier. Certains rapports n'affichent actuellement aucune modification avant le jour calendaire suivant.
Je ne remercierai jamais assez Braden et Philippe d'avoir mis tout cela ensemble et de nous avoir permis à tous de travailler plus facilement et plus efficacement sur la pile analytique. Nous sommes impatients de voir quels changements la communauté Open edX a en tête pour Open edX Insights, et quels projets sympas vont se développer à partir du Hackathon ouvert edX 2015! Nous espérons vous voir là-bas.
Gabe Mulley est ingénieur logiciel principal au sein de l'équipe edX Analytics.
![]()