К нам в Doubletapp обратились организаторы Fame to Flame — федерального танцевального чемпионата. Онлайн-часть ивента планировалась как ядро всей механики конкурса — регистрация участников, загрузка видео, голосование, работа с чеками. При декомпозиции задач мы поняли, что сложность здесь на стыке: видеостриминг, антифрод, всплески нагрузки и жёсткий дедлайн в два месяца. Но у нас было мощное оружие — опыт.

Fame to Flame — VK Mini App на 80 тыс. пользователей
Fame to Flame — VK Mini App на 80 тыс. пользователей

С 2018 года мы создаём цифровые инструменты для организации мероприятий:

  • разработали и поддерживаем мобильные приложения (iOS, Android), сайт и CRM для международного музыкального фестиваля Ural Music Night;

  • сайт и CRM для шоукейс-фестиваля актуальной музыки New/Open;

  • создали цифровую инфраструктуру для книжного фестиваля «Красная строка» — от сайта до системы управлени�� заявками;

  • спроектировали и запустили портал и административную панель для Международного фестиваля студенческого спорта в Екатеринбурге;

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

Для Fame to Flame мы разработали мини-приложение в экосистеме VK. Нужно было учесть особенности платформы, выверить пользовательские сценарии и заложить запас прочности на случай резкого роста аудитории. В итоге получился VK Mini App с собственным стримингом.
В статье подробно разберём, какие ключевые технические решения сделали платформу стабильной и удобной, несмотря на все вызовы.

Содержание:

Что хотел заказчик

Онлайн-часть Fame to Flame должна была выполнять сразу несколько ролей: быть витриной конкурса, площадкой для пользовательского контента и транзакционным слоем, связывающим офлайн-покупки с цифровой активностью.

Главная инженерная сложность возникала на уровне комбинации фич. Нужно было поддержать три разных пользовательских потока:

  • танцоры загружают видео

  • зрители массово смотрят и голосуют

  • организаторы управляют конкурсной логикой

При этом нагрузка была неравномерной. В дни запусков этапов и во время финального стрима ожидались резкие пики, поэтому архитектуру изначально проектировали под худший сценарий.

В качестве клиентской платформы организаторы выбрали VK Mini App, потому что танцоры, их поклонники, члены жюри и просто любители уличных танцев уже есть на платформе: их не нужно дополнительно привлекать, регистрировать на стороннем сервисе или просить устанавливать отдельное приложение. Это сразу сокращало барьер входа и повышало вовлечённость.

Почему VK подошёл идеально для мини‑аппа такого масштаба?

  • Удобная авторизация, мы не теряем зрителей на этапе регистрации;

  • есть возможность привлечения трафика через магазин приложений в VK;

  • потенциальная интеграция с возможностями платформы, которые доступны только после авторизации. Например, мы загружали видео участника к нему на страницу, что потенциально дополнительно генерило трафик для конкурса;

  • не роняем retension, т.к. приложение отображается в списке приложений пользователя в VK.

Видео: главный источник сложности

Очень быстро стало ясно, что узким местом станет видео. Для системы это тяжёлые файлы, непредсказуемые паттерны просмотра и высокий риск деградации UX.

Изначально рассматривали стандартный VK-плеер. Но в конкурсной механике требовался полный контроль над контентом после загрузки, поэтому в итоге выбрали собственный стриминг-контур.

Мы реализовали HTTP-стриминг с сегментацией видео по модели HLS (HTTP Live Streaming). Такой подход:

  • ускоряет старт воспроизведения

  • позволяет начинать просмотр с произвольной позиции

  • даёт адаптивное качество под канал пользователя

Для мобильной аудитории это оказалось критично.

GPU-транскодинг под пользовательскую загрузку

Следующий риск — массовая загрузка пользовательских видео. CPU-кодирование в таком сценарии быстро становится бутылочным горлышком, поэтому в архитектуру сразу заложили аппаратное ускорение.

Конвертация выполняется на GPU через NVENC/NVDEC. Аппаратные блоки хорошо распараллеливают кодирование, при этом CPU остаётся доступным для:

  • обработки HTTP-запросов

  • работы с PostgreSQL и Redis

  • Выполнения фоновых задач.

Важно учитывать, что аппаратное кодирование масштабируется с ограничениями по количеству параллельных сессий на GPU, поэтому при расчёте ёмкости мы закладывали запас по воркерам.

На практике это заметно стабилизировало систему под пиками загрузки: пользователь получает быстрый отклик при аплоаде, а backend сохраняет предсказуемую утилизацию CPU.

Асинхронный пайплайн обработки

Бэкенд построен на Django Ninja. Поверх развернули классический стек:

  • PostgreSQL — основное хранилище

  • Redis — кэш и брокер

  • Celery — фоновые задачи

Ключевой принцип — тяжёлая обработка не блокирует пользовательские операции.

Когда танцор загружает видео:

  1. API быстро принимает файл

  2. задача ставится в очередь

  3. Celery-воркеры выполняют транскодинг

  4. формируются профили качества: 480p / 720p / 1080p

Такой пайплайн сохраняет отзывчивость интерфейса даже при всплесках загрузок.

Тот же механизм используется для сервисной логики — обновления рейтингов и проведения розыгрышей.

Architecture Overview
Architecture Overview

Подготовка к пиковым нагрузкам

Пиковые сценарии были предсказуемы: старты этапов, массовые голосования, финальный стрим. Фокус сместился с чистого ускорения на устойчивость под пиковыми нагрузками.

Мы использовали многоуровневое кэширование.

На сервере: Redis забирает значительную часть горячих запросов, снижая давление на PostgreSQL.

На клиенте: часть данных живёт в браузерном кэше — например, редко меняющиеся справочники.

Рейтинги: для рейтингов применили materialized view с периодическим refresh, чтобы тяжёлые выборки не пересчитывались на каждый запрос и данные оставались актуальными.

Дополнительно включили:

  • условные HTTP-запросы (ETag / Last-Modified)

  • gzip-сжатие статики.

По отдельности эти оптимизации дают умеренный эффект, вместе — заметно разгружают систему под пиками.

Наблюдаемость и раннее обнаружение деградации

Мониторинг собрали на классическом стеке Prometheus + Grafana + Alertmanager + Loki (он помог расследовать инциденты и баги).

Мы снимаем:

  • инфраструктурные метрики

  • latency API

  • нагрузку на ключевые сервисы

Важно было видеть как сам факт деградации, так и предшествующий ей тренд.

Alertmanager отправляет уведомления в Telegram при выходе за пороги. Централизованное логирование помогает быстро коррелировать ошибки между сервисами. В продакшене это несколько раз позволило поймать пограничные сценарии до пользовательских жалоб.

Модерация VK как часть production-цикла

В VK Mini Apps приложение проходит полноценную модерацию, включая публичное бета-тестирование через VK Testers. Этот этап мы заложили в таймлайн как полноценную фазу проекта.

В резерве держали план миграции в Telegram: backend уже был к этому готов, фронтенд потребовал бы адаптации под другой SDK.

В итоге приложение прошло модерацию без критичных правок.

Мы подготовили чек-лист для тех, кто еще не сталкивался с модерацией мини-приложений в VK.
Забирайте чек-лист и проходите модерацию с первой попытки.

Фронтенд и кастомный видеоплеер

На фронте ключевым решением стал отказ от коробочного iFrame-плеера VK. Требовалась полностью управляемая свайп-лента, кастомные реакции и предсказуемая работа при нестабильной сети.

Фронтенд реализован как SPA и раздаётся статикой через Nginx.

Мы активно используем:

  • агрессивное кэширование

  • lazy-подгрузку видео

  • предзагрузку следующего элемента ленты

Для короткой видеоленты это напрямую влияет на «липкость» скролла и пользовательский опыт.

Интеграция с VK Mini Apps SDK закрывает:

  • авторизацию

  • работу с QR

  • публикацию видео в профиль пользователя.

Результаты

На платформе зарегистрировалось более 80 000 пользователей, приложение запустили около 260 000 раз, организаторы разыграли 4000 призов, а финальный стрим прошёл без деградации сервиса.

Онлайн-часть спокойно пережила пиковые нагрузки, после чего заказчик масштабировал механику и продолжил использовать решение.

Проект Fame to Flame мы делали в сотрудничестве с командой маркетингового агентства ADV Cake: коллеги управляли коммуникациями и креативом, а мы отвечали за архитектуру и разработку.

Если вы планируете

  • конкурс или UGC-механику с видео

  • мини-приложение в VK, Telegram и на других платформах,

  • продукт с ожидаемыми пиками нагрузки — приходите обсудить задачу.

    Мы проектируем мини-приложения и highload-механики под реальные пользовательские сценарии и помогаем запускаться в сжатые сроки.