Heute freuen wir uns, die Veröffentlichung von bekannt zu geben Öffnen Sie edX Analytics Devstack und möchte mir etwas Zeit nehmen, um zu erklären, wie das Projekt zustande kam. Ein großer Dank geht an Philippe Chiu und Braden MacDonald für ihre heldenhaften Bemühungen, dieses Projekt zu verwirklichen.
Beim allerersten Open edX Conference Hackathon im vergangenen Jahr hat Philippe Chiu (von IONISx) schlug ein großartiges Projekt vor: zu laufen der gesamte edX-Analytics-Stack aus einem Docker-Container. Das Ziel dieses Projekts war es, so etwas wie den Developer Stack (Devstack) zu entwickeln, der von den meisten Open edX-Entwicklern verwendet wird, wenn sie Patches für die edx-Plattform entwickeln. Dieser „Analytics Devstack“ würde alle externen Abhängigkeiten enthalten, die von den Analysesystemen benötigt werden, installiert in einem bequem isolierten Container.

Diagramm, das alle Dienste zeigt, die innerhalb des Analyse-Devstack-Containers koexistieren
Das edX-Analytics-Team hat den größten Teil unserer Entwicklung auf Elastic MapReduce-Clustern (auf AWS) durchgeführt, die praktischerweise alle Abhängigkeiten enthalten, die zum Ausführen unseres Codes erforderlich sind. Dieser Ansatz ist jedoch für viele Open-Source-Beitragende umständlich und unerschwinglich teuer. Stattdessen wollten wir einen Analytics-Stack in einem Container aufbauen, der Tracking-Protokolle (Clickstream-Daten) aufnehmen, verarbeiten und die Ergebnisse anzeigen kann Einblicke (das Analyse-Dashboard, das Kursleitern und Kursmitarbeitern zur Verfügung gestellt wird, die an edX-Kursen arbeiten). Philippe und ich verbrachten die nächsten zwei Tage damit, all die Dinge zu hacken, die passieren mussten, um dieses Ziel zu erreichen. Am Ende waren wir ziemlich weit gekommen. Wir konnten die Datenpipeline ausführen (edx-analytics-pipeline), musste aber noch einige der Dienste verkabeln. Nach dem Hackathon habe ich ein wenig Zeit damit verbracht, es voranzutreiben, hauptsächlich durch die Konvertierung der Dockerfile-basierten Konfiguration in Ansible-Rollen und Playbooks. Diese Ergänzung ermöglichte es uns, die Ansible-Konfiguration überall auszuführen, wo wir wollten (einschließlich während eines Docker-Image-Build-Prozesses, eines AMI-Builds oder eines Vagrant-Image-Bereitstellungsschritts).
Spulen Sie ein paar Monate vor, und Braden MacDonald (von OpenCraft) wollte einige bedeutende Beiträge zu den Analysediensten leisten. Er sah auch einen Bedarf an einem Devstack-Äquivalent für die edX-Analytics-Services und entwickelte ein voll funktionsfähiges Vagrant-Image, das den gesamten Stack ausführen kann. Dabei fand er eine Reihe von Details heraus, die nach der anfänglichen Anstrengung offen geblieben waren.
Das edX-Engineering-Team war von diesem massiven Beitrag so beeindruckt, dass wir es für sinnvoll hielten, ihn mit der bestehenden Arbeit zusammenzuführen und ein Endprodukt zu produzieren, das Folgendes kann:
- In einem normalen Open edX Devstack installiert oder in einer völlig separaten virtuellen Maschine hochgefahren werden.
- Läuft auf demselben Computer wie das LMS, was eine erheblich vereinfachte Netzwerkkonfiguration ermöglicht, ohne sich Gedanken über Portweiterleitung und andere derartige Komplikationen machen zu müssen.
- Enge Integration mit dem edx/Configuration Repo, was eine zukünftige vereinfachte Bereitstellung in Sandboxes und anderen edX-Entwicklungsumgebungen ermöglicht.
- Verwenden Sie dieselbe Bereitstellungslogik, die in der Produktion verwendet wird.
- Profitieren Sie von anderen edX-Infrastrukturen, die die Bereitstellung und Verwaltung dieser unabhängig bereitstellbaren Anwendungen (IDAs) unterstützen.
Das Nettoergebnis ist eine Reihe von Ansible-Rollen und Playbooks die in das edx/configuration-Repo zusammengeführt wurden. Jetzt können Entwickler mit nur wenigen Befehlen eine vollständige Analytics-Entwicklungsumgebung in einer virtuellen Maschine aufbauen. Innerhalb dieser Umgebung können Sie im LMS herumklicken, die Datenpipeline ausführen und dann eine Seite in Insights aktualisieren, um zu sehen, wie sich die Diagramme basierend auf Ihren Aktionen ändern!
Willst du es ausprobieren? Sehen Sie sich die Dokumentation zum Analytics Devstack an!
Möchten Sie den Analytics-Devstack noch besser machen? Wir hoffen, es auf folgende Weise zu erweitern:
- Wir möchten die Datenpipeline-Akzeptanztests in dieser Umgebung ausführen können. Derzeit gibt es einige fest codierte Abhängigkeiten von S3. Das edX-Engineering-Team plant dies in naher Zukunft.
- Wir haben einige analysebezogene Konfigurationsdaten im edx/edx-analytics-configuration-Repository und andere Daten im edx/configuration-Repository. Wir würden gerne eine Strategie finden, um die Komplexität dieser Situation zu reduzieren, indem wir die Logik von einer in die andere verschieben, sodass Sie eine Anlaufstelle haben, um analysebezogene operative Dinge zu finden.
- Machen Sie das Bereitstellungsverfahren der edx-analytics-pipeline idiomatischer und konsistenter mit anderen Diensten wie Insights und der Analytics-Daten-API.
- Lassen Sie zu, dass Insights die Daten von heute anzeigt, anstatt immer die Daten von gestern anzuzeigen. Einige Berichte zeigen derzeit bis zum nächsten Kalendertag keine Änderungen an.
Ich kann Braden und Philippe nicht genug dafür danken, dass sie dies alles zusammengestellt haben und es uns allen ermöglicht haben, einfacher und effektiver am Analytics-Stack zu arbeiten. Wir sind gespannt, welche Änderungen sich die Open edX Community für Open edX Insights vorstellt und welche coolen Projekte sich daraus entwickeln werden Offener edX-Hackathon 2015! Wir hoffen, euch dort zu sehen.
Gabe Mulley ist Principal Software Engineer im edX Analytics Team.
![]()