7 / 15
Как спроектировать загрузку и раздачу файлов или видео?
Байты не должны проходить через ваш бэкенд ни при загрузке, ни при раздаче. Приложение выдаёт подписанную ссылку в объектное хранилище, клиент грузит напрямую, а большие файлы — многочастной загрузкой с докачкой отдельных частей. После загрузки клиент подтверждает её, и дальнейшая работа (проверка типа, антивирус, транскодирование видео в несколько качеств) уходит в фоновые задачи; статус файла — конечный автомат от pending до ready. Раздача идёт через CDN: публичное кэшируется по неизменяемому ключу, приватное отдаётся по короткоживущей подписанной ссылке. Главный компромисс — сколько ждать готовности: транскодирование занимает минуты, поэтому интерфейс проектируют вокруг асинхронного статуса, а не вокруг ответа на запрос загрузки.