Открыть сервис

Yandex Serverless Containers

Yandex Serverless Containers — это сервис облачной платформы Yandex Cloud (входит в состав экосистемы «Яндекс»), реализующий модель бессерверных вычислений (serverless computing) для запуска контейнеризированных приложений. Сервис позволяет выполнять код в Docker-контейнерах без необходимости управления серверной инфраструктурой, автоматически масштабируя количество экземпляров в зависимости от входящей нагрузки. Yandex Serverless Containers является частью бессерверного стека Yandex Cloud, наряду с Yandex Cloud Functions (аналог AWS Lambda) и управляемыми базами данных.

Архитектура и принцип работы

Yandex Serverless Containers основан на модели «функция как услуга» (FaaS), адаптированной для контейнеров. В отличие от классических серверных приложений, где разработчик арендует виртуальные машины или выделенные серверы и управляет их состоянием, в бессерверной модели контейнеры запускаются только в ответ на события (HTTP-запросы, сообщения из очередей, изменения в базах данных и т.д.). После завершения обработки запроса контейнер может быть остановлен, а его ресурсы освобождены.

Компоненты системы

  • Контейнер (Container) — образ Docker с приложением, загруженный в реестр контейнеров Yandex Container Registry или другой совместимый реестр (например, Docker Hub). Сервис поддерживает образы на основе любых операционных систем (Linux, Windows Server) и языков программирования, при условии, что приложение запускается как HTTP-сервер, слушающий порт 8080 (по умолчанию) или порт, заданный переменной окружения PORT.
  • Ревью (Revision) — версия контейнера, создаваемая при каждом обновлении образа или конфигурации. Каждая ревизия имеет уникальный идентификатор и может быть развёрнута на определённый процент трафика (канареечное развёртывание).
  • Триггер (Trigger) — механизм, связывающий контейнер с источником событий. Поддерживаются триггеры для: HTTP-запросов (через API Gateway), сообщений из очередей Yandex Message Queue (совместима с Amazon SQS), объектов в бакетах Yandex Object Storage, изменений в таблицах Yandex Database (YDB) и таймеров (Cron).
  • Среда выполнения (Runtime) — предустановленное окружение, включающее базовый образ с операционной системой, библиотеками и утилитами. Yandex Serverless Containers использует образы на основе Ubuntu 22.04 LTS с предустановленным Docker Engine.

Жизненный цикл контейнера

  1. Создание и загрузка образа: разработчик упаковывает приложение в Docker-образ, загружает его в Container Registry и создаёт контейнер в Yandex Cloud через CLI, API или консоль управления.
  2. Активация: при поступлении первого запроса или события сервис запускает один или несколько экземпляров контейнера (холодный старт). Время холодного старта зависит от размера образа и сложности приложения, но обычно составляет от 1 до 10 секунд.
  3. Обработка запроса: контейнер обрабатывает запрос, возвращая HTTP-ответ. Максимальное время выполнения одного запроса — 60 минут (по умолчанию 5 минут, настраивается).
  4. Масштабирование: при увеличении нагрузки сервис автоматически запускает дополнительные экземпляры контейнера (до 10 по умолчанию, настраивается до 100). При снижении нагрузки экземпляры останавливаются.
  5. Деактивация: после периода бездействия (по умолчанию 5 минут, настраивается) контейнер останавливается, освобождая ресурсы.

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

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

Yandex Serverless Containers автоматически масштабируется от 0 до заданного максимального количества экземпляров. Каждый экземпляр обрабатывает один запрос одновременно (модель «один запрос — один контейнер»). Для приложений, требующих поддержания постоянного количества «горячих» экземпляров (например, для снижения задержек), можно задать минимальное количество подготовленных экземпляров (provisioned concurrency). Это позволяет избежать холодного старта для критичных запросов, но увеличивает стоимость.

Производительность

  • Время выполнения: до 60 минут на запрос.
  • Объём памяти: от 128 МБ до 8 ГБ на экземпляр.
  • Процессор: пропорционально объёму памяти (1 vCPU на 2 ГБ памяти, но не менее 0,1 vCPU).
  • Размер образа: до 10 ГБ (сжатый), до 20 ГБ (развёрнутый).
  • Сетевые ограничения: до 10 000 одновременных соединений на экземпляр, пропускная способность до 1 Гбит/с.

Стоимость

Модель оплаты — «плати за использование» (pay-per-use). Включает:

  • Время выполнения: тарифицируется за каждую миллисекунду выполнения кода (с округлением до 100 мс). Цена фиксированная для всех регионов (на 2025 год — около 0,00001 ₽ за 1 мс для 1 ГБ памяти).
  • Количество запросов: тарифицируется за каждый миллион запросов (около 100 ₽ за 1 млн).
  • Подготовленные экземпляры: оплачиваются за время, в течение которого экземпляр находится в состоянии готовности, независимо от количества обработанных запросов.
  • Исходящий трафик: тарифицируется отдельно по тарифам Yandex Cloud.

Бесплатный лимит (на 2025 год): 100 000 запросов в месяц, 1 000 000 мс времени выполнения, 10 ГБ исходящего трафика.

Применение

Yandex Serverless Containers используется для задач, где требуется быстрая разработка, автоматическое масштабирование и снижение затрат на инфраструктуру. Основные сценарии:

  • Веб-приложения и API: RESTful и GraphQL-сервисы, обрабатывающие запросы от пользователей или других микросервисов. Благодаря поддержке HTTP-триггеров через API Gateway, контейнеры могут выступать в роли бэкенда для веб-сайтов и мобильных приложений.
  • Обработка событий: асинхронная обработка сообщений из очередей (например, загрузка файлов, генерация отчётов, отправка уведомлений). Контейнер запускается при появлении нового сообщения и обрабатывает его.
  • Пакетная обработка данных: задачи, выполняемые по расписанию (через триггер Cron) — агрегация логов, обновление кэшей, синхронизация данных между системами.
  • Микросервисы: изолированные компоненты приложений, которые могут быть написаны на разных языках и обновляться независимо. Бессерверная модель упрощает развёртывание и масштабирование каждого микросервиса.
  • Тестирование и прототипирование: быстрый запуск контейнеров для проверки гипотез без необходимости настройки серверов.

Ограничения и особенности

  • Холодный старт: при отсутствии активных запросов контейнер останавливается, и первый запрос после простоя обрабатывается с задержкой на запуск. Для критичных к задержкам приложений рекомендуется использовать подготовленные экземпляры.
  • Отсутствие постоянного хранилища: файловая система контейнера эфемерна — данные, записанные во время выполнения, теряются после остановки контейнера. Для постоянного хранения необходимо использовать внешние сервисы (Yandex Object Storage, Yandex Database, Yandex Managed Service for PostgreSQL).
  • Ограничение на время выполнения: запросы, выполняющиеся дольше 60 минут, прерываются. Для длительных задач (например, обучение моделей) требуется использование других сервисов (Yandex Data Proc, Yandex Compute Cloud).
  • Сетевые ограничения: контейнеры не имеют выделенного IP-адреса и не могут быть напрямую доступны из интернета без API Gateway. Поддерживается только исходящее сетевое взаимодействие (через NAT).
  • Региональная доступность: на 2025 год сервис доступен в регионах Россия (Москва, Владимирская область) и Казахстан (Астана).

Сравнение с аналогами

Yandex Serverless Containers является прямым конкурентом сервисов AWS Fargate (в режиме «запуск по событию»), Google Cloud Run и Azure Container Apps. В отличие от Yandex Cloud Functions (аналог AWS Lambda), Serverless Containers позволяет запускать произвольные Docker-образы, что даёт больше гибкости в выборе языков, библиотек и зависимостей. Однако это увеличивает время холодного старта по сравнению с функциями, где образы оптимизированы для быстрого запуска.

История развития

Сервис был анонсирован в 2021 году на конференции Yandex Scale. В 2022 году вышла публичная бета-версия, а в 2023 году — общая доступность (GA). Основные обновления включали поддержку подготовленных экземпляров (2023), интеграцию с Yandex API Gateway (2024) и увеличение лимитов по памяти и времени выполнения (2024).

Источники

  1. Документация Yandex Cloud: «Yandex Serverless Containers» — официальное руководство пользователя.
  2. Блог Yandex Cloud: «Serverless Containers: как запускать контейнеры без серверов» — статья от 2022 года.
  3. Конференция Yandex Scale 2021: анонс сервиса.
  4. Техническая документация Yandex Container Registry.
  5. Сравнительный анализ бессерверных решений на платформе Yandex Cloud — внутренняя документация Yandex.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →