Как образовательная платформа в облаке помогает детям-сиротам готовиться к экзаменам

История о том, как благотворительный фонд «Арифметика добра» запускал собственную платформу для проведения онлайн-уроков в детских домах.

В закладки
Фото БФ «Арифметика добра»

Сегодня делиться знаниями на расстоянии просто, как никогда. Четыре года назад благотворительный фонд «Арифметика добра» запустил программу «Шанс» и начал проводить индивидуальные онлайн-уроки с репетиторами для подростков-сирот.

Когда в день приходилось проводить до 150 уроков, стало понятно, что «Шансу» нужна собственная платформа в надёжном облаке с серверами на территории РФ.

О том, как в фонде экспериментировали с облачными решениями и что из этого получилось, рассказывают Евгений Валуйский, руководитель ИТ-проектов БФ «Арифметика добра», и Андрей Рапопорт, руководитель компании Abstrix, которая обслуживает ИТ-задачи проекта «Шанс».

О проекте «Шанс»

Благотворительный фонд «Арифметика добра» занимается системным решением проблемы сиротства в России. Наша задача — помочь детям-сиротам найти семью и стать успешными членами общества.

В своей флагманской программе «Шанс» мы помогаем ученикам 9–11-х классов восполнить пробелы в знаниях по школьному курсу. На образовательной платформе репетиторы проводят онлайн-занятия для подростков и готовят их к успешной сдаче аттестационных экзаменов.

Программа «Шанс» в цифрах:

2015 год — старт программы.

29 регионов и восемь часовых поясов.

Более 100 детских домов.

Более 100 преподавателей.

Более 1100 учеников.

Более 88 тысяч проведённых уроков.

Как мы стартовали: ручное управление онлайн-уроками и последствия роста

Программа «Шанс» — это не только онлайн-уроки, но и огромная база знаний. Каждый проведённый урок записывается, конвертируется и отправляется в хранилище. Ученики, репетиторы и наши менеджеры в любой момент могут обратиться к сохранённому уроку.

На старте программы организационный процесс выглядел так: менеджеры вручную составляли расписание в Excel и назначали уроки по телефону или email. Точно так же вручную репетиторам и ученикам высылали ссылки на платформу Adobe Connect. Это было сложно и неудобно, а когда в 2017 году количество уроков выросло до 150 в день, мы поняли: нужно что-то менять. К тому моменту масштабироваться в прежнем формате было невозможно.

Так возникла идея — сделать собственную платформу, которая позволила бы автоматизировать рутинные вещи: составлять расписания, рассылать SMS об отмене и переносе уроков, контролировать посещаемость. Это упростило бы жизнь и менеджерам, и нашим подопечным в детских домах. При этом платформа должна работать стабильно, а записи уроков — храниться в надёжном месте с возможностью удалённого доступа.

С технической стороны всё было не так однозначно. На нашей будущей платформе мы собирались проводить не менее 200 уроков в день, причём одновременно могли идти до 40 занятий. Но если днём уроков много, то в ночное время (даже с учётом разных часовых поясов) их было очень мало или не было совсем. Так появился первый критерий выбора будущей онлайн-платформы: чтобы на пиковых нагрузках система работала стабильно, но нам не пришлось платить за простой машин в ночное время.

Теперь о том, как появился второй критерий. Каждый урок после конвертации «весит» около 150 МБ, а ежедневно таких уроков проводится до двух сотен. В течение двух месяцев на онлайн-платформе доступна запись любого занятия, затем его архивируют на жёсткие диски и отправляют на хранение. Такими темпами очень быстро накапливались терабайты данных, потому нам нужно было разобраться с хранением больших объёмов.

Так выглядит сейчас личный кабинет ученика на платформе «Шанс» БФ «Арифметика добра»

Почему не подошли готовые платформы для онлайн-уроков

Мы начали с изучения популярной онлайн-платформы Webinar.ru — на её программу можно было приобрести лицензию для своего сервера. Но мы посчитали, что мощностей одного такого сервера не хватит для пиковых нагрузок, когда на платформе проводится 40 уроков одновременно. А покупать два, три и больше серверов или брать аналогичные мощности в аренду на постоянной основе было дорого. Плюс к этому нам бы пришлось организовать у себя хранение записей онлайн-занятий.

Решение на базе Webinar.ru нам не подходило по стоимости и сложности поддержки. Аналогично получилось с TrueConf — это ещё одно программное решение для конференц-связи. Строить инфраструктуру с нуля на своей стороне дорого и сложно, учитывая, что нужно решать две приоритетные задачи: коммутацию и хранение.

Почему бы не перенести всё в облако

Когда мы изучили требования и разочаровались в Webinar.ru и TrueConf, появилась новая идея: использовать облака. В них понравился подход pay-as-you-go, в котором вычислительные мощности сервера оплачиваются поминутно.

Когда в 2017 году мы искали подходящую платформу, в России не было облачных провайдеров с таким принципом оплаты ресурсов. На Западе популярен AWS, но его услуги оказались слишком дорогими.

В итоге мы начали сотрудничать с DigitalOcean и OVH: арендовали у них вычислительные мощности и хранилище соответственно, а софт выбрали open source — программу Big Blue Button. Это тот же Webinar.ru, только с открытым кодом. Без лицензии его можно инсталлировать на сервер и проводить конференции.

В Big Blue Button подкупил не только открытый код, но и обучающий уклон софта. Здесь есть доска, поддерживаются презентации, рисованные схемы, к программе подключаются видеозвонки, она сама умеет конвертировать видео. Но, как и любую программу, для каждого нового урока её приходится запускать раз за разом.

Тогда нам хотелось получить горизонтально масштабируемое решение, в котором можно запустить один урок, сто и даже тысячу одновременно без того, чтобы в системе образовалось узкое место. Для этого мы начали под каждый урок запускать отдельную виртуальную машину, а уже на ней — программу Big Blue Button.

Получалось, что одна виртуальная машина — один урок. Через эту виртуалку проходит весь трафик, она же записывает и конвертирует видеоряд.

Помните нашу проблему с хранением? Её мы решили с помощью облака — подключили OpenStack у OVH и начали отправлять в хранилище конвертированные уроки. Сначала всё работало стабильно, а потом начали происходить неприятные вещи: API был недоступен, новые виртуальные машины и, соответственно, уроки не запускались.

Чтобы подстраховаться, мы обратились к ещё одному облачному провайдеру. Идея выглядела так: если один сервис не работает, значит, урок мы будем запускать в другом, резервном. Минус DigitalOcean в том, что он использует собственный API. Потому альтернативного провайдера начали искать уже со стандартным API.

Так мы пришли к OpenStack и снова обратились к провайдеру OVH, но теперь на его мощностях мы хотели не только хранить архивные уроки, но и запускать виртуальные машины, чтобы проводить занятия.

Перебои продолжились, но теперь это было не так критично: в случае чего мы просто запускали виртуальную машину, и наши подопечные могли без проблем работать с платформой. Напомню, всё это время мы пользовались хранилищем OVH, так как у него стандартный API. Если захотим мигрировать, не придётся переделывать интерфейс платформы, и мы сразу переключимся на другое хранилище.

Запись урока на платформе «Шанс» БФ «Арифметика добра»

В таком режиме мы работали с DigitalOcean и OVH до 16 апреля 2018 года. А потом начались знаменитые блокировки Telegram. Действия Роскомнадзора сильно затронули публичные облака. Каждый раз при запуске новой виртуальной машины мы получали какой-то IP-адрес. Конечно, этим IP уже раньше кто-то пользовался.

Роскомнадзор пачками, целыми диапазонами блокировал IP-адреса, которые выдавал DigitalOcean. Мы оказались в ситуации, когда половина запускаемых виртуальных машин оказывалась в блокировке. Попытки запускать эти машины на OVH ни к чему не привели — Роскомнадзор добрался и до них.

Что мы хотели от российского облачного провайдера

Когда 90% уроков уже не запускались на мощностях DigitalOcean и 30% в резервном облаке OVH, мы начали рассматривать российских облачных вендоров. Тогда мы уже точно понимали, чего хотим от них здесь, в России. Собственно, основных критериев было три.

  • Решение на OpenStack. Так проще переносить онлайн-платформу к другому провайдеру.
  • Pay-as-you-go. Мы не хотели переплачивать за неиспользуемые мощности в ночное время.
  • Серверы на территории РФ. Это поможет выполнять законы РФ и упростит жизнь нашим пользователям, так как чем ближе сервер, тем быстрее он работает.

Весной 2018 года более-менее подходящие под наши запросы условия в России предлагали как минимум четыре провайдера: Selectel, «Ростелеком», Mail.ru Cloud Solutions и Huawei. Но мы сразу споткнулись о первый критерий — тогда у Selectel и «Ростелекома» не было OpenStack. А Huawei не подходил из-за расположения серверов и потому, что у него нет оркестрации (ниже расскажу, почему это оказалось важным). Так мы пришли к облаку Mail.ru Cloud Solutions, которое устраивало по всем критериям.

Миграция в облако MCS

За несколько дней мы смогли подключить в рамках теста облако Mail.ru Cloud Solutions и выяснили одну особенность — MCS запускает виртуальные машины в приватной сети, а наши преподаватели и ученики подключаются к платформе из интернета.

У тех же OVH и Amazon AWS всё иначе: там запущенные машины по умолчанию получают публичные IP-адреса. MCS позволял добавить публичный интерфейс уже после запуска машины, но этого было недостаточно — приложение, которое мы запускаем, было сложно заставить на лету работать на новом интерфейсе. Нам было необходимо, чтобы виртуальная машина сразу запускалась в нужной конфигурации.

Мы верили, что найдём решение, и подключили к поискам ребят из техподдержки. Через чат в Telegram мы наладили отличную коммуникацию: на все наши вопросы быстро прилетали ответы. Так мы узнали, что можно не просто запускать виртуальную машину, а делать это через оркестрацию — так называемый open stack heat. В MCS оперативно помогли составить шаблон нужного стека: с виртуальной машиной, виртуальным диском и публичным IP-адресом.

Меньше чем за две недели мы смогли подключить MCS к нашему сервису и вскоре сделали нашим основным провайдером, оставив западные компании в резерве. Важно, что даже на время тестирования и настройки мы не прерывали занятия с репетиторами для наших подопечных. Мы до сих пор в редких случаях используем OVH и до сих пор сталкиваемся на ней с тем, что каждый девятый-десятый IP-адрес (и соответственно, онлайн-урок) оказывается заблокированным.

Благодаря облачным провайдерам (в том числе и MCS) мы избавили себя от капитальных затрат на поддержку и администрирование серверов. Намного удобнее работать с OpenStack и стандартным API, поминутно платить только за те ресурсы, которые мы реально потребляем, работать без простоев и переплат. Сэкономленные таким образом средства используем для наших благополучателей.

Планы на будущее

Облака не совсем стабильны, когда речь идёт о запуске виртуальных машин. Единичные отказы случаются еженедельно, и это главный минус сотрудничества с облачными провайдерами. Чтобы избежать простоев в работе, мы используем взаимозаменяемые площадки.

В идеале это два, а лучше три разных провайдера, которые, подменяя друг друга в критичных ситуациях, обеспечивают необходимый уровень надёжности. С уже запущенными машинами проблемы возникают намного реже.

Сейчас мы занимаемся поисками ещё одного — резервного — облачного провайдера в России. Также в планах перенести систему хранения к MCS, но останавливает сложность миграции — всё-таки OVH и MCS используют разные API. Это не очень удобно, но при желании это можно реализовать и интегрировать интерфейс Amazon. Останавливает то, что это лишняя работа, которая не входила в наши планы.

Что есть у западных провайдеров, но пока нет в России, так это DNS-сервис. Он создаёт под каждую виртуальную машину временный домен, и сейчас нам нравится работать именно с западным сервисом, так как у него удобный API. Если и его IP-адреса заблокируют, будем в срочном порядке искать альтернативу здесь.

О дружбе с MCS

Фонд давно сотрудничает с одним из проектов Mail.ru Group — с сервисом для благотворительности «Добро Mail.ru». А в 2018 году Mail.ru Group запустила проект «Облако для благотворительных фондов», в рамках которого НКО, которые прошли проверку «Добра», получают бесплатную ИТ-инфраструктуру в облаке.

Наш благотворительный фонд тоже зарегистрирован в этом проекте, и MCS выделил под программу «Шанс» пул IP-адресов (даже с избытком, чтобы точно покрыть наши потребности). Теперь в режиме встроенной оркестрации мы можем использовать до 140 IP-адресов для запуска онлайн-занятий.

Ещё мы перенесли на площадки Mail.ru Cloud Solutions основной сайт фонда www.a-dobra.ru и получили квоту в облачном хранилище (описали наш опыт на «Хабре»). Теперь обучающие материалы генерируются на нашей образовательной платформе: библиотека, домашние задания и все файлы, закачанные преподавателями и учащимися.

Там же мы организовали чат с поддержкой отправки файлов, где ученики общаются друг с другом, репетиторами и менеджерами программы «Шанс». В ближайшем будущем планируем перенести сам сайт «Шанс» в облако MCS — сейчас мы к этому только присматриваемся.

Что мы поняли, создавая ИТ-инфраструктуру для поддержки программы «Шанс»:

  • Для использования готовых онлайн-платформ нужны свои или арендованные мощности, а это дорого и сложно в поддержке.

  • Благотворительная организация может сэкономить, выбрав провайдера с оплатой по схеме pay-as-you-go (только за потребляемые ресурсы) и подходящий open-source-софт.
  • Западные облачные платформы работают нестабильно, так как Роскомнадзор блокирует IP-адреса целыми пулами. У российских провайдеров этой проблемы нет.
  • Для миграции к другому провайдеру важна совместимость API — тогда переезд будет быстрым и безболезненным.
  • Наличие инструментов оркестрации позволяет создавать специализированную конфигурацию инфраструктуры, что может быть важно для некоторых приложений.

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Евгений Валуйский", "author_type": "self", "tags": [], "comments": 4, "likes": 9, "favorites": 13, "is_advertisement": false, "subsite_label": "tribuna", "id": 76435, "is_wide": false, "is_ugc": true, "date": "Thu, 25 Jul 2019 12:01:30 +0300" }
{"average":26429,"one":95,"ten":75}
Сколько денег вы откладываете в месяц?
Ответьте и узнаете, сколько копят другие.
0 ₽
70 000+ ₽
0 ₽
{ "id": 76435, "author_id": 47514, "diff_limit": 1000, "urls": {"diff":"\/comments\/76435\/get","add":"\/comments\/76435\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/76435"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199116, "last_count_and_date": null }
4 комментария

Популярные

По порядку

5

Интересный кейс.
Можно отказаться и от pay-as-you-go, и от поднятия собственной инфраструктуры. Труконф много лет бесплатно раздает некоммерческим организациям своё облако - TrueConf Online. Вы тестировали для своих целей?

Ответить
0

Знаем, общались, даже участвовали в т.ч. в ваших оффлайн-семинарах) Основной недостаток с TrueConf Online был следующий: запись возможна только на стороне клиента.
У нас это же было и остается самым главным условием - централизованная запись и хранение всех уроков.

Ответить
0

Добавили ссылку в статью, на там все же немного про другую миграцию)

Ответить
0
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Голосовой помощник выкупил
компанию-создателя
Подписаться на push-уведомления
{ "page_type": "default" }