Кейс: массовая загрузка товаров по API
Вопрос
Крупный продавец маркетплейса хочет загружать 200 000 товаров за раз через API. Сейчас есть только POST /products по одному товару. Как спроектируешь?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Асинхронная операция: POST /product-imports возвращает 202 и id задачи
Загрузка файла или пачками, ограничения размера
Статус задачи: GET /product-imports/{id} с прогрессом и ошибками по строкам
Идемпотентность по артикулу продавца (upsert), повторная загрузка безопасна
Лимиты, приоритизация, уведомление по завершении (вебхук)
Что могут спросить следом
- Что вернуть, если 300 строк из 200 000 с ошибками?
- Как не положить каталог для остальных продавцов?
Разбор
Синхронно 200 тысяч товаров по одному не загрузить: долго и упрёмся в лимиты. Делаю асинхронную операцию: POST /product-imports принимает файл или ссылку на него и сразу отвечает 202 Accepted с id задачи. GET /product-imports/{id} показывает статус, прогресс, число успешных и ошибочных строк, ошибки скачиваются отдельным отчётом с номерами строк и причинами. Идентификатор товара это артикул продавца, загрузка работает как upsert, поэтому повторная отправка того же файла безопасна. Частичный успех нормален: хорошие строки применяются, плохие в отчёте. Нагрузку контролирую очередью и лимитом параллельных импортов на продавца, а по завершении отправляю вебхук.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.