Запустили мы как-то видео-стриминг для нового проекта.
Инфраструктура на AWS. Выбрали App Runner.
Видео обрывалось на 2-й минуте. Причина: лимит, который нельзя обойти.
Вся инфраструктура компании на AWS. EC2, RDS, S3 - стандартный стек.
Новая задача: стриминг видео по запросу. Записи вебинаров, демо продукта.
Выбрали App Runner:
- Логично: уже на AWS, не плодить провайдеров
- Быстро: деплой за 10 минут
- Просто: managed, автоскейлинг из коробки
Первые недели - отлично. Короткие ролики по 60-90 секунд работали без проблем.
Потом добавили длинные видео. Записи вебинаров на 10-15 минут. И тут началось.
Проблема?
App Runner рубит любое соединение на 120 секунде.
Жёстко. Без предупреждения. Без настройки. Нельзя изменить даже за деньги.
Это в документации, но кто её читает, когда уже деплоишь третий сервис на той же платформе?
Результат:
- Видео обрывалось на середине
- Демо клиентам приходилось разбивать на куски
- Записи вебинаров показать полностью - невозможно
Костыли типа “нарезать видео на 90-секундные чанки” работают, но это хак, не решение.
Техническое ограничение = бизнес-ограничение.
- Фича, которую анонсировали клиенту → не работает
- Демо продукта → нельзя показать полностью
- Миграция на другое решение → неделя работы команды
Один параметр в документации стоил недели времени и объяснений, почему “то, что работало на тесте” не работает в проде.
Альтернативы внутри AWS
Lambda (Function URL): 15 минут timeout. Но холодные старты убивают первые секунды стрима.
ECS Fargate: Без лимитов. Но настройка сложнее (IAM, load balancers, scaling policies, networking).
App Runner - это про скорость разработки. ECS - про гибкость. Для 120+ секунд придётся выбрать ECS или искать обходы.
А что у GCP?
Cloud Run: timeout до 60 минут.
Та же модель (контейнер → URL → автоскейлинг), но лимит в 30 раз выше.
Стриминг работает из коробки. Цена сопоставима с App Runner.
Проблема здесь: это другой облачный провайдер.
- Биллинг отдельно
- Мониторинг отдельно
- IAM/права отдельно
- Команда учится новой платформе
Для одного сервиса это может быть дороже, чем костыли на AWS. Но если таких задач несколько - Cloud Run начинает окупаться.
Преимущества App Runner
Простые REST API, задачи <30 секунд. Если у вас уже AWS и нужно быстро задеплоить контейнер - App Runner идеален.
Но если в roadmap:
- Видео-стриминг
- Генерация отчётов >2 минут
- WebSocket/SSE
- Long-polling
Проверьте лимиты до того, как писать код.
Выводы (lesson learned)))
“Мы уже на AWS” - не всегда аргумент для выбора сервиса.
Иногда конкретная задача требует конкретных возможностей. App Runner, Cloud Run, Lambda, ECS - у каждого свои потолки.
Проектирование архитектуры с учётом лимитов платформы избавляет от таких сюрпризов. Но большинство узнают о них, когда уже поздно.
Одна техническая деталь может стоить недели переделок. Или заставить посмотреть на другого провайдера.
P.S. Документацию читают либо до выбора платформы, либо после инцидента на проде. Второе - дороже.