Разделите управление конференциями, live-поток и обработку записей. Видео загружают частями напрямую в object storage, затем очередь запускает workers для проверки, watermark и перекодирования.
Система организации и трансляции онлайн‑конференций
Разделите управление конференциями, live-поток и обработку записей. Видео загружают частями напрямую в object storage, затем очередь запускает workers для проверки, watermark и перекодирования.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо спроектировать сервис, позволяющий создавать стримы, проводить онлайн‑конференции и предоставлять пользователям возможность загружать записи прошедших мероприятий.
Функциональные требования:
- Регистрация и вход пользователей;
- Организатор конференции может запустить онлайн‑трансляцию;
- После завершения мероприятия организатор имеет возможность загрузить файлы записи;
- Участники могут скачать готовую запись конференции;
- Система автоматически готовит видео к публикации (добавление водяного знака, конвертация в нужный формат);
Нефункциональные требования:
- Конференция состоит из множества отдельных видеофайлов;
- Количество видеоматериалов в одной конференции не ограничено;
- Для просмотра видеозаписей авторизация не требуется;
- Записанные видео становятся доступными для просмотра не позднее, чем через 20 минут после загрузки;
- Максимальный размер отдельного загружаемого видео – 2 ГБ.
Ответ
Разделите управление конференциями, live-поток и обработку записей. Видео загружают частями напрямую в object storage, затем очередь запускает workers для проверки, watermark и перекодирования.
Готовые версии и manifests публикуются только после успешной обработки, публичный просмотр идёт через CDN. Авторизация нужна для управления и загрузки; запись привязывают к владельцу. Статусы, retry и дедупликация защищают от повторных jobs. SLO «до 20 минут» требует ограничений длительности/форматов и расчёта мощности: размер 2 ГБ и неограниченное число файлов сами по себе не позволяют гарантировать срок. Для live отдельно выбирают WebRTC/SFU либо вещание HLS по требованиям задержки.