Что такое бессерверные вычисления
Давайте представим себя владельцами магазина с одноименным мобильным приложением. В нашем магазине можно купить фрукты, конфеты, шампунь для волос, детскую игру и шариковую ручку – ассортимент достаточно широкий. Предположим, сейчас начало декабря – сезон подарков, нарядов, поиска мест для проведения праздника или продумывания угощений. Или канун 23 февраля, 8 марта, выпускных или, например, дня учителя.
Каждый такой сезон характерен повышенным спросом в отдельных категориях, а значит нагрузка неравномерно возрастает то в одном сегменте, то в другом. Для нас работоспособность приложения, особенно в пики, означает получение или потерю дохода.
Теперь представим, что мы отвечаем за развитие технологичного банка, возможно, даже претендуем на звание ИТ-компании. Наша задача – запускать клиентские сервисы, опережая конкурентов. Банковская сфера одна из самых подвижных с точки зрения применения информационных технологий, здесь необходимо быть в мейнстримах и уметь создавать свои фишки. Для нас скорость запуска новых сервисов повлияет на уровень доверия клиентов и их готовность сотрудничать с банком.
Еще один сюжет – мы небольшая группа разработчиков, запустившая интернет-стартап. Наш, как и любой другой, бюджет имеет ограничения, мы должны находить наиболее эффективные способы разработки с точки зрения оптимизации операционных расходов. Для нас величина текущих затрат влияет на срок окупаемости и инвестиционную привлекательность проекта.
Всю эту галерею объединяет потребность в гибкой, легко масштабируемой и экономной ИТ‑инфраструктуре. По сравнению с классической моделью, когда программно-аппаратный комплекс находится и обслуживается в компании, с точки зрения гибкости и совокупной стоимости владения часто выигрывают облачные модели, когда ИТ-ресурсы предоставляются как сервис.
Частным проявлением облачной модели стали бессерверные вычисления, они же Serverless Computing или просто Serverless. О них мы расскажем в этой статье. Спойлер: серверы для вычислений все-таки используются.

Что такое бессерверные вычисления
Общепринятое определение бессерверных вычислений – модель предоставления вычислительных ресурсов с оплатой за их фактическое потребление. Первое ключевое отличие бессерверных вычислений от других облачных моделей состоит в том, что пользователь не имеет доступа к настройке серверов и хранилищ, эту работу провайдер берет на себя.
Получается, что серверы все же используются в бессерверных вычислениях, просто пользователь не вынужден разбираться в конфигурировании и может сосредоточиться на своих бизнес-задачах. Второе ключевое отличие – это оплата по факту потребления. Условно это можно сравнить со счетчиком воды: пока его нет, все начисления делаются по нормативу, а если есть, то в соответствии с реальным использованием.
В настоящий момент облачные провайдеры предлагают разные варианты реализации модели Serverless Computing, наибольшее распространение получила модель FaaS, Function as a Service, которая позволяет выполнять отдельные фрагменты кода в ответ на событие или по запросу.
Как это работает
В модели FaaS мы имеем дело с так называемыми инстансами, в данном контексте имеются в виду экземпляры объекта. К примеру, один пользователь открыл в приложении новый документ, то же самое сделал другой пользователь: каждый открытый документ – это инстанс.

Другой пример: сервис для конвертации файлов из одного формата в другой, каждый запрос на конвертацию будет инстансом. Любой инстанс вызывается либо в ответ на событие, триггер, либо по запросу. Чем инстансов больше, тем выше нагрузка на вычислительную платформу.
Реализация модели FaaS предполагает создание кластеров с ограниченным сроком действия для обслуживания определенного вида инстанса. При этом кластер будет использовать ресурсы облачного провайдера, а именно серверы и хранилища данных. Если инстанс создается впервые, то формируется новый кластер.
Если же запросы типовые, их много, то сформированный кластер будет мгновенно масштабироваться в соответствии с текущими потребностями в ресурсах, причем, как расти, так и уменьшаться. Если новых инстансов не возникает в течение определенного времени, кластер пропадет. Примечательно здесь то, что при Serverless Computing разработчику не надо контролировать распределение ресурсов, все происходит автоматически.
Единственное, что может волновать разработчика – это холодные старты, то есть первые обращения к инстансам. Формирование кластера может занять до сотни миллисекунд или даже одной секунды. Это критическое время для некоторых приложений, поэтому оно требует внимания.

В настоящий момент в качестве решения проблемы холодных стартов в критичных точках специально создаются кластеры и с помощью определенных утилит постоянно «подогреваются», некоторые облачные провайдеры предоставляют сервисы с ускоренным формированием кластеров – не более 20 миллисекунд, что соответствует многим требовательным к времени старта приложениям.
E-commerce в числе первых, кому нужен Serverless
Мы уже рассмотрели выше пример, когда бессерверные вычисления полезны в электронной коммерции – при высокой зависимости продаж от сезона или определенных событий. Такая зависимость характера для универсальных магазинов, билетных касс, строительных магазинов, пассажирских авиаперевозок, отелей и многих-многих других.
С помощью Serverless компании e‑commerce легко оптимизируют затраты на вычислительные ресурсы при сезонных нагрузках: перестанут оплачивать время простоя инфраструктуры, смогут сэкономить на закупке дополнительного оборудования, его настройке и обслуживании.
Еще одна причина, почему руководству e-commerce стоит рассмотреть Serverless Computing – более высокая скорость запуска приложений и версий. Циклы разработки реализуются быстрее за счет того, что программный код исходно разбит на независимые компоненты, которые выполняются отдельно от других сервисов.
Это значит, что коммерческие и технологические идеи быстрее воплотятся в жизнь и будут приносить пользу для бизнеса. Такие идеи могут быть из сферы чат-ботов, предсказательных моделей на методах машинного обучения или емейл-маркетинга.
И, наконец, третья причина – возможность оптимизировать работу ИТ-подразделения, направив внимание экспертов на решение бизнес-задач. Бессерверные вычисления позволяют ИТ‑сотрудникам сконцентрироваться на качественном развитии приложений и интернет-проектов, а не на подборе подходящей инфраструктуры и ее обслуживании. При этом управление всем жизненным циклом приложения можно оставить на одного DevOps-инженера, целая команда не нужна.
Преимущества бессерверных вычислений
Говоря о Serverless, мы выделяем 6 основных преимуществ:
1. Моментальная масштабируемость. В зависимости от текущей потребности выделено столько ресурсов, сколько необходимо. Масштабирование происходит за доли миллисекунды, а ограничений практически не существует.
2. Простота выделения ресурсов. Все необходимые настройки выполняет облачный провайдер. Он же отвечает за безопасность данных, актуальность лицензий и обслуживание аппаратного комплекса.
3. Разумная экономия. Возможность оплаты фактически потребленных ресурсов, отсутствие необходимости закупать оборудование и его обслуживать.
4. Минимум глобальных ошибок кода. Реализация бессерверных вычислений подразумевает отсутствие жестких связей между отдельными функциями и контейнерами, что позволяет избежать ошибок при использовании памяти.
5. Скорость запуска приложений и версий. Высокие показатели достигаются благодаря независимости компонентов: все изменения производятся в контуре конкретного сервиса или функции.
6. Упрощенный код. В модели FaaS есть возможность создавать простые функции, которые выполняют одну и ту же задачу независимо друг от друга.
Где еще используются бессерверные вычисления
Сфера применения Serverless Computing, на самом деле, достаточно широка. К тому же бессерверные вычисления можно использовать для решения узкоспециализированных задач, не связанных непосредственно с запросами, которые генерируют клиенты. Например, для организации потокового импорта и экспорта данных.
Возможности Serverless также могут быть полезны для решения задач маркетинга: отправка сообщений по различным каналам, в частности, пуш-сообщений, СМС или электронных писем, и также запуск чат-ботов и виртуальных помощников.
Компания Rusonyx обладает многолетним опытом обслуживания бессерверных вычислений и готова предложить эффективные и гибкие варианты технологической поддержки практически любой задачи. Мы имеем глубокую экспертизу оказания облачных сервисов компаниям e‑commerce и медиапроектам, а им преимущества Serverless как раз особенно полезны.
Свяжитесь с нами, если у Вас остались вопросы.
