Сьогодні ми раді оголосити про випуск Відкрийте edX Analytics Devstack і хочу приділити трохи часу, щоб пояснити, як виник проект. Велика вдячність Філіпу Чіу та Брейдену Макдональду за їхні героїчні зусилля, спрямовані на реалізацію цього проекту.
На минулорічній першій конференції Open edX Hackathon Філіп Чіу (з IONISx) запропонував чудовий проект: запустити весь стек аналітики edX з контейнера Docker. Метою цього проекту було розробити щось на зразок стеку розробника (Devstack), який використовується більшістю розробників Open edX, коли вони розробляють патчі для платформи edx. Цей «стек розробників аналітики» містив би всі зовнішні залежності, необхідні аналітичним системам, встановлені в одному зручно ізольованому контейнері.

Діаграма, на якій показано всі служби, які співіснують у контейнері аналітики devstack
Команда аналітики edX виконувала більшу частину нашої розробки на кластерах Elastic MapReduce (на AWS), які зручно включають усі залежності, необхідні для запуску нашого коду. Однак цей підхід є громіздким і непомірно дорогим для багатьох учасників відкритого коду. Замість цього ми хотіли створити стек аналітики всередині контейнера, який міг би завантажувати журнали відстеження (дані кліків), обробляти їх і відображати результати на Insights (панель аналітики, яка надається викладачам і персоналу курсів, які працюють над курсами edX). Наступні два дні ми з Філіпом провели, зламуючи всі біти, які мали статися для досягнення цієї мети. Зрештою, ми зайшли досить далеко. Ми змогли запустити конвеєр даних (edx-analytics-pipeline), але потрібно було підключити деякі служби. Після хакатону я витратив трохи часу на просування цього, здебільшого шляхом перетворення конфігурації на основі Dockerfile на ролі ansible і playbooks. Це доповнення дозволило нам запускати конфігурацію ansible будь-де, де ми вибрали (зокрема, під час процесу створення образу докера, збірки AMI або етапу підготовки бродяжого образу).
Перемотайте кілька місяців вперед і Брейден Макдональд (з OpenCraft) прагнув зробити значний внесок у аналітичні служби. Він також побачив потребу в еквіваленті devstack для аналітичних служб edX і розробив повністю функціональний бродячий образ, який може запускати весь стек. Роблячи це, він з’ясував купу деталей, які залишилися невідомими після початкових зусиль.
Команда інженерів edX була настільки вражена цим величезним внеском, що ми подумали, що має сенс об’єднати його з наявною роботою та створити кінцевий продукт, який міг би:
- Бути інстальованим у звичайний стек розробників Open edX або розгорнутим на цілком окремій віртуальній машині.
- Працюйте на тій же машині, що й LMS, що значно спрощує конфігурацію мережі, не турбуючись про переадресацію портів та інші подібні ускладнення.
- Бути тісно інтегрованим із репозиторієм edx/configuration, що дозволить у майбутньому спростити розгортання в пісочниці та інших середовищах розробки edX.
- Використовуйте ту саму логіку розгортання, яка використовується у виробництві.
- Скористайтеся перевагами іншої інфраструктури edX, яка підтримує розгортання та керування цими програмами, які можна розгортати незалежно (IDA).
Чистий результат є набір ролей і п'єс які були об’єднані в сховище edx/configuration. Тепер за допомогою лише кількох команд розробники можуть створювати повне аналітичне середовище розробки у віртуальній машині. У цьому середовищі ви можете клацати в LMS, запускати конвеєр даних, а потім оновлювати сторінку в Insights, щоб побачити зміни діаграм відповідно до ваших дій!
Хочете спробувати? Перегляньте документацію на Analytics Devstack!
Хочете зробити стек розробників аналітики ще кращим? Ми сподіваємося розширити його в такі способи:
- Ми хотіли б мати можливість запускати приймальні тести конвеєра даних у цьому середовищі. В даний час є деякі жорстко закодовані залежності від S3. Команда інженерів edX планує зробити це найближчим часом.
- У нас є деякі конфігураційні матеріали, пов’язані з аналітикою, у сховищі edx/edx-analytics-configuration та інші речі в сховищі edx/configuration. Ми хотіли б розробити стратегію, щоб зменшити складність цієї ситуації, переходячи від однієї логіки до іншої, щоб у вас було одне місце, куди можна було б знайти оперативні речі, пов’язані з аналітикою.
- Зробіть процедуру розгортання edx-analytics-pipeline більш ідіоматичною та узгодженою з іншими службами, такими як Insights і Analytics Data API.
- Дозволити Insights відображати сьогоднішні дані замість того, щоб завжди відображати дані за вчорашній день. Деякі звіти наразі не відображають жодних змін до наступного календарного дня.
Я не можу достатньо подякувати Брейдену та Філіппу за те, що вони об’єднали все це разом і зробили для всіх нас можливим легшу та ефективнішу роботу над аналітичним стеком. Ми з нетерпінням чекаємо, щоб побачити, які зміни спільнота Open edX має на увазі для Open edX Insights, і які цікаві проекти будуть розроблені з 2015 Open edX Hackathon! Сподіваємося побачити вас там.
Гейб Маллі є головним інженером-програмістом у команді edX Analytics.
![]()