Как ProGlove масштабировал SaaS до миллиона AWS Lambda-функций
AWS Lambda позволяет запускать код без управления серверами, но что происходит, когда количество функций переваливает за миллион? Производитель промышленных носимых устройств ProGlove поделился опытом масштабирования своей SaaS-платформы до запуска более одного миллиона Lambda-функций, развёрнутых в

AWS Lambda позволяет запускать код без управления серверами, но что происходит, когда количество функций переваливает за миллион? Производитель промышленных носимых устройств ProGlove поделился опытом масштабирования своей SaaS-платформы до запуска более одного миллиона Lambda-функций, развёрнутых в тысячах выделенных клиентских аккаунтов. Этот кейс — не просто демонстрация возможностей serverless, а практическое руководство для инженеров, строящих мультитенантные системы с высокими требованиями к изоляции и безопасности.
Архитектура мультитенантности на Lambda
ProGlove использует носимые сканеры штрих-кодов, которые передают данные в облако для обработки. Чтобы обеспечить полную изоляцию данных каждого клиента, компания решила выделять отдельный аккаунт AWS для каждого заказчика. Внутри каждого аккаунта работает набор Lambda-функций, отвечающих за обработку событий, валидацию, аналитику и интеграцию. Такой подход гарантирует, что утечка данных или сбой в одном клиентском окружении не повлияет на других.
Управление тысячами аккаунтов потребовало автоматизации на всех уровнях. ProGlove использует AWS Organizations для централизованного управления аккаунтами, политиками и бюджетами. Каждый новый клиент автоматически получает выделенный аккаунт с предварительно настроенными Lambda-функциями, что сокращает время развёртывания с дней до минут.
Инфраструктура как код и CI/CD
Для развёртывания и обновления функций в таком масштабе ProGlove применяет Infrastructure as Code (IaC) с помощью AWS CloudFormation. Шаблоны CloudFormate описывают все ресурсы: от самих функций до триггеров, ролей IAM и логов. Изменения проходят через CI/CD пайплайн, который автоматически развёртывает обновления во всех клиентских аккаунтах. Это позволяет поддерживать единую версию кода и быстро выпускать исправления или новые функции.
Ключевым фактором успеха стало правильное проектирование гранулярности функций. Вместо монолитной функции, обрабатывающей все типы событий, ProGlove разбила логику на множество мелких, специализированных Lambda. Каждая функция отвечает за одну задачу: приём данных, проверку формата, обогащение, запись в базу. Это упрощает тестирование, отладку и масштабирование отдельных компонентов.
Как управлять миллионом функций без хаоса
Когда количество функций переваливает за сотни тысяч, традиционные методы мониторинга и логирования перестают работать. ProGlove использует централизованные логи в Amazon CloudWatch Logs, агрегируя данные из всех аккаунтов через кросс-аккаунтные роли. Для мониторинга производительности применяются дашборды CloudWatch, которые отслеживают ключевые метрики: количество вызовов, длительность, ошибки и холодные старты.
Особое внимание уделяется управлению версиями и псевдонимами Lambda. ProGlove использует псевдонимы (например, "production", "staging") для бесшовного переключения трафика между версиями. Это позволяет проводить канареечные развёртывания и мгновенный откат в случае проблем.
Какие лимиты пришлось преодолеть
Хотя AWS Lambda имеет мягкие лимиты (например, 1000 функций на регион по умолчанию), ProGlove столкнулась с необходимостью их повышения. Компания заранее обратилась в AWS Support для увеличения квот на количество функций, аккаунтов и одновременных выполнений. Без этого масштабирование до миллиона было бы невозможным.
Ещё одной проблемой стали холодные старты. В мультитенантной архитектуре с тысячами аккаунтов функции редко вызываются достаточно часто, чтобы оставаться "горячими". ProGlove решила эту проблему, используя Provisioned Concurrency для критически важных функций и оптимизируя код для уменьшения времени инициализации (например, уменьшая размер пакетов и используя более лёгкие рантаймы).
Какие уроки можно извлечь из этого кейса
Для инженеров, строящих serverless-решения, опыт ProGlove даёт несколько важных выводов. Во-первых, выделенные аккаунты для каждого клиента — это мощный, но дорогой способ изоляции. Его стоит применять, когда требования безопасности превыше всего. Во-вторых, автоматизация развёртывания через IaC и CI/CD — обязательное условие для масштабирования. Ручное управление тысячами функций и аккаунтов невозможно.
В-третьих, гранулярность функций должна быть продумана заранее. Слишком мелкие функции увеличивают накладные расходы на управление, слишком крупные — усложняют тестирование и масштабирование. ProGlove нашла баланс, разбив логику на функции среднего размера, каждая из которых выполняет одну бизнес-операцию.
Какие метрики производительности остаются неизвестными
К сожалению, AWS и ProGlove не раскрыли точные метрики, такие как процентили задержек (p95, p99), количество ошибок или полная стоимость эксплуатации. Также не указано, сталкивалась ли компания с какими-либо лимитами сервиса Lambda на пути к миллиону функций, кроме очевидного повышения квот. Эти данные были бы полезны для точного планирования бюджета и производительности.
Тем не менее, сам факт успешного развёртывания миллиона функций доказывает, что AWS Lambda способен обслуживать сверхвысокие нагрузки в мультитенантной архитектуре. Для SaaS-компаний и IoT-платформ этот кейс — ориентир для проектирования собственных serverless-систем.
Заключение
ProGlove показала, что масштабирование до миллиона Lambda-функций реально при правильной архитектуре и автоматизации. Ключевые компоненты успеха: выделенные аккаунты через AWS Organizations, Infrastructure as Code с CloudFormation, гранулярные функции и proactive управление лимитами. Если вы строите serverless-платформу с тысячами клиентов, возьмите на вооружение эти практики — они помогут избежать многих проблем на пути роста.