Oggi siamo lieti di annunciare l'uscita del Apri edX Analytics Devstack e voglio prendermi del tempo per spiegare come è nato il progetto. Un grande ringraziamento va a Philippe Chiu e Braden MacDonald per i loro sforzi eroici nel realizzare questo progetto.

Alla prima Open edX Conference Hackathon dell'anno scorso, Philippe Chiu (da IONISx) ha suggerito un progetto fantastico: correre l'intero stack di analisi edX da un contenitore Docker. L'obiettivo di questo progetto era sviluppare qualcosa come lo stack di sviluppo (Devstack) che viene utilizzato dalla maggior parte degli sviluppatori Open edX quando sviluppano patch per la piattaforma edx. Questo "devstack di analisi" conterrebbe tutte le dipendenze esterne necessarie ai sistemi di analisi, installate su un contenitore opportunamente isolato. 

Diagramma che mostra tutti i servizi coesistenti all'interno del contenitore di analytics devstack

Diagramma che mostra tutti i servizi coesistenti all'interno del contenitore di analytics devstack

Il team di analisi edX ha svolto la maggior parte del nostro sviluppo su cluster Elastic MapReduce (su AWS), che include comodamente tutte le dipendenze necessarie per eseguire il nostro codice. Tuttavia, questo approccio è ingombrante e proibitivo per molti contributori open source. Invece, volevamo creare uno stack di analisi all'interno di un contenitore in grado di ingerire i log di monitoraggio (dati del flusso di clic), elaborarli e visualizzare i risultati su Approfondimenti (la dashboard di analisi fornita agli istruttori e al personale del corso che lavora sui corsi edX). Philippe ed io abbiamo passato i due giorni successivi a modificare tutti i bit necessari per raggiungere quell'obiettivo. Alla fine, siamo arrivati ​​abbastanza lontano. Siamo stati in grado di eseguire la pipeline di dati (edx-analytics-pipeline), ma era comunque necessario cablare alcuni servizi. Dopo l'hackathon, ho passato un po' di tempo a spingerlo avanti, principalmente convertendo la configurazione basata su Dockerfile in ruoli e playbook ansible. Questa aggiunta ci ha consentito di eseguire la configurazione ansible ovunque scegliamo (incluso durante un processo di creazione dell'immagine Docker, una build AMI o una fase di provisioning di immagini vaganti).

Avanti veloce di alcuni mesi e Braden MacDonald (da Open Craft) intendeva apportare alcuni contributi significativi ai servizi di analisi. Ha anche visto la necessità di un equivalente devstack per i servizi di analisi edX e ha sviluppato un'immagine vagante completamente funzionale in grado di eseguire l'intero stack. In tal modo, ha scoperto un sacco di dettagli che erano rimasti eccezionali dopo lo sforzo iniziale.

Il team di ingegneri edX è rimasto così colpito da questo enorme contributo che abbiamo pensato che avesse senso fonderlo con il lavoro esistente e produrre un prodotto finale che potesse:

  • Essere installato in un normale devstack Open edX o essere avviato in una macchina virtuale completamente separata.
  • Funziona sulla stessa macchina dell'LMS, consentendo una configurazione di rete notevolmente semplificata, senza doversi preoccupare del port forwarding e di altre complicazioni simili.
  • Essere strettamente integrato con il repository edx/configuration, consentendo una futura distribuzione semplificata in sandbox e altri ambienti di sviluppo edX.
  • Utilizzare la stessa logica di distribuzione utilizzata in produzione.
  • Sfrutta altre infrastrutture edX che supportano l'implementazione e la gestione di queste applicazioni IDA (Indipendent Deployable Application).

Il risultato netto è un insieme di ruoli e playbook ansible che sono stati uniti nel repository edx/configuration. Ora, con pochi comandi, gli sviluppatori possono sostenere un ambiente di sviluppo di analisi completo all'interno di una macchina virtuale. All'interno di questo ambiente, puoi fare clic nell'LMS, eseguire la pipeline di dati e quindi aggiornare una pagina in Insights per vedere i grafici cambiare in base alle tue azioni!

Ti va di provarlo? Consulta la documentazione su Analytics Devstack!

Vuoi migliorare ulteriormente il devstack di analisi? Speriamo di estenderlo nei seguenti modi:

  • Vorremmo essere in grado di eseguire i test di accettazione della pipeline di dati in questo ambiente. Attualmente, ce ne sono alcuni dipendenze hardcoded su S3. Il team di ingegneri edX sta pianificando di farlo nel prossimo futuro.
  • Abbiamo alcune cose di configurazione relative all'analisi nel repository edx/edx-analytics-configuration e altre cose nel repository edx/configuration. Vorremmo escogitare una strategia per ridurre la complessità di questa situazione, spostando la logica da una all'altra, in modo da avere un posto dove andare per trovare materiale operativo relativo all'analisi.
  • Rendi la procedura di distribuzione edx-analytics-pipeline più idiomatica e coerente con altri servizi, come Insights e Analytics Data API.
  • Consenti a Insights di visualizzare i dati di oggi invece di visualizzare sempre i dati di ieri. Alcuni rapporti attualmente non mostrano alcuna modifica fino al giorno di calendario successivo.

Non posso ringraziare abbastanza Braden e Philippe per aver messo insieme tutto questo e aver permesso a tutti noi di lavorare sullo stack di analisi in modo più semplice ed efficace. Non vediamo l'ora di vedere quali cambiamenti ha in mente la community di Open edX per Open edX Insights e quali interessanti progetti svilupperanno dal 2015 Hackathon aperto edX! Speriamo di vedervi lì.

Gabe Mulley è un Principal Software Engineer nel team edX Analytics.

Caricamento in corso