Введение
FaaS (Function as a Service) – модель облачных вычислений, при которой разработчики разворачивают отдельные функции (небольшие единицы кода), а провайдер берёт на себя всю инфраструктуру: серверы, операционные системы, масштабирование и балансировку нагрузки. FaaS – ключевой компонент serverless-архитектуры.
В отличие от традиционного сервера или контейнера, FaaS-функция не «живёт» постоянно. Она запускается по событию (HTTP-запрос, сообщение в очередь, таймер) и завершается после обработки. Это обеспечивает автоматическое масштабирование до нуля и оплату только за фактические вычисления (обычно в единицах GB·секунды).
История и контекст
AWS Lambda, запущенная в ноябре 2014 года, стала первой широкодоступной FaaS-платформой. Это изменило парадигму разработки: вместо управления кластерами EC2 разработчики сосредоточились на бизнес-логике. Вслед за AWS появились Google Cloud Functions (2016), Azure Functions (2016), а в России – Yandex Cloud Functions и VK Cloud Serverless Functions.
FaaS стал фундаментом событийно-ориентированных архитектур (EDA): многие оркестраторы рабочих процессов (AWS Step Functions, Temporal) используют функции как примитивы. Knative и OpenFaaS принесли FaaS-паттерн в Kubernetes-кластеры.
Как это работает
- Деплой функции: код (Python, Node.js, Go, Java и др.) загружается в платформу с описанием триггера и требований к памяти/CPU.
- Триггер: HTTP-запрос, событие из очереди (Kafka, SQS, Yandex Message Queue), таймер (cron) или другое облачное событие инициирует вызов.
- Cold start: при первом вызове (или после простоя) платформа создаёт новый контейнер с кодом функции – занимает 100–2000 мс. Это ключевое ограничение для latency-sensitive приложений.
- Выполнение: функция выполняет логику, обращается к зависимостям (БД, внешние API), возвращает результат.
- Масштабирование: при одновременных запросах платформа параллельно запускает множество экземпляров – без ручной конфигурации.
- Биллинг: оплата за GB-секунды (объём памяти × время выполнения). При нулевом трафике – нулевые расходы.
Где применяется
- API Gateway-backend: обработка HTTP-запросов к REST/GraphQL API без постоянных серверов.
- Обработка событий: реакция на загрузку файла в Object Storage, изменения в БД, сообщения в Kafka.
- Scheduled jobs: регулярные задачи (ночные отчёты, отправка уведомлений) по расписанию cron.
- ML-инференс: запуск небольших моделей для обработки единичных запросов без постоянного GPU-инстанса.
- Webhook-обработчики: приём событий от платёжных шлюзов, мессенджеров, CRM.
Преимущества и ограничения
Преимущества: нулевые операционные расходы на управление серверами; автоматическое масштабирование до нуля; оплата за факт выполнения; быстрый time-to-market; встроенная отказоустойчивость провайдера.
Ограничения: cold start latency (100–2000 мс) критично для real-time; максимальное время выполнения (обычно 15 мин в AWS Lambda); ограничения объёма памяти; сложность локальной отладки и распределённой трассировки; vendor lock-in.
Связь с другими понятиями
FaaS входит в семейство cloudовых моделей: BaaS предоставляет управляемые сервисы, FaaS – вычисление пользовательского кода. Публичное облако – типичная среда размещения. Kubernetes поддерживает FaaS-паттерн через Knative. Autoscaling в FaaS встроен и автоматичен – в отличие от VM-based сервисов, требующих конфигурации.