Что такое serverless и приведите пример сервиса.

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

Ключевые характеристики

  • Функции как сервис (FaaS): мелкие фрагменты кода (функции), которые выполняются по событию (HTTP-запрос, загрузка файла, сообщение в очереди, расписание).

  • Backend-as-a-Service (BaaS): управляемые сервисы (аутентификация, БД, хранилище, очереди), которые используются вместо собственной серверной реализации.

  • Автоматическое масштабирование: платформа масштабирует исполнение «до нуля» (если нет вызовов — расходы близки к нулю) и «ввысь» при росте нагрузки.

  • Оплата по потреблению: вы платите за реальное время выполнения и ресурсы, за число вызовов и операции управляемых сервисов.

  • Короткое время жизни и статeless: функции обычно короткоживущие и не сохраняют состояние между вызовами (состояние выносится в БД/хранилище).

Преимущества

  • Минимизация операционной нагрузки и ускорение разработки.

  • Экономия при непостоянной нагрузке — нет оплаты за простаивающие серверы.

  • Быстрая масштабируемость при пиках.

  • Простота развертывания микросервисов и event-driven архитектур.

Ограничения и риски

  • Cold start — задержка при первом вызове «холодной» функции; заметна для языков с «тяжёлым» запуском.

  • Ограничения по времени выполнения, памяти, размеру деплоя и др. (зависят от провайдера).

  • Сложность в локальной отладке и тестировании распределённой системы.

  • Потенциальный vendor lock-in при активном использовании провайдер-специфичных интеграций.

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

Типичные сценарии применения

  • HTTP/API endpoints (в сочетании с API Gateway).

  • Обработка файлов и медиа (трансформация, генерация миниатюр).

  • Реакция на события (webhooks, сообщения из очередей, события БД).

  • CRON-задачи, ETL-пайплайны, обработка логов, IoT-воркфлоу.

  • Быстрое прототипирование и backend для мобильных/SPA-приложений.

Лучшие практики

  • Разбивать логику на небольшие, одноцелевые функции.

  • Вынести состояние в управляемые сервисы (объектное хранилище, БД, кеш).

  • Минимизировать размер деплоя и зависимости, чтобы уменьшить cold start.

  • Внедрять мониторинг, трассировку и алерты.

  • Управлять безопасностью через минимальные права (IAM) и секрет-менеджеры.

  • Автоматизировать деплой через IaC и CI/CD.

Пример сервиса — AWS Lambda
AWS Lambda — это FaaS-платформа: вы загружаете функцию (или контейнерный образ), настраиваете триггеры (HTTP через API Gateway, загрузка в S3, сообщения из SQS/SNS, события из БД и расписание) — и платформа запускает код при событиях. Ресурсы (память, CPU) настраиваются для функции; платите за количество вызовов и за время выполнения функции с учётом выделенных ресурсов. Lambda интегрируется с множеством управляемых сервисов, поддерживает разные рантаймы (Node, Python, Go, Java, .NET и т. д.) и позволяет использовать переменные окружения, роли доступа для безопасной работы с другими сервисами. Для критичных по задержке сценариев есть механизмы уменьшения cold start (например, provisioned concurrency). Развёртывание обычно автоматизируют через инструменты типа Serverless Framework, AWS SAM или CDK.