SlimFaas: лёгкая FaaS-платформа для Kubernetes

SlimFaas — это лёгкая, готовая к использованию «из коробки» платформа типа «функции как сервис» (Function-as-a-Service, FaaS) для Kubernetes (а также Docker Compose / Podman Compose). Она создана с упором на скорость, простоту и минимализм — с принципиальным фокусом на автомасштабировании:

  • масштабирование 0 → N на основе истории HTTP-запросов и расписаний,

  • масштабирование 0 → N по отставанию Kafka (lag) через вспомогательный сервис SlimFaas Kafka,

  • масштабирование N → M на основе PromQL-запросов,

  • встроенное хранилище метрик, отладочные эндпоинты и масштабирование до нуля — всё это прямо из коробки,

  • встроенный пользовательский интерфейс по корневому адресу SlimFaas для наблюдения за функциями, заданиями, очередями и сообщениями в реальном времени,

  • временные эндпоинты Data Files для приёма и хранения двоичных файлов (от крошечных до очень больших) с TTL-хранилищем — идеально для кэширования и агентских рабочих процессов,

  • временные эндпоинты Data Sets (/data/sets) для хранения небольших KV-данных в стиле Redis (кэш, JSON-состояние, флаги) с опциональным TTL — данные реплицируются по кластеру через надёжный слой консенсуса.

Примечание

Ищете интеграцию с MCP? Познакомьтесь с SlimFaas MCP — сопутствующей средой выполнения, которая на лету превращает любое описание OpenAPI в инструменты, совместимые с MCP.

Зачем использовать SlimFaas?

🚀 Автомасштабирование, которое действительно понимает ваш трафик

  • Масштабирование до нуля и пробуждение

    • Снижение числа реплик до 0 после периода бездействия с настраиваемыми таймаутами.

    • Пробуждение 0 → N на основе реального HTTP-трафика и/или расписаний в стиле cron.

    • Пробуждение 0 → N по активности Kafka-топиковSlimFaas Kafka отслеживает отставание потребителей и вызывает API пробуждения SlimFaas.

    • Управление начальной ёмкостью через ReplicasAtStart для снижения влияния холодного старта.

  • Двухфазная модель масштабирования

    • 0 → N: управляется историей HTTP-запросов, расписаниями и отставанием Kafka (SlimFaas Kafka) — функции запускаются только тогда, когда они реально нужны.

    • N → M: управляется встроенным мини-вычислителем PromQL поверх внутреннего хранилища метрик.

    • Масштабирование на основе метрик запускается только при наличии хотя бы одного пода — без опоры на несуществующие метрики.

  • Автомасштабировщик на основе PromQL

    • Правила масштабирования задаются PromQL-запросами, например:

      • sum(rate(http_server_requests_seconds_count{namespace="…​",job="…​"}[1m]))

      • max_over_time(slimfaas_function_queue_ready_items{function="my-func"}[30s])

      • histogram_quantile(0.95, sum by (le) ( rate(http_server_requests_seconds_bucket{…​}[1m]) ))

    • Пороговые значения задаются на под (AverageValue) или глобально (Value).

    • Политики масштабирования вверх/вниз и окна стабилизации — по образцу HPA/KEDA.

  • Встроенный сбор метрик

    • SlimFaas опрашивает только HTTP-эндпоинты метрик в формате Prometheus у подов с аннотацией prometheus.io/scrape: "true".

    • Хранятся только те ключи метрик, которые запрошены в триггерах автомасштабирования или отладочных запросах.

    • Один выделенный узел собирает и сохраняет метрики; остальные узлы читают из того же хранилища.

  • Удобная отладка

    • POST /debug/promql/eval — вычислить PromQL-выражение по внутреннему хранилищу и получить скалярный результат.

    • GET /debug/store — посмотреть, какие метрики собираются, сколько серий хранится и каков объём данных.

    • Легко ответить на вопрос: «Что видит SlimFaas, принимая решение о масштабировании?»

  • Ориентация на FinOps

    • Окно хранения метрик — 30 минут, что обеспечивает предсказуемое потребление памяти.

    • Масштабирование до нуля и расписания позволяют держать некритичные нагрузки в спящем режиме.

    • Минимальный footprint управляющего уровня — ресурсы не тратятся впустую на саму логику автомасштабирования.

🧵 Синхронные и асинхронные функции

  • Простые HTTP-эндпоинты для синхронных и асинхронных вызовов.

  • Асинхронный режим:

    • ограничение числа одновременных запросов на функцию,

    • настройка поведения при повторных попытках и стратегий отсрочки,

    • принятие решений об автомасштабировании на основе метрик очереди.

⏱ Задания (Jobs)

  • Запуск разовых, пакетных и запланированных (cron) заданий через HTTP-вызовы.

  • Настраиваются:

    • параллелизм,

    • видимость (публичное/приватное),

    • поведение при повторных попытках.

🔐 Приватные и публичные функции и задания

  • Функции можно пометить как публичные или приватные:

    • Приватные: доступны только внутри кластера или из доверенных подов.

    • Публичные: доступны через Ingress / API-шлюзы как обычно.

📣 Внутренние события в стиле «публикация/подписка»

  • Синхронная отправка событий каждой реплике выбранных функций.

  • Дополнительная шина событий не нужна — идеально для fan-out внутри кластера, инвалидации кэша, обновления конфигурации и т. п.

🧰 Data Files и Data Sets (приём в реальном времени + эфемерное кэширование + надёжный KV)

SlimFaas включает два дополняющих друг друга «data»-API.

📁 Data Files (временные двоичные артефакты)

Data Files — эндпоинты для потоковой передачи, хранения и раздачи временных файлов, от крошечных до очень больших двоичных данных. Идеально подходят для агентских рабочих процессов и приёма данных в реальном времени: загрузите файл один раз, получите id, а инструменты/функции заберут его, когда будут готовы.

  • Загрузка потоком (без буферизации в памяти или на диске)

  • Вложения и многоэтапные потоки, готовые к агентским сценариям

  • Эфемерное кэширование промежуточных артефактов

  • Жизненный цикл на основе TTL (автоматическое удаление)

🧠 Data Sets (KV-хранилище в стиле Redis для небольшого состояния)

Data Sets — это небольшое KV-хранилище в стиле Redis (сырые байты), реплицируемое по кластеру SlimFaas.

  • Загрузка потоком

  • Хранение любых небольших данных: JSON, строки, флаги, лёгкие кэш-записи

  • Опциональный параметр ttl в миллисекундах (автоматическое удаление)

  • Жёсткое ограничение: 1 МиБ на значение

🧠 «Mind Changer» (API статуса и пробуждения)

  • Встроенные REST API для:

    • мониторинга состояния функций и реплик,

    • принудительного пробуждения функций,

    • интеграции состояния автомасштабирования в собственные инструменты и дашборды.

🔌 Готово к работе без лишних настроек

  • SlimFaas разворачивается как обычный под / StatefulSet с минимальной конфигурацией.

  • Существующие рабочие нагрузки подключаются простым добавлением аннотаций — SlimFaas берёт управление масштабированием на себя без переписывания приложений.

⚡ Минимализм и скорость

  • Написан на .NET:

    • акцент на производительности и низком потреблении памяти,

    • архитектура, дружественная к AOT-компиляции,

    • минимальное количество зависимостей.

С чего начать?

Полезные ссылки:

  • Начало работы — как развернуть SlimFaas на Kubernetes или Docker Compose.

  • Масштабирование:

    • Автомасштабирование — подробно о масштабировании 0 → N / N → M, PromQL-триггерах, сборе метрик и отладочных эндпоинтах.

    • Kafka Connector — использование отставания Kafka-топиков для пробуждения функций 0 → N и поддержания воркеров в активном состоянии, пока есть сообщения.

    • Planet Saver — как запускать реплики и следить за ними из JavaScript-фронтенда.

  • Функции и рабочие нагрузки:

    • Функции — синхронные и асинхронные вызовы функций.

    • Пользовательский интерфейс — встроенный UI для мониторинга функций, очередей, заданий и сообщений в реальном времени.

    • События — внутренние синхронные события в стиле публикация/подписка.

    • Задания — определение и запуск разовых заданий.

    • OpenTelemetry — распределённая трассировка, метрики и логи через интеграцию с OpenTelemetry.

  • Данные и файлы:

    • Data Files — приём, хранение и раздача временных двоичных артефактов.

    • Data Sets — небольшие KV-данные в стиле Redis (кэш, JSON-состояние, флаги), реплицируемые по кластеру, с опциональным TTL.

  • Как это работает — архитектура и устройство SlimFaas.

  • MCP — как превратить любое описание OpenAPI в инструменты, совместимые с MCP, прямо на лету.

Надеемся, SlimFaas поможет вам упростить автомасштабирование, снизить затраты и сохранить serverless-нагрузки стройными.

Сообщество и управление

Пользователи проекта

Список организаций, использующих проект в продакшене или на стадии тестирования.

Добавьте свой логотип через pull request:

  • Логотип должен быть в формате PNG, размером 100 пикселей по ширине и 100 пикселей по высоте.

  • Поместите логотип в папку documentation/adopters.

© 2026 meganuke