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

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

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

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

Когда в день приходилось проводить до 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 — тогда переезд будет быстрым и безболезненным.
  • Наличие инструментов оркестрации позволяет создавать специализированную конфигурацию инфраструктуры, что может быть важно для некоторых приложений.
99
4 комментария

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

5

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

Еще на хабре вышла статья о том, как ребята мигрировали свою платформу: https://habr.com/ru/company/mailru/blog/461155/

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