Главное о кейсе
Онлайн-школа №1 открыла дистанционный колледж среднего профобразования. Новую платформу писать не стали: мы развернули копию школьной на отдельной инфраструктуре и адаптировали её под колледж — с семестрами, группами, специальностями, портфолио для зачисления, планом студента на две недели и аналитикой в Metabase.
Ядро школы — программы, уроки, тесты, проверка заданий, расписание, отчёты и видеоконференции — работает в колледже без переделки. Школа и колледж живут на одной кодовой базе, поэтому каждая новая функция делается один раз для обеих платформ. Запуск на готовом ядре обошёлся примерно в 300 000 ₽ вместо не менее 7 млн ₽ за разработку с нуля. Сейчас в колледже учатся более 1000 студентов.
Как проект изменил жизнь пользователей
Студент. Вместо школьных виджетов на дашборде — план на две недели: сразу видно, что нужно сдать в ближайшее время. Учебный план разбит по семестрам, документы для зачисления загружаются в портфолио прямо в личном кабинете, там же оформляется пересдача.
Куратор. Документы всех студентов собраны в одном разделе «Мои документы», к каждому можно оставить комментарий.
Преподаватель. Проверяет задания с шаблонами ответов, не составляя каждый ответ с нуля.
Родитель. Видит успеваемость студента в отчётах.
Редактор контента. Готовит уроки заранее и ставит их на отложенную публикацию, работает в новом редакторе.
Администрация. Следит за успеваемостью студентов и посильностью учебного контента в дашбордах Metabase.
Остальные инструменты школы — расписание, тесты, видеоконференции, отчёты — достались всем ролям сразу, без доработки.
Бизнес-задача и ее решение
Задача. Онлайн-школа №1 запускала колледж как отдельный продукт — со своими студентами, специальностями, семестрами и документами для зачисления. Сделать это нужно было без вложений в новую платформу и так, чтобы дальнейшая разработка не подорожала вдвое: если школа и колледж разойдутся по коду, каждую функцию придётся делать дважды.
Решение. Отдельный инстанс школьной платформы на общей кодовой базе: инфраструктура и данные у колледжа свои, код — общий со школой. Специфику колледжа (терминологию, семестры, портфолио, план студента) встроили, не отделяясь от общего кода.
Результат. Запуск на готовом ядре обошёлся примерно в 300 000 ₽ вместо не менее 7 млн ₽ за разработку с нуля. В колледже учатся более 1000 студентов, а новые функции по-прежнему делаются один раз для школы и колледжа.
Крафт (мастерство), реализация, технические детали
Архитектура. Колледж работает как отдельный инстанс, а не через мультитенантность: у него свой кластер, своя база данных, свои стенды и свой Metabase. Данные и нагрузка школы и колледжа не пересекаются, а код общий — доработки идут в одну кодовую базу.
Терминология. Ученик → студент, учитель → преподаватель, класс → группа, четверть → семестр, экзамен → итоговая работа. Добавлены направления и специальности.
Сделано только для колледжа:
— портфолио и раздел «Мои документы»: 21 тип документов для зачисления — заявления, согласия на обработку данных, договор с партнёрским колледжем, аттестат, паспорт;
— дашборд студента с планом на две недели;
— отложенная публикация уроков;
— сбор оценок удовлетворённости (CSAT) из Google-таблиц;
— дашборды Metabase «Успеваемость студентов» и «Посильность контента».
Чат в колледже отключён.
Переиспользовано без изменений: программы, уроки, тесты, проверка заданий, расписание, отчёты, видеоконференции.
Стек (общий с Онлайн-школой №1): NodeJS, NestJS, NuxtJS, TypeORM, PostgreSQL, Redis, RabbitMQ; микросервисная архитектура, REST API.
Инсайты, гипотезы, процесс создания и взаимодействия с заказчиком
Главный риск проекта — разойтись со школой. Самый быстрый путь — сделать для колледжа отдельную копию кода и дорабатывать её независимо. Но тогда платформы быстро начали бы отличаться, и каждую новую функцию пришлось бы делать для двух систем, то есть вдвое дороже. Для экономики заказчика это ключевой момент.
Поэтому правило было одно: всё, что нужно колледжу, встраивается в общий код. Свои функции колледж получил — портфолио, план на две недели, семестры, отдельную аналитику, — но от школы не отделился.
Отсюда и решение по инфраструктуре: вместо мультитенантности колледж получил свой кластер и свою базу. Школа и колледж не мешают друг другу по нагрузке и данным, но с точки зрения разработки остаются одним продуктом.
Скриншоты