tasks: целевая картина пересобрана — три цели, тринадцать задач, сдвинутые границы
- паспорт: сервис объявлен архивом с бессрочным хранением записей и текстов, машинная вычитка расшифровки внутри границ, приложение — основной вход; добавлены две границы: не файловое хранилище общего назначения и не биллинг; - заведены цели upload-reliability, user-settings, usage-stats и тринадцать задач; очередь пересобрана — сперва починки, затем разведки о хранилище, затем доступ и владелец, и только потом экраны; - архитектура: четыре новых открытых вопроса — приём большого файла, учёт расхода, срок хранения, потолок шести часов.
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
# 🔬 Загрузка большого файла частями
|
||||
|
||||
- **Тип:** research
|
||||
- **Категория:** Очередь
|
||||
- **Зачем:** Гигабайтный файл едет одним запросом, и обрыв на девяноста процентах начинает его заново.
|
||||
|
||||
Шестичасовая диктофонная запись и видео из семейного архива весят гигабайты, а
|
||||
уходят с телефона по сотовой сети. Сегодня приём читает форму целиком и держит
|
||||
её в памяти до предела `router.MaxMultipartMemory`; что делать с обрывом,
|
||||
неизвестно.
|
||||
|
||||
Решено начать с одного запроса, а докачку разобрать отдельно — это она.
|
||||
|
||||
## Вопрос
|
||||
|
||||
Чем чинить обрыв загрузки большого файла: готовым протоколом докачки, своей
|
||||
нарезкой на части поверх обычной формы или пределом размера с отказом, и во что
|
||||
каждый вариант обходится на стороне приложения, сервера и обратного прокси.
|
||||
|
||||
## Куда ляжет ответ
|
||||
|
||||
`docs/research/upload.md` — вариантами с ценой каждого. Выбор оформляется
|
||||
решением в `docs/adr/`, потому что меняет публичный контракт приёма.
|
||||
|
||||
## Рамки
|
||||
|
||||
Ответ учитывает обратный прокси перед сервисом: его предел размера тела и
|
||||
таймаут — часть цены. Хеш-сумма на стороне приложения разбирается здесь же:
|
||||
она решает, можно ли пропустить загрузку целиком.
|
||||
Reference in New Issue
Block a user