На сайте uchi.ru каждый может попробовать выполнить задания, которые будут решать дети. Они представлены в форме короткой анимации: нужно помочь папам-осьминогам разобрать пронумерованных (но перепутанных) детей, провести мышонка к сыру через лабиринт (придется освоить сложение), составлять дробные числа из кирпичиков вроде «Лего» или, например, расставить по порядку вагоны поезда.
Подробнее о проекте мы попросили рассказать технического директора Алексея Вахова: с чего все начиналось, как получается объяснять детям сложные темы и почему разработчикам «Учи.ру» удобно работать с «Виртуальным приватным облаком».
Расскажите, чем занимается «Учи.ру»?
На самом деле всё просто — учим детей. У нас компания выросла из стартапа — сейчас это образовательная платформа для обучения в начальной и средней школе. В основном, учим математике, но пробуем и другие предметы.
Как появилась идея проекта?
Основатели давно занимаются обучением, еще с института — репетиторством, например. И нащупали интересный такой формат — обучение с экрана. Да, есть учебники, есть фронтальная работа с учителем в классе, но можно предложить еще один формат: компьютер дает интерактив, индивидуализацию под ребенка — например, если ребенок ошибается, мы можем с каждым устроить такой мини-диалог, дать обратную связь, тот или иной сценарий.
Дети занимаются в школах или могут учиться самостоятельно?
Мы не конкурируем с учителем, со школой. Это все равно, что пытаться заменить школу просто учебниками: скорее всего будет очень слабый уровень — большинству людей тяжело учиться вот так. Напротив, мы сотрудничаем, даем детям дополнительный вариант «как это можно делать».
У нас есть два формата: бывает, когда дети в школе приходят в компьютерный класс или в группу продленного дня — тут уж от учителя зависит, от школы — и занимаются каждый за своим компьютером. Но второй вариант — заниматься дома, так тоже многие делают.
Ваша программа отличается от школьной?
У нас школьный курс математики, который соответствует федеральному стандарту. Только форма подачи знаний интерактивная, и каждый ребенок занимается в своем ритме. Система ставит его на какую-то точку, если получается медленно — у него будет больше задач по тем темам, где возникали сложности, а если получается быстро, он все знает — он эти темы «проскакивает». Дифференциация очень быстрая — когда класс начинает заниматься, «продвинутые» быстро выскакивают вперед, а те, у кого знаний меньше, начинают догонять.
А как построен процесс?
Пока ребенок учится, он решает тысячи задач. Из-за маленького времени концентрации у детей (20 минут — и всё), у нас такая подача материала, что они очень быстро начинают что-то делать, быстро ошибаются (или, наоборот, нет), получают обратную связь, исправляются.
Мы можем дать прикольные задачи в трехмерном пространстве — то, что очень сложно повторить на бумаге. Кроме основного курса Учи.ру, мы проводим олимпиады по многим предметам. Некоторые задачи мы стараемся делать такие, что в классической олимпиаде их сложно дать — точнее, можно, конечно, но на компьютере они обретают особый шарм. Например, на первой олимпиаде по математике давали задачу на проекции: пирамидка отбрасывает две тени на стенки. На бумаге она реально очень сложная — решили процентов 10 детей. Мы сделали хорошую вступительную часть: ребенок переставляет кубики, смотрит, как на них светят прожекторы, какие получаются тени — и тогда ее решили процентов 60. Классно, что смогли тему, сложную даже для третьего класса, объяснить первоклассникам так, что они решили задачу.
На школы сами выходите с предложением сотрудничества?
Да, работаем. Но главное, что наш продукт нравится детям — им нравится коммуникация. Все активности вокруг этого — как общаться с детьми, с учителями, с родителями. Школы печатают дипломы с наших олимпиад, гордятся (смеется).
И много у вас школ?
У нас миллион пользователей в России. 20% российских детей занимаются. Мы внутри не делим — индивидуально человек занимается или с классом — в основном инициатива идет от учителя, но кто-то и сам регистрируется. Можно же в любой момент подключиться — создать, например, свой класс. У нас разные есть «входы»: и для учеников, и для учителей, и для родителей.
Каждый пятый, получается. Много.
Ну да (смеется), но мы хотим больше, есть куда расти.
Охотно школы соглашаются?
Сейчас уже да. Но раньше сложностей много было, на каждом шагу: даже внутрь попасть сложно — в школы же с улицы всех подряд не пускают. А первые школы мы подключали — просто ногами ходили: нас было пять человек, выбирали те, что поближе к офису, знакомились с директором, договаривались.
А почему только математика?
Планируем и другие программы, но ведь курс «под компьютер» сложно создавать — мы же все делаем с нуля. Это не скан учебника, не «пэдээфка» какая-то — это полностью переработанный курс с высоким интерактивом.
Давайте к технической части — когда решили работать с Selectel?
Года полтора назад. Не с самого начала — мы были два года на Heroku, потом переехали на дедики, потом к вам — особых метаний не было. Сейчас используем «Виртуальное приватное облако» и пару выделенных серверов.
Как выбирали?
Нас «перевезла» компания «Экспресс 42» — консультанты по DevOps’у. У нас возникла проблема: проводим масштабные олимпиады, а это значит, что неделю у нас большой трафик, а потом активность стабилизируется. На дедиках это всё было очень сложно потому, что их надо арендовать десять штук, потом сдавать, настраивать… Это долго. Плюс дедики большие, а у нас много разных приложений, куча продакшенов: и для людей, и внутренних. И получалось, что мы начали забивать эти дедики ролями… А под конец просто упали и переехали к вам (смеется). Потому, что публичное облако, а у нас еще и ФЗ (Федеральный закон о хранении персональных данных — примечание ред.).
Другие варианты были?
К тому времени адекватное предложение от компании с именем было только у вас. Такое, чтобы можно начать работать в тот же день. Были варианты, но, как показывает опыт, если купить какие-то дешевые серверы, там просто по трафику все ляжет или будут другие, чисто технические, проблемы.
Сезонность бизнеса сыграла какую-то роль?
Да, летом у нас трафик, конечно, в десять раз ниже, но главной болью были олимпиады — очень сложно проводить на дедиках: приходится, либо много железа держать вхолостую и переплачивать, либо… В любом случае — очень накладно.
Для чего используете «Виртуальное приватное облако»?
Мы его используем в полный рост — не просто натыкали десять серверов и забыли. Каждый день что-то добавляем-удаляем (используем Terraform): то что-то разворачиваем, то что-то тестируем, то нагрузку проводим.
Сами по себе облачные серверы удобнее тем, что они быстро стартуют, быстро делаются, но их можно использовать, как удобный выделенный сервер, а можно, как Облако. И мы максимально переходим на второй вариант: больше сотни виртуальных серверов, автоматизация, Ansible, Consul, на Docker вот сейчас переходим — все, как положено.
В чем удобство VPC для «Учи.ру»?
Мы можем облако настроить под нагрузку… Точнее так. Первое — мы можем быстро развернуть продакшн. А с помощью API мы это можем сделать еще быстрее и автоматически. Мы используем Terraform, который работает с OpenStack’ом. И хорошо, что у вас OpenStack.
Во-вторых: нас не касаются проблемы с железом: сгоревшие диски, память — это все на вашей стороне. И это тоже удобно.
И это, знаете, качественные изменения — мы сейчас можем развернуть внешний готовый для пользователей продакшн за полчаса. От этого в компании появляются другие взаимодействия: разработчики не боятся делать новые сервисы — они знают, что днем они сделали, вечером это можно будет использовать. Бизнес знает, что если понадобится провести какое-то событие, не надо за две недели предупреждать. С теми же выделенными серверами я не видел, чтобы быстрее, чем за три дня подключали, и эти три дня надо сидеть на телефоне и все время, то сеть не подключат, то рэйд неправильно разобьют…
А какие-то недостатки у облака для себя обнаружили?
Минус в том, что железо производительней, когда все ресурсы у тебя. Вот, допустим, базы данных: виртуальные диски на запись, конечно, медленнее, чем железные, поэтому мы арендуем у Selectel еще и выделенные серверы — их можно объединить с виртуальными в одну инфраструктуру.
Какие задачи вам приходится решать ежедневно?
Бизнес никогда не ставит нам задачи в терминологии серверов, мониторинга или бэкапов — это уже инженерные решения, им просто надо, «чтобы все работало». Первая задача — стабильная, быстрая и красивая работа продакшенов. Вторая задача — создание среды для девелоперов: тестовые среды, «выкатки» их частые. Приложений — сотни, если делать все вручную, будет большой бардак — мы стараемся все автоматизировать: «выкатки» приложений, мониторинг, логирование.
Если хоститься на своем железе, все равно нужно будет делать свою виртуализацию, создавать мини-Selectel у себя. Хостить современные большие веб-приложения, которые состоят из многих сервисов, без виртуализации практически невозможно.
Но базы данных, при этом, храните отдельно?
Нет, это единичный случай. Если база не очень нагруженная, мы стараемся ее держать в облаке. Нам, чем более облачно, тем лучше всегда. Чем сильнее мы сократим расходы на память, диски, администрирование и прочее, тем лучше. А если можно сделать так, чтобы нас это вообще не касалось — идеально. Что-то с сервером — мы пишем тикет, вы все решаете, не отвлекая наших инженеров. А мы лучше будем писать новый код, новые фичи. Для нас это ценность.
Для нас самое лучшее, когда мы забываем про серверы, про Selectel. И, собственно, так и происходит, хотя мы держим на вашем OpenStack’е по 500–800 запросов на каждом продакшне, трафика по 50 Мб/сек отдаем… И никаких проблем — это работает, и всё (смеется).