Бессерверные вычисления (Serverless)

Serverless (бессерверные вычисления) — это модель облачных вычислений, при которой разработчик пишет и разворачивает отдельные функции (или небольшие сервисы), а облачный провайдер берёт на себя всё, что связано с выделением серверов, масштабированием и управлением инфраструктурой — серверы физически по-прежнему существуют, но разработчик никогда их не видит, не настраивает и не платит за простаивающие мощности. Доминирующая форма — Function-as-a-Service (FaaS): AWS Lambda, Google Cloud Functions, Azure Functions и Cloudflare Workers позволяют развернуть одну функцию, которая запускается в ответ на триггер (HTTP-запрос, загрузка файла, сообщение из очереди) и автоматически масштабируется от нуля до тысяч одновременных вызовов, при этом оплата идёт за вызов и время выполнения, а не за час работы сервера. Почему это важно для разработчиков AI/SaaS: serverless устраняет огромный пласт операционной работы (планирование мощностей, патчинг, политики масштабирования), а модель оплаты по факту использования крайне привлекательна для неравномерных или малонагруженных сценариев — обработчик webhook'ов, срабатывающий изредка, почти ничего не стоит на serverless по сравнению с оплатой постоянно работающего сервера. Компромиссы — это задержка холодного старта (функция, которая давно не запускалась, при первом вызове работает дольше, пока провайдер поднимает среду выполнения), отсутствие состояния (нельзя полагаться на то, что состояние в памяти сохранится между вызовами — постоянное состояние должно храниться во внешней базе данных или кэше) и ограничения по времени выполнения (большинство FaaS-платформ ограничивают один вызов несколькими минутами, максимум до 15 минут). Как это работает: вы разворачиваете код функции вместе с манифестом, описывающим её триггер и лимиты ресурсов (память, таймаут). Инфраструктура провайдера слушает этот триггер и при каждом событии поднимает (или переиспользует «тёплую») среду выполнения, запускает вашу функцию с данными события на входе, фиксирует возвращаемое значение/ответ и затем сворачивает или переиспользует среду. Параллелизм обрабатывается автоматически — 1000 одновременных запросов поднимают (до) 1000 параллельных экземпляров функции без настройки группы автомасштабирования разработчиком. Практический пример: SaaS-продукту нужно изменять размер загруженного пользователем аватара при каждой загрузке. Вместо выделенного постоянно работающего сервера обработки изображений они разворачивают функцию AWS Lambda, триггером для которой служат события создания объектов в S3. Когда пользователь загружает `avatar.jpg` в S3-бакет, S3 автоматически вызывает Lambda-функцию с ключом объекта; функция скачивает изображение, изменяет его размер до трёх вариантов миниатюр с помощью библиотеки вроде Sharp, загружает уменьшенные версии обратно в S3 и завершает работу — всё это происходит менее чем за секунду, стоит доли цента, а команда ни разу не настраивала и не обслуживает ни одного сервера ради этой функции.

Похожие термины

Ещё термины: Инструменты разработки