Dynamicast — пример задачи, где нельзя отделить дизайн интерфейса от архитектуры. Для пользователя это платформа, куда можно загрузить видео, увидеть свои материалы и управлять публикацией. Для команды разработки это намного более сложный контур: большой файл должен пройти проверку, обработку, хранение, фиксацию происхождения, публикацию и доставку через инфраструктуру, которая не разваливается при росте нагрузки.
В таких проектах Pena начинает не с экранов и не с набора модных технологий, а с модели процесса. Мы описываем, какие сущности существуют в системе, какие состояния проходит файл, где появляются асинхронные операции, какие события нужно журналировать и какие ошибки должны быть понятны пользователю и поддержке.
Бизнес-задача
Команде Dynamicast был нужен продуктовый контур для публикации и доставки медиа, где видео — это не просто файл в хранилище. У каждого материала должен быть владелец, версия, статус обработки, история действий и понятный путь до публикации.
Ключевые риски были инженерными:
- большой файл может не загрузиться с первой попытки, поэтому процесс должен поддерживать устойчивую загрузку, повторные попытки и понятные ошибки;
- обработка видео занимает время, значит интерфейс не должен обещать мгновенную публикацию там, где работает очередь задач;
- права и происхождение контента нужно фиксировать технически, а не только текстом пользовательского соглашения;
- доставка видео должна учитывать CDN, кеширование, разные устройства и пиковую нагрузку;
- операторам и пользователям нужны статусы, по которым можно понять, где находится материал и что делать дальше.
Архитектурные сложности
У сложной медиаплатформы есть несколько контуров, которые должны быть согласованы между собой.
Первый контур — загрузка. Он отвечает за приём файла, проверку типа, размера, целостности и первичных метаданных. В нём важно не терять состояние: если загрузка оборвалась, система должна понимать, что произошло, а пользователь не должен начинать всё заново без объяснения.
Второй контур — обработка. Видео может проходить нормализацию, генерацию превью, подготовку streaming-профилей, проверку технических параметров и публикацию производных файлов. Эти операции часто асинхронные: они выполняются воркерами, очередями и фоновыми задачами, а не внутри одного HTTP-запроса.
Третий контур — происхождение и права. Для Dynamicast важно было заложить модель, где у медиа есть проверяемая история: кто загрузил файл, когда появилась версия, какие метаданные были зафиксированы, какой отпечаток сформирован и какое событие стало основанием для публикации.
Четвёртый контур — доставка. Пользователь оценивает платформу не по архитектурной схеме, а по тому, открывается ли видео быстро и стабильно. Поэтому CDN, кеширование, origin-нагрузка, fallback и наблюдаемость становятся частью продукта, а не технической деталью “потом”.
Что спроектировали
Мы рассматривали Dynamicast как систему состояний. У видео появляются статусы: создано, загружается, загружено, проверяется, обрабатывается, готово к публикации, опубликовано, требует внимания или отклонено. Такой подход делает процесс прозрачным для пользователя и управляемым для команды поддержки.
В архитектуре были выделены основные домены:
- Media asset — исходный файл, производные версии, превью, технические параметры и связь с владельцем.
- Upload session — процесс загрузки с прогрессом, ошибками, повторными попытками и проверкой целостности.
- Processing job — фоновая задача нормализации, подготовки профилей, генерации артефактов и смены статусов.
- Rights record — данные о владельце, версии, хеше, времени фиксации и событии, которое подтверждает происхождение.
- Delivery profile — параметры выдачи через CDN, кеширование, публичность и доступность материала.
- Audit log — последовательность событий, по которой можно восстановить, что происходило с медиафайлом.
Эти домены важны не только для backend. Они напрямую влияют на интерфейс: пользователь должен видеть свои загруженные видео, понимать текущий статус, получать осмысленные ошибки и не гадать, можно ли уже публиковать материал.
Экраны продукта
Для кейса подготовлены три ключевых состояния интерфейса: главный экран, профиль с загруженными видео и экран загрузки видео. Они показывают разные части одной логики.
Главный экран отвечает за позиционирование и вход в сценарий: пользователь должен быстро понять, что Dynamicast работает с медиа, публикацией и доверенным контуром прав.
Профиль с загруженными видео показывает операционную часть продукта. Здесь важны не декоративные карточки, а список материалов, статусы, действия и понятность дальнейшего шага.
Экран загрузки видео показывает самую чувствительную часть процесса. Для сложного файла нужно объяснить, что происходит сейчас, какие требования к файлу, какой прогресс, какие ошибки возможны и что будет после успешной загрузки.
Эти состояния важны именно вместе: они показывают, как позиционирование, личный кабинет и upload-flow складываются в единый продуктовый сценарий, а не живут отдельными макетами.



Инженерные решения
В таких продуктах ключевая работа находится между “загрузить файл” и “показать видео”. Именно там возникают решения, которые отличают сложную разработку от набора экранов.
Устойчивый upload pipeline
Загрузка больших файлов требует отдельной модели. Нужно хранить сессию загрузки, проверять целостность, фиксировать промежуточные ошибки и не смешивать пользовательский прогресс с серверной обработкой. Если всё спрятать за одной кнопкой “Upload”, продукт быстро станет непредсказуемым.
Асинхронная обработка
Нормализация видео, генерация превью, подготовка streaming-версий и публикация в delivery-контур не должны выполняться синхронно в пользовательском запросе. Для этого нужна очередь задач, воркеры, статусы, ретраи и понятное место, где оператор может увидеть сбой.
Provenance и права
Для Dynamicast важно было заложить слой проверки происхождения контента. Это не заменяет юридические договоры, но усиливает техническую доказуемость: у файла есть отпечаток, версия, владелец, событие фиксации и журнал изменений. Если позже возникает спор, команда может работать не с догадками, а с данными.
CDN и доставка
После публикации видео должно быть доступно стабильно. Поэтому delivery-контур проектируется отдельно: какие файлы лежат в origin, что кешируется на edge, как сбрасывается кеш, какие профили качества нужны, что происходит при ошибке и как мониторить качество выдачи.
Наблюдаемость
В медиаплатформе недостаточно логировать только ошибки приложения. Нужно видеть состояние очередей, время обработки, причины отказов, поведение загрузки, статусы публикации и проблемы доставки. Наблюдаемость помогает не только инженерам, но и поддержке: она быстрее отвечает пользователю, где именно застрял файл.
Результат
В кейсе Dynamicast была сформирована продуктовая и инженерная модель медиаплатформы, где каждый экран связан с реальным backend-процессом. Это принципиально: интерфейс не обещает того, чего не может гарантировать инфраструктура, а инфраструктура не живёт отдельно от пользовательского сценария.
Для бизнеса такой подход даёт несколько преимуществ:
- продукт можно развивать от MVP к полноценной платформе без переписывания базовой модели файла;
- поддержка получает понятные статусы и журнал событий вместо ручного расследования каждого сбоя;
- права и происхождение контента становятся частью технического процесса;
- доставка видео проектируется как отдельная зона ответственности, а не как “просто ссылка на файл”;
- команда может масштабировать функциональность: тарифы, роли, политики доступа, регионы хранения, дополнительные проверки и интеграции.
Где применим такой подход
Подход Dynamicast релевантен не только web3-медиа. Он нужен любому продукту, где контент имеет ценность, историю и требования к доставке: образовательным платформам, корпоративным видеопорталам, медиабиблиотекам, сервисам пользовательского контента, платформам авторов и внутренним системам хранения обучающих материалов.
Pena полезна в таких задачах, когда нужно не “нарисовать загрузчик”, а спроектировать продуктовый контур: от состояния файла и ролей пользователей до CDN, очередей, журнала событий и метрик качества.