О чём эта история

Институт информационных технологий и интеллектуальных систем (ИТИС) — инновационный IT‑факультет, основанный в 2011 году при Казанском федеральном университете. В 2017 году на кафедре программной инженерии ИТИС КФУ была образована лаборатория Smart Education Lab, которая занимается разработкой проектов для развития образования. Для этого лаборатория использовала собственную платформу UniEnv.

Специалисты лаборатории за 2 месяца самостоятельно развернули инфраструктуру на базе Yandex Serverless Containers и других сервисов Yandex Cloud.

Лаборатория применяет облачные ресурсы для создания тестовых стендов для студенческих приложений. Сейчас в облаке развёрнуто 40 приложений, и сотрудники в дальнейшем планируют запуск 10 приложений в год. В результате миграции в Yandex Cloud удалось в более чем 2,5 раза сократить расходы на поддержку инфраструктуры для хостинга приложений. Облачная платформа позволяет значительно экономить за счёт оплаты только фактического потребления, например вызовов функций или запросов к базе данных, а также снижения количества инфраструктурных инцидентов. Кроме того, решили вопрос с масштабированием без дополнительных вложений.

Задача компании

Институт информационных технологий и интеллектуальных систем (ИТИС) — инновационный IT‑факультет, основанный в 2011 году совместными усилиями Министерства цифрового развития Республики Татарстан, Казанского федерального университета (КФУ) и представителей крупнейших IT‑компаний региона.

Студенты института проходят практику под руководством ведущих специалистов IT‑компаний, работают над исследованиями и разработками в более чем 20 лабораториях, созданных IT‑бизнесом и ИТИС. Основанная в 2017 году на кафедре программной инженерии ИТИС КФУ, лаборатория Smart Education Lab занимается разработкой проектов для развития образования, в том числе систем управления образованием, новых образовательных моделей в инженерном и IT‑образовании, а также приложений для развития компетенций.

Ежегодно такими проектами в Smart Education Lab занимаются около 50 студентов. Преподаватели и сотрудники лаборатории учат ребят работать в командах и организовывать процессы разработки, приближённые к индустриальным.

Тестовые версии разрабатываемых проектов размещались на платформе для хостинга и обслуживания студенческих проектов ИТИС КФУ UniEnv, которая использовала виртуальные машины и требовала дополнительных усилий для масштабирования.

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

  • ежегодно размещать 10 новых проектов без дополнительных вложений со стороны системного администрирования;

  • поддерживать работу 40 существующих приложений, каждое из которых используется 1‑100 пользователями в неделю;

  • запускать код на разных языках программирования (Python, JavaScript, Java, C#, PHP).

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

При выборе облачного решения лаборатория ориентировалась на ряд критериев:

  • решение должно предоставлять расширенный набор технологий и сервисов, обеспечивающий работу всех приложений и систем Smart Education Lab;

  • облачная платформа должна использовать собственные сервисы, позволяющие избежать лицензионных рисков;

  • серверы облачного решения должны располагаться в России, чтобы соответствовать требованиям российского законодательства;

  • технологическая поддержка должна работать в режиме 24/7 и обеспечивать быстрое решение проблем;

  • решение должно иметь удобную панель управления и расширенные возможности личного кабинета.

После рассмотрения нескольких конкурентных решений сотрудники лаборатории, учитывая широкий выбор сервисов и скорость работы поддержки, остановили свой выбор на Yandex Cloud. При принятии решения специалисты Smart Education Lab учли, что для решения образовательных задач очень хорошо подходят serverless‑технологии Yandex Cloud. Эти сервисы позволяют запускать вычислительные ресурсы только в тот момент, когда к ним происходит обращение. Кроме того, документация и интерфейсы Yandex Cloud (как консольные, так и визуальные) хорошо организованы, что помогает быстро разобраться в них и приступить к работе.

Облачная инфраструктура для студенческих проектов

Проекты студентов Smart Education Lab первоначально размещались на институтской платформе UniEnv, которая предназначалась для обслуживания университетских приложений и студенческих разработок.

Развёртывание проектов осуществлялось с помощью GitLab CI, а также PaaS‑платформы Dokku, использующей контейнерную систему Docker. Платформа автоматически собирает приложения на Java, C#, Python, PHP, Ruby, NodeJS и других языках программирования.

Спустя некоторое время стало очевидным, что продолжать так работать стало слишком сложно, ресурсов для развёртывания новых приложений не хватает, а PaaS‑платформа Dokku не позволяет производить автоматическую сборку более чем 50% разрабатываемых приложений. Кроме того, нагрузка на студенческие приложения непостоянна: в течение учебной недели есть несколько всплесков, в остальное время её нет. В таком случае не имеет смысла держать все приложения постоянно запущенными.

Для решения этой задачи Smart Education Lab решила использовать облачную систему Yandex Cloud, и в частности её serverless‑технологии. При использовании serverless для выполнения каждого запроса автоматически создаётся отдельный контейнер или виртуальная машина с нужными характеристиками. При этом Yandex Cloud берёт на себя управление сервером, администрирование базы данных, обновление ПО и интеграцию с другими сервисами. После выполнения задачи созданный объект уничтожается.

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

Теперь студенческие приложения разворачиваются следующим образом:

  • в первую очередь приложение упаковывается в Docker‑образ и загружается в Yandex Container Registry;

  • из образа запускается экземпляр Yandex Serverless Containers, затем он подключается к Yandex API Gateway;

  • при необходимости студентам также выдаётся доступ к Yandex Object Storage для хранения файлов и к Yandex Message Queue для обмена сообщениями между приложениями.

Через единый аккаунт университета настроили единую авторизацию по открытому стандарту обмена данными, аутентификации и авторизации SAML (Security Assertion Markup Language). Студенческие команды получают доступ к ресурсам с помощью API Yandex Cloud, они могут работать с ресурсами только внутри своего каталога.

При участии студентов команда лаборатории разработала подключение доменов на платформе UniEnv. Студент указывает название каталога и адрес, полученный в Yandex API Gateway, после чего домен и SSL‑сертификат подключаются с помощью Yandex Cloud DNS, Yandex Certificate Manager и Terraform.

В результате все студенческие приложения работают в облаке, а на виртуальных машинах собственного сервера остались базы данных и постоянно запущенные инфраструктурные сервисы платформы UniEnv — CI/CD и Sentry.

Команда проекта сделала описание процесса работы с облачными сервисами в документации платформы UniEnv. Там дан чёткий перечень шагов для развёртывания приложения, а также ссылки на документацию Yandex Cloud с подробностями. К некоторым статьям также прикреплены записи лекций и примеры исходного кода. Это позволяет обеспечить комфортное использование инфраструктуры студентами.

Весь проект развёртывания в Yandex Cloud занял 60 дней. Большинство работ по миграции в облачную инфраструктуру проводили сами студенческие команды. На разработку SAML‑авторизации через аккаунт университета у специалистов ИТИС ушло несколько дней.

Не обошлось без сложностей. В процессе реализации проекта сотрудники и студенты ИТИС столкнулись с проблемами в Terraform‑модуле Yandex Cloud, но их помогла решить техническая поддержка компании и участник комьюнити Yandex Cloud в Telegram.

В процессе работы над проектами студенты решают практические задачи, что развивает не только академические знания, но и навыки совместной работы и принятия решений. Этот подход также способствует формированию мягких навыков, делая образование более практичным и подготавливая студентов к успешной карьере. Развёртывание проекта — неотъемлемая часть работы команды. Serverless‑технологии позволяют решить эту задачу сравнительно дёшево и просто при невысокой нагрузке на развернутые проекты.

Артур Атнагулов,
руководитель по технологиям Smart Education Lab ИТИС КФУ

Результаты

В новых условиях ИТИС удалось снизить постоянные ежегодные затраты на поддержку инфраструктуры с 50 000 до 18 000 рублей, кроме того, было найдено системное решение имевшихся инфраструктурных проблем.

При этом облачная платформа предоставляет все возможности для снижения стоимости эксплуатации путём динамического регулирования объёма вычислительных ресурсов.

Специалисты ИТИС смогли также решить ряд других проблем:

  • устранены технические ограничения предыдущей платформы хостинга, не позволяющей разворачивать приложения, например, с нестандартной структурой каталогов и файлов в исходном коде;

  • студенты начали напрямую получать навыки взаимодействия с облачной платформой;

  • использование облачных сервисов внедрено в программу обучения второго и третьего курсов;

  • решён вопрос с масштабированием.

Кроме того, удалось значительно снизить количество инфраструктурных инцидентов.

В дальнейшем ИТИС КФУ также планирует использовать сервисы Yandex Cloud при проведении исследований во время написания выпускных квалификационных работ.

Мнение

Михаил Абрамский,
директор ИТИС КФУ и руководитель лаборатории Smart Education Lab
Михаил Абрамский,
директор ИТИС КФУ и руководитель лаборатории Smart Education Lab

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