Установка и настройка Saleor под ключ: Django + GraphQL

Самостоятельное развёртывание Saleor часто упирается в сроки и скрытые сложности. Мы устанавливаем и настраиваем Saleor под ключ: переносим каталог, заказы и оплату, сохраняя продажи. Вы получаете работающий магазин и понятные регламенты поддержки.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Установка и настройка Saleor под ключ: Django + GraphQL
Средний
от 1 дня до 3 дней
Часто задаваемые вопросы

Установка Saleor: где ломается самостоятельное развёртывание

Установка Saleor своими силами выглядит как обычный деплой Django-проекта: поднять приложение, применить миграции, подключить базу и кэш. Ломается всё обычно не на этом шаге, а на стыках — когда магазин начинает работать под реальным трафиком и внешними системами.

Первый слой поломок — каталог. Товары, варианты и остатки приходят из учётной системы, а карточки правят ещё и в админке: без однозначного владельца данных каждая синхронизация затирает чужую правку. На витрине появляются позиции с нулевым остатком и старой ценой, а расхождение между витриной и оформлением заказа всплывает уже в момент оплаты.

Второй слой — корзина и заказы. Если оформление проходит через несколько шагов без единой транзакции и без резервирования остатка, на пиковой нагрузке в день распродажи часть корзин теряется, а заказы дублируются. Клиент видит одно списание, склад — две заявки, и разбор занимает день, а не минуты. Целостность каталога и заказов держится не на повторных попытках, а на идемпотентных операциях и явных блокировках остатка.

Третий слой — интеграции: оплата, доставка, склад, рассылки. На пике они получают в разы больше запросов, и без очередей с ограничением параллелизма фоновые задачи копятся, уведомления от внешних систем теряются, а статусы заказов перестают сходиться с фактической отгрузкой. Ниже разбираем, как это закрывается при развёртывании ecommerce-платформы.

Гибкая схема каталога и заказов: что даёт настройка

Карточка товара — не одна запись, а набор вариантов: цвет, размер, комплектация, у каждого свой остаток и цена. Корректная модель данных каталога связывает варианты, склады и каналы продаж явно, поэтому витрина отдаёт только то, что доступно в нужном канале. В Saleor эта схема заложена штатно, но требует настройки — иначе появляются дубли товаров и расхождение между витриной и складом.

Каталог, варианты и склады

Атрибуты описываем типизированными полями, а не свободным текстом: фильтры и подборки строятся по индексам, а не перебором. Категории выстраиваем деревом с предсказуемой глубиной, чтобы выдача по разделу не подтягивала каталог целиком.

Резерв отделяем от фактического остатка: пока заказ не подтверждён, товар остаётся доступным остальным покупателям, а склад не показывает «минус».

Витринный слой и пиковые нагрузки

Витринный слой собирает страницу каталога подготовленными выборками вместо каскада запросов: время отклика уходит в доли секунды вместо секунд и не растёт с глубиной каталога. Пропускную способность в пик проверяем прогонами на реальном профиле — распродажа, рекламная кампания, сезонный всплеск — и доводим до состояния, когда витрина держит поток без очереди.

Оформление заказа проходит одной операцией: списание остатка, создание заказа и запись истории статусов не расходятся между собой. Повторная отправка формы не создаёт второй заказ, а обрыв на шаге оплаты не оставляет замороженный резерв. Уходит класс отказов: «продали то, чего нет» и «заказ есть, а позиций нет».

Режимы развёртывания: сравнение вариантов

Выбор варианта развёртывания определяет, как быстро выходит обновление Saleor, насколько предсказуемо приложение переживёт рост каталога и кто отвечает за доступ к данным. Ниже — три схемы, между которыми реально выбирают на старте.

Вариант Когда подходит Ограничения варианта
Размещение на своём контуре Требования держать данные и доступы внутри своей инфраструктуры, есть свой отдел эксплуатации, нестандартная сетевая схема Обновления и масштабирование выполняются вручную, миграции базы планируются как отдельная операция с простоем или переключением реплик
Контейнерная схема Нужны регулярные релизы, горизонтальное масштабирование витрины и фоновых задач, среда разработки повторяет рабочий контур Без сбора метрик и логов растёт время разбора сбоев, нужна инфраструктурная команда и регламент выката
Управляемая платформа Быстрый запуск, небольшая команда, нет задачи держать инженера эксплуатации Часть параметров недоступна, обновления и миграции привязаны к регламенту площадки, глубина настроек слоёв ограничена

Что меняется при масштабировании

В контейнерной схеме слой приложения не хранит состояние, поэтому витрина масштабируется репликами, а очередь фоновых задач выносится отдельно и растёт независимо. GraphQL-запросы кэшируются, тяжёлые выборки каталога уходят на реплики базы — корзина и оформление заказа остаются на основном узле.

Переход между вариантами выполняется переносом дампа базы и медиафайлов, поэтому выбранная схема не запирает вас: разбираем, какой контур закрывает ваши ограничения по доступам и нагрузке.

Порядок установки Saleor: от аудита до передачи

Порядок работ выстроен так, чтобы каждый шаг опирался на результат предыдущего: сначала фиксируем фактическое состояние контура, затем проектируем схему и только потом трогаем рабочий контур. Ниже — этапы внедрения в том виде, в каком они идут на проектах с живым трафиком.

  1. Обследование инфраструктуры. Снимаем текущую картину: размещение сервисов, устройство баз, лимиты серверов, используемые командой инструменты. На выходе — отчёт с узкими местами, которые напрямую влияют на схему развёртывания.
  2. Проектирование схемы. Определяем состав компонентов Saleor, схему хранения данных, роли сервисов, точки интеграции с учётной системой и оплатой. Топологию согласуем до начала работ.
  3. Разделение окружений. Поднимаем отдельные контуры для разработки, приёмки и эксплуатации — со своими базами, ключами и конфигурацией. Обновления обкатываются на копии данных и не задевают покупателей.
  4. Установка и настройка. Разворачиваем приложение, очереди фоновых задач, поисковый индекс и кэш, настраиваем миграции и резервное копирование — сначала на тестовом контуре.
  5. Нагрузочная проверка. Моделируем реальные сценарии: просмотр каталога, корзина, оформление заказа, выгрузки. Смотрим время отклика под пиком и поведение системы при отказе отдельного узла.
  6. Передача проекта. Отдаём доступы и документацию по развёртыванию и восстановлению, обучаем команду, фиксируем регламент обновлений и остаёмся на сопровождении.

Состав поставки: конфигурации, схемы и регламенты

Поставка — это не архив с кодом, а набор артефактов, по которым систему можно эксплуатировать и развивать без автора. Всё, что настраивается при установке Saleor, фиксируется в репозитории и в документации: конфигурации, схемы, политики и регламенты переходят заказчику.

  • Конфигурации проекта — файлы окружений для разработки, тестового и рабочего контуров, переменные подключения к базе и очереди, секреты вынесены отдельно.
  • Схема интеграций — карта связей с платежами, доставкой, складом и учётной системой: направление обмена, формат данных, поведение при недоступности внешней стороны. Отдельно описан программный интерфейс, по которому подключаются витрина и мобильное приложение.
  • Политики доступа — роли и права на заказы, каталог и цены; ограничения на вход в админку и служебные методы.
  • Схема данных и миграции — структура каталога (товары, варианты, коллекции, склады), правила наполнения и порядок переноса из прежней системы.
  • Регламент обновлений — периодичность обновления платформы и зависимостей, проверка на тестовом контуре, точки отката.
  • Мониторинг и журналы — собираемые метрики, аварийные пороги, маршрут оповещений.
  • Документация и чек-лист приёмки — инструкции для администраторов и разработчиков, сценарии проверки перед выкладкой.

Такой состав снимает зависимость от подрядчика: новый инженер входит в систему по схемам и регламентам, а не по памяти предыдущей команды.

Кейс: перенос каталога без остановки продаж

Магазин на старой платформе держал каталог на 40+ тысяч позиций, а синхронизация остатков шла пакетно и блокировала витрину: выгрузка занимала до 40 минут, в это время карточки не открывались, а часть заказов менеджеры оформляли вручную. Расхождения остатков и цен доходили до 8% позиций — поддержка разбирала их ежедневно, вместо того чтобы заниматься покупателями.

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

Что изменилось

Переключение витрины прошло без простоя: покупатели не увидели ни страницы обслуживания, ни ошибок оформления, а вернуться на старый контур при отклонении можно было одной командой. Время отклика каталога на тяжёлых фильтрах сократилось почти втрое — индекс и кэш пересобираются в фоне, а не на каждый запрос.

Метрики после

  • Простой магазина: ноль вместо плановых нескольких часов.
  • Выгрузка каталога: с 40 минут до единиц минут, витрина остаётся доступной.
  • Обращения в поддержку по «товара нет / цена не та»: меньше вчетверо.
  • Расхождения остатков: с 8% позиций до долей процента.

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

Чем отличается развёртывание с нуля от переноса магазина?

Развёртывание с нуля — чистая инсталляция Saleor: схему каталога проектируем под задачу, а не наследуем от прежней платформы. Атрибуты, варианты товара, склады и правила цен задаются сразу в нужной модели, интеграции подключаются к пустой базе. Объём работ — настройка и проверка сценариев, а не перенос.

Перенос магазина — обратная задача: сохранить работающий бизнес в момент смены платформы. Переносим каталог, категории, атрибуты, остатки, историю заказов и пользователей. Главная сложность — несовпадение схемы каталога: то, что на прежней платформе было одной сущностью, здесь раскладывается на несколько и требует явного преобразования.

Миграция данных идёт через аудит: что переносим как есть, что пересобираем, а что не берём. Выгрузка идёт в нейтральный формат, загрузка — с проверкой сходимости: число позиций, остатки, цены и привязка заказов должны совпасть до и после. Расхождения ищем на тестовом контуре, а не на боевой базе.

Совместимость интеграций — второй крупный риск переезда. Платёжные шлюзы, службы доставки, склад и бухгалтерия обмениваются данными по своим контрактам: часть подключается штатными средствами, часть требует доработки. Старые адреса карточек и категорий уводим на новые постоянными перенаправлениями.

Отсюда вывод: развёртывание с нуля предсказуемо по срокам, переезд — этапы и план отката. При небольшом каталоге и малом числе связей быстрее чистая инсталляция с повторной загрузкой данных.

Ограничения платформы и частые технические вопросы

Платформа закрывает каталог, корзину и оформление из коробки, но границы у неё есть — их лучше знать до запуска. Ниже — сомнения, которые чаще всего звучат на оценке, и то, как мы снимаем их на уровне архитектуры.

Где предел каталога и как витрина ведёт себя на пике?

Ограничение задаёт не число товаров, а индексация и кэш: десятки тысяч позиций с фасетными фильтрами уходят в отдельный поисковый слой. Запросы ограничены по глубине и стоимости, чтобы тяжёлый вызов не занимал обработчик, а приложение масштабируется горизонтально. Корзина и оформление остаются отзывчивыми во время акции.

Как стыкуется склад и учётная система?

Остатки, цены и статусы заказов ходят через API — по расписанию и по событиям. Приоритет источника фиксируем заранее: склад диктует остаток, магазин — цену, а расхождения уходят в журнал и не превращаются в продажу отсутствующего товара.

Что с платежами и безопасностью?

Шлюз подключается конфигурацией, оплата идёт с подтверждением по 3-D Secure. Карточные данные не проходят через приложение — используется токенизация на стороне провайдера, поэтому контур аудита остаётся узким, а платёжный провайдер меняется без переписывания витрины.

В каком порядке выходят обновления платформы?

Новую мажорную ветку мы не выкладываем в день релиза: сначала промежуточный стенд, прогон сценариев заказа и миграции данных, затем выкладка с возможностью отката. Обновления идут пакетами.

Обсудим задачу: что нужно для оценки и старта

Чтобы обсудить задачу предметно и вернуться с оценкой проекта, а не с общими словами, нам нужны границы работ. Ниже — минимальный набор исходных данных. Если чего-то пока нет — не критично: часть уточним на созвоне, часть соберём сами в ходе разбора.

  • Каталог: сколько товаров и категорий, какие атрибуты и варианты (размеры, опции), откуда переносим данные.
  • Модель продаж: одна витрина или несколько, языки и валюты, нужны ли разные склады и правила доставки.
  • Оплата и логистика: какие платёжные провайдеры и службы доставки подключаем, есть ли нестандартные сценарии вроде частичной оплаты или самовывоза.
  • Интеграции: ERP, склад, CRM, аналитика — что и в какую сторону должно обмениваться данными с Saleor.
  • Нагрузка: ожидаемый трафик в пик, число одновременных покупателей, требования к времени отклика каталога и оформления заказа.
  • Инфраструктура: где размещаем проект, какой контур есть сейчас, кто отвечает за доступы, домены и сертификаты.
  • Ограничения: дата запуска, обязательства перед партнёрами, что уже готово по контенту и макетам.

На основе этого команда инженеров фиксирует объём, разбивает его на этапы и отдаёт план работ и сроки с явными допущениями и точками согласования. Опишите задачу в удобном виде — вернёмся с оценкой и планом.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060