Serverless

Введение

Serverless (бессерверные вычисления) – модель облачных вычислений, при которой провайдер полностью берёт на себя управление инфраструктурой: выделение серверов, масштабирование, отказоустойчивость. Разработчик пишет только функции-обработчики событий.

Термин «serverless» не означает отсутствия серверов – серверы есть, просто разработчик о них не думает. Ключевая модель – Function as a Service (FaaS): небольшая stateless-функция, запускаемая по событию и живущая только время выполнения.

История и контекст

AWS Lambda, запущенный в 2014 году, стал пионером FaaS и задал стандарт для всей индустрии. Microsoft Azure Functions появился в 2016-м, Google Cloud Functions – в 2017-м. В России Yandex Cloud Functions и VK Cloud Functions предоставляют аналогичные сервисы. Serverless-подход быстро нашёл применение в event-driven архитектурах, обработке webhook'ов, автоматизации и API-бэкендах.

Как это работает

Жизненный цикл serverless-функции:

  1. Событие-триггер (HTTP-запрос, сообщение в очереди, изменение в БД, cron);
  2. Провайдер инициализирует контейнер с кодом функции (холодный старт, если контейнер не активен);
  3. Функция выполняется, обрабатывает входные данные, возвращает результат;
  4. Контейнер либо «разогрет» для следующего запроса, либо уничтожен.

Холодный старт (cold start) – задержка при первом запуске или после периода неактивности. AWS Lambda: 100–1000 мс; Azure Functions Consumption plan: до 2 с. Решается через Provisioned Concurrency (AWS) или Premium plan (Azure).

BaaS – Backend as a Service

Помимо FaaS, serverless включает BaaS (Firebase, Supabase, Auth0) – управляемые сервисы аутентификации, БД, хранилища, не требующие написания backend-кода.

Где применяется

  • API-бэкенды с непредсказуемой нагрузкой – автомасштабирование от 0 до тысяч запросов;
  • Обработка событий: webhook'и, S3-триггеры, изменения в БД;
  • Cron-задачи и scheduled-джобы без постоянно работающего сервера;
  • ETL-пайплайны для обработки данных по событию;
  • Edge-вычисления – функции рядом с пользователем через CDN.

Преимущества и ограничения

Преимущества: нет управления инфраструктурой; автоматическое масштабирование; оплата только за реальное выполнение (до нуля в простое); быстрый деплой; встроенная отказоустойчивость.

Ограничения: холодный старт неприемлем для latency-sensitive приложений; ограниченное время выполнения (AWS Lambda – до 15 мин); stateless по природе (состояние во внешних хранилищах); vendor lock-in; сложность локальной отладки и наблюдаемости.

Связь с другими понятиями

Event-driven Architecture – естественная среда для serverless: функции запускаются событиями. Микросервисы и serverless решают схожие задачи, но serverless более гранулярен. Контейнерная ОС и Kubernetes лежат в основе serverless-платформ. OpenAPI используется для документирования serverless API-бэкендов. Feature Flag позволяет управлять rollout'ом serverless-функций без переразвёртывания.