Задача

Разработать MVP (минимально жизнеспособный продукт) веб-сервиса для мониторинга и сбора актуальной информации о товарах (цена, наличие) через API внешних маркетплейсов. Система должна собирать, сохранять и визуализировать историю колебаний цен, обеспечивая возможность дальнейшего масштабирования и интеграций.

Ключевые требования к функционалу

  • Внешние данные: Получение информации через API выбранных источников (1-2 на старте).
  • Пользовательский интерфейс: Личный кабинет с регистрацией и авторизацией. Страница со списком отслеживаемых товаров, реализованная возможность поиска и фильтрации.
  • Графики и история: Просмотр динамики изменения цены в виде временной шкалы за выбранный период.
  • Отказоустойчивость: Корректная обработка таймаутов, лимитов запросов и ошибок со стороны API источников данных.
  • Автоматизация: Выполнение задач по обновлению и синхронизации данных в фоновом режиме (по расписанию).

Архитекгруппредующие нюансы

Предлагаемая архитектура опирается на микросервисный подход. Фоновые задачи (воркеры) отвечают исключительно за сброс данных через API и передачу их в базу. Основное веб-приложение лишь служит интерфейсом для вывода информации и управления товарами. Отдельный слой (очередь задач) снижает нагрузку при массовом добавлении товаров, а модульная структура упрощает подключение новых маркетплейсов.

  • Базовое подключение новых источников (маркетплейсов) за счет разработки контракта на обмен данными (адаптеры)
  • Постепенная дедупликация запросов к внешним API, а также сброс очереди запросов, когда падает скорость в системе
  • Предлагаемый стек технологий

    Для реализации выбран семейный, а также надежный в плане масштабирования набор инструментов:

    • Основной язык: Python
    • Веб-фреймворк: FastAPI или Django REST + Django ORM
    • База данных: PostgreSQL (для пользователей/истории) + InfluxDB или ClickHouse (для временной истории изменения цен) или полностью PostgreSQL с партицированием.
    • Планировщик задач/Фон: Celery + Alembic/RabbitMQ / Redis Queue (RQ) / Huey.
    • Хранилище сессий: Redis (опционально).
    • Инструменты допуска: Poetry/Poetry по версиям зависимостей.

    Обеспечение производительности с учетом увеличения склада закупок по API

    При разрастании количества товаров используются динамическое управление временными отрезами (interval), параллельные воркеры (масштабируемые), а так же прописана лимитация пиков нагрузки маркетплейсов. Добавляется стратегия:

    • Обработка очередью без тупика при диком наплыве инструкций;
    • Пагинация;
    • каунтное функционирование тенанта;
    • может быть концепции e т.п ..