Онлайн видео-конструктор с расширенными возможностями, такими как:
— создание сотен/тысяч видеороликов по одному шаблону, но с разными текстами и изображениями;
— генерация роликов в реальном времени на основе данных пользователя;
— автоматизация постинга видео в социальные сети;
— создание видео внутри интерфейсов.
Сайт: supa.ru
Ситуация заказчика: У клиента множество микросервисов, написанных на node.js Нужен был унифицированный подход к CI/CD для всех приложений. Особенностью проекта является сильно плавающая нагрузка от приложений-обработчиков видео. Для деплоя применялся Docker. Gitlab использовался только для хранения кода. Сборка и деплой проводились вручную. Развертывание происходило на ноды ECS в Amazon. Веб-приложения были расположены на Heroku.
Цель: Построение CI/CD инфраструктуры в kubernetes-кластере Amazon (EKS).
Решение: Автоматическое масштабирование приложений обработчиков видео реализовано в зависимости от нагрузки CPU. Предприняты следующие действия:
- кластер развернут с помощью eksctl;
- приложения из ECS, перенесли в EKS (k8s в Amazon);
- веб-приложения на Heroku - перенесли в k8s (экономия финансов);
- gitlab раньше использовался только для хранения кода. Сейчас CI запускается автоматически, образ сохраняется в registry, автоматически развертывается новая версия приложения в кластере;
- разработан унифицированный CI для всех микросервисов через Helm;
- сборка и деплой реализован в режиме DinD. Это имеет ряд преимуществ: дополнительную изоляцию, удобное масштабирование, возможность запускать на spot-нодах;
- убраны окружения, настроенные вручную. Подняты 3 окружения dev, prod, stage управляются автоматически;
- используется 2 зоны доступности, минимально необходимое количество для отказоустойчивости.
Используемый стек технологий: AWS, eksctl, Gitlab (CI, registry, gitlab-runner DinD), Helm v3, Prometheus, Grafana, Mongo Atlas.
Результат: Быстрый и автоматический деплой приложений в кластер без простоя сервиса. Использование нескольких окружений для тестирования и подготовки приложений. Удобный мониторинг потребления ресурсов и доступности сервисов. Планируется сделать автоматическое масштабирование приложений в зависимости от количества заданий в очереди на обработку.