Serverless: что это за технологии и как они помогают студентам IT-факультетов

Вместе с Мариной Кошелевой и Романом Калинюком из Yandex Cloud разобрались, как работают serverless-технологии и зачем их использовать студентам и университетам

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

В современных приложениях, как правило, используют микросервисную архитектуру — когда систему разделяют на множество отдельных сервисов. Каждый сервис автономен и отвечает за свой набор задач, например:

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

  • выгружает эту информацию из базы данных и показывает в виде отчёта.

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

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

Artboard

Зачем serverless-технологии студентам

Быстрый доступ к среде разработки. Студентам во время обучения требуется среда для выполнения практических работ и развёртывания веб-приложений, сайтов, чат-ботов. Например, на курсах по облачным вычислениям, разработке веб-приложений и ПО, системному администрированию и DevOps.

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

Классно, что при запуске приложений на основе serverless в Yandex Cloud студентам не нужно ждать ответа университета или каких-либо вендоров о выделении вычислительных мощностей. Они сами заходят в консоль управления облаком и выбирают нужные ресурсы. Доступ открывается по запросу в течение нескольких минут.
Марина Кошелева, руководитель проектов направления «Образование и наука» в Yandex Cloud

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

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

В Яндексе есть свои дата-центры с электрическими вводами и каналами связи. Наши инженеры занимаются задачами по обеспечению отказоустойчивости. Разработчики могут не думать о безопасности и о том, во сколько раз масштабировать виртуальную машину.
Роман Калинюк, архитектор облачных решений в Yandex Cloud

Как serverless-технологии помогают в образовании

Создание студенческих проектов. На IT-факультетах есть проектные практикумы, где студенты разрабатывают свои приложения. Университеты выделяют под это серверные мощности, но ресурсов, чтобы развёртывать новые приложения, не всегда достаточно.

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

Были ещё две проблемы:

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

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

Здесь пригодились serverless-инструменты: они позволяют автоматически масштабировать ресурсы для запуска новых приложений. На базе serverless-экосистемы Yandex Cloud студентами был разработан поисковик ВКР, платформа по выбору учебных дисциплин и сервис тайного голосования.

Также serverless позволяет сэкономить на обслуживании и работе сервера. Теперь платить нужно только за количество запросов к облаку, при этом студенческие приложения могут быть развёрнуты в течение всего семестра. А каждый месяц в Yandex Cloud можно сделать бесплатно миллион запросов — благодаря free tier.

Free tier — это киллер-фича, которая может позволить студентам весь семестр использовать сервис бесплатно. И это одна из самых важных особенностей serverless в Yandex Cloud: доступность для студентов и преподавателей.
Марина Кошелева, руководитель проектов направления «Образование и наука» в Yandex Cloud

Некоторые студенческие проекты на базе serverless находят своих пользователей. Например, проект студентов ФИИТ УрФУ. Они разработали приложение — систему бронирования мест на фестиваль «Дни космоса», который ежегодно проходит в Екатеринбурге и приурочен к празднованию Дня космонавтики.

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

Разработка IT-решений для университетов. В некоторых университетах студенты сами выбирают учебный план на семестр. Для этого требуется система, которая могла бы обрабатывать данные о студентах и предлагать им предметы по выбору.

С такими задачами хорошо справляются инструменты serverless. Например, их использует ИТМО для построения индивидуальных образовательных траекторий для своих 15 тысяч студентов. IT-команда ИТМО создала функцию на базе Yandex Cloud, которая собирает данные об учебных планах и выгружает дисциплины.

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

Для чего ещё используют serverless

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

Если мы говорим про интернет вещей, во множестве устройств есть датчики, которые собирают телеметрию — информацию о том, как работает устройство. По этим значениям начинают выполняться какие-то заданные функции. Например, солнце село, датчик это считал, послал запрос в систему — и включилось освещение. Это всё тоже можно реализовать на облачных сервисах.
Роман Калинюк, архитектор облачных решений в Yandex Cloud

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

Пакетная обработка. Это приложения, которые выполняют одни и те же задания по обработке данных в больших объёмах: резервное копирование, фильтрация и сортировка.

Serverless-технологии часто используют для создания голосовых помощников, отправки уведомлений или электронных писем по триггерам, анализа звонков в телефонии. Например, в компанию поступил звонок, это запускает цепочку триггеров: записать звонок, проанализировать разговор, собрать статистику, показать оператору подсказки в виде скриптов. Множество задач выполняется фоном, пока оператор разговаривает с клиентом.
Роман Калинюк, архитектор облачных решений в Yandex Cloud

А какие есть минусы

Холодный старт и время выполнения кода. Если функция не вызывалась какое-то время, провайдер отключает её, чтобы сэкономить ресурсы. Когда пользователь решит запустить приложение и вызвать функцию, он может столкнуться с задержкой — холодным стартом, так как провайдеру придётся запустить функцию заново.

Операции не могут выполняться в фоновом режиме. Чтобы функция была запущена, нужен триггер. Сервис не может работать без взаимодействия с пользователем и постоянно слушать определённый порт — отслеживать сетевые запросы.

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

Какие перспективы у serverless

Технологии serverless продолжат активно развиваться в ближайшее время. Исследование, проведённое Yandex Cloud совместно с исследовательской компанией Ipsos, показало, что serverless — один из технологических трендов рынка. Уже сейчас проекты на базе бессерверных вычислений используют во многих сферах: образовании, ретейле, финтехе, райдтехе, здравоохранении. Это значит, что для подготовки к современным требованиям рынка нужно адаптироваться и изучать технологии уже в университете.

В Yandex Cloud продолжат разрабатывать курсы, учебные материалы, примеры кода и рекомендации, которые помогут в изучении и применении serverless-технологий. А также продолжим грантовую поддержку учебных курсов, хакатонов и исследовательских проектов, где будут использоваться эти технологии. Если вы студент или преподаватель, приходите к нам в комьюнити, чтобы обсудить ваши проекты.
Марина Кошелева, руководитель проектов направления «Образование и наука» в Yandex Cloud

Краткий пересказ от Yandex GPT