Um ambiente de desenvolvimento para Open edX Insights

16 de setembro de 2015 | Por

Hoje temos o prazer de anunciar o lançamento do Abra o edX Analytics Devstack e quer dedicar algum tempo para explicar como o projeto surgiu. Muito obrigado a Philippe Chiu e Braden MacDonald por seus esforços heróicos em tornar este projeto realidade.

Na primeira Hackathon Open edX Conference do ano passado, Philippe Chiu (da IONISx) sugeriu um projeto incrível: rodar toda a pilha de análise edX de um contêiner do Docker. O objetivo deste projeto era desenvolver algo como a pilha do desenvolvedor (Devstack) que é usada pela maioria dos desenvolvedores Open edX quando desenvolvem patches para a plataforma edx. Esse “Devstack de análise” conteria todas as dependências externas necessárias aos sistemas de análise, instaladas em um contêiner convenientemente isolado. 

Diagrama mostrando todos os serviços coexistindo dentro do contêiner devstack de análise

Diagrama mostrando todos os serviços coexistindo dentro do contêiner devstack de análise

A equipe de análise do edX estava fazendo a maior parte de nosso desenvolvimento em clusters Elastic MapReduce (na AWS), que inclui convenientemente todas as dependências necessárias para executar nosso código. No entanto, essa abordagem é complicada e proibitivamente cara para muitos contribuidores de código aberto. Em vez disso, queríamos colocar uma pilha de análise dentro de um contêiner que pudesse ingerir logs de rastreamento (dados de fluxo de cliques), processá-los e exibir os resultados em Insights (o painel de análise fornecido aos instrutores e funcionários do curso que trabalham em cursos edX). Philippe e eu passamos os próximos dois dias hackeando todas as partes que precisavam acontecer para atingir esse objetivo. No final, chegamos bem longe. Conseguimos executar o pipeline de dados (edx-analytics-pipeline), mas ainda precisava conectar alguns dos serviços. Após o hackathon, gastei um pouco de tempo avançando, principalmente convertendo a configuração baseada em Dockerfile em papéis e manuais ansible. Essa adição nos permitiu executar a configuração ansible em qualquer lugar que escolhêssemos (incluindo durante um processo de compilação de imagem do docker, uma compilação de AMI ou uma etapa de provisionamento de imagem vagrant).

Avanço rápido de alguns meses, e Braden MacDonald (de OpenCraftGenericName) estava procurando fazer algumas contribuições significativas para os serviços de análise. Ele também viu a necessidade de um equivalente devstack para os serviços de análise edX e desenvolveu uma imagem vagrant completamente funcional que pode executar toda a pilha. Ao fazer isso, ele descobriu vários detalhes que permaneceram pendentes após o esforço inicial.

A equipe de engenharia da edX ficou tão impressionada com essa enorme contribuição que achamos que fazia sentido mesclá-la com o trabalho existente e produzir um produto final que pudesse:

  • Ser instalado em um devstack Open edX normal ou ser colocado em uma máquina virtual totalmente separada.
  • Execute na mesma máquina que o LMS, permitindo uma configuração de rede significativamente simplificada, sem a necessidade de se preocupar com encaminhamento de porta e outras complicações.
  • Esteja totalmente integrado ao repositório edx/configuration, permitindo uma futura implantação simplificada em sandboxes e outros ambientes de desenvolvimento edX.
  • Use a mesma lógica de implantação usada na produção.
  • Aproveite outras infraestruturas edX que suportam a implantação e o gerenciamento desses aplicativos de implantação independente (IDAs).

O resultado líquido é um conjunto de papéis e playbooks ansible que foram mesclados no repositório edx/configuration. Agora, com apenas alguns comandos, os desenvolvedores podem ter um ambiente de desenvolvimento analítico completo dentro de uma máquina virtual. Nesse ambiente, você pode clicar no LMS, executar o pipeline de dados e atualizar uma página no Insights para ver os gráficos mudarem com base em suas ações!

Quer experimentar? Confira a documentação no Analytics Devstack!

Quer tornar o devstack de análise ainda melhor? Esperamos estendê-lo das seguintes maneiras:

  • Gostaríamos de poder executar os testes de aceitação do pipeline de dados neste ambiente. Atualmente, existem alguns dependências codificadas no S3. A equipe de engenharia da edX está planejando fazer isso em um futuro próximo.
  • Temos algumas configurações relacionadas à análise no repositório edx/edx-analytics-configuration e outras coisas no repositório edx/configuration. Gostaríamos de descobrir uma estratégia para reduzir a complexidade dessa situação, movendo a lógica de uma para outra, para que você tenha um lugar para encontrar coisas operacionais relacionadas à análise.
  • Torne o procedimento de implantação do edx-analytics-pipeline mais idiomático e consistente com outros serviços, como Insights e a API de dados do Analytics.
  • Permita que o Insights exiba os dados de hoje em vez de sempre exibir os dados de ontem. Alguns relatórios não mostram nenhuma alteração até o próximo dia do calendário.

Não posso agradecer o suficiente a Braden e Philippe por juntar tudo isso e possibilitar que todos nós trabalhemos na pilha de análises com mais facilidade e eficácia. Estamos ansiosos para ver quais mudanças a comunidade Open edX tem em mente para o Open edX Insights e quais projetos interessantes serão desenvolvidos a partir do Hackathon Open edX 2015! Esperamos ver você lá.

Gabe Mulley é engenheiro de software principal da equipe edX Analytics.

Carregando

Tempo para mais? Confira os artigos abaixo.

Aprendizagem corporativa faz sua mudança para Ed Tech
Chamada de artigos rende uma colheita abundante
Open edX Call for Papers: termina em 7 de dezembro
Melhorias incrementais no Open edX
Participe da Conferência Open edX 2026!

A Conferência Open edX 2026 apresentará casos de uso inovadores para um dos melhores sistemas de gerenciamento de aprendizagem on-line de código aberto do mundo, a plataforma Open edX, e descobrirá os mais recentes avanços em design instrucional, constelação de cursos e métodos para operar e estender a plataforma Open edX , incluindo tecnologias inovadoras, como a IA generativa.