Выбор ответа Middle Мобильный system design обновлено
Загрузка файлов напрямую в хранилище
Вопрос
Зачем мобильный клиент загружает медиа по presigned URL напрямую в объектное хранилище, а не через API-сервер?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Чтобы не гонять гигабайты через API: сервер выдаёт временную ссылку и узнаёт о загрузке. API выдаёт ссылку с ограниченным сроком и правами на запись конкретного объекта, клиент загружает в S3-совместимое хранилище, а затем сообщает API (или хранилище вызывает обработчик), что файл готов к обработке.
Варианты ответа
- Так безопаснее: ключи хранилища лежат в приложении, и API-сервер не может их перехватить
- Чтобы не гонять гигабайты через API: сервер выдаёт временную ссылку и узнаёт о загрузкеправильный ответ
- Presigned URL работают без интернета: файл ставится в очередь хранилища прямо на устройстве
- API-серверы на REST не умеют принимать файлы больше нескольких мегабайт в теле запроса
Разбор
API выдаёт ссылку с ограниченным сроком и правами на запись конкретного объекта, клиент загружает в S3-совместимое хранилище, а затем сообщает API (или хранилище вызывает обработчик), что файл готов к обработке. Ключи хранилища остаются на сервере. API-серверы принимать файлы умеют, но это неэффективно и дорого.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Порядок ответа на system design
Следующий вопрос
Транспорт для чата в реальном времени
Ещё по теме «Мобильный system design»
- Мобильный system design: SDK аналитики событий
- Мобильный system design: перевод денег в банковском приложении
- Мобильный system design: каталог и корзина маркетплейса
- Мобильный system design: лента новостей с картинками и видео
- Мобильный system design: загрузка фото и видео
- Мобильный system design: мессенджер
- Мобильный system design: заметки с синхронизацией между устройствами
- Мобильный system design: истории (stories)