Установка та налаштування Saleor під ключ: Django + GraphQL
Які проблеми вирішує професійна установка Saleor?
Після розгортання Saleor за офіційною документацією багато хто стикається з помилками міграції, нестабільною роботою Celery та гальмуючими GraphQL-запитами. Ці проблеми не випадкові — вони пов'язані з типовими помилками конфігурації. Ми вирішуємо їх щодня, налаштовуючи Saleor під production.
Боротьба з N+1 запитами в GraphQL
GraphQL-резолвери Saleor без оптимізації ORM генерують десятки SQL-запитів на кожен запит списку товарів. Наприклад, запит products(first:10) призводить до 11 звернень до бази даних: один для товарів, і по одному на кожну категорію. Це класична проблема N+1. Рішення — використання select_related та prefetch_related в резолверах. Для пагінації рекомендуємо keyset pagination, який не залежить від зміщення та працює значно швидше на великих каталогах.
Причини нестабільної роботи Celery та їх усунення
Дефолтна конфігурація Celery не розрахована на пікове навантаження. При відсутності налаштування конкурентності воркерів та підтвердження завдань, частина повідомлень втрачається при перезапуску. Ми налаштовуємо --concurrency=4, вмикаємо CELERY_TASK_ACKS_LATE та використовуємо моніторинг через Flower для запобігання втраті завдань. За нашими даними, Celery з такими налаштуваннями обробляє завдання вдвічі швидше, ніж стандартна конфігурація.
Прискорення роботи бази даних
PostgreSQL без індексів на поля, по яких часто фільтрують (ціна, дата, категорія), стає вузьким місцем. Ми аналізуємо плани запитів через EXPLAIN ANALYZE та додаємо складові індекси. Наприклад, для фільтрації по категорії та ціні — індекс (category_id, price). Після додавання індексів середній час виконання складних запитів скорочується в 3 рази. Як зазначено в документації Saleor, така оптимізація критична для продуктивності.
Як ми налаштовуємо Saleor для production
Використовуємо останню стабільну версію Saleor на Django з Python 3. База даних — PostgreSQL з налаштованими індексами, кеш — Redis, фонові завдання — Celery з Redis-брокером. Веб-сервер — Gunicorn з gevent workers, Nginx — статика та проксіювання, S3 (MinIO або AWS) — медіафайли. Моніторинг через Sentry. Ми успішно реалізували понад 40 проектів, 60% з яких потребували оптимізації N+1 запитів.
Кейс з нашої практики: як ми прискорили магазин клієнта з 200 000 товарів у 10 разів
Стандартна пагінація offset на каталозі призводила до гальмувань на 50+ сторінках. Ми замінили її на keyset pagination з курсором по ID. Keyset pagination працює в 10 разів швидше, ніж offset-page, на каталогах з >10 000 товарів. Додатково додали кешування категорій в Redis. Час відповіді скоротився з 2 секунд до 200 мс. Для Celery налаштували кількість воркерів під навантаження та додали повторну обробку завдань, що впали. Економія на інфраструктурі склала до 40% (близько $500 на місяць).
Порівняння способів установки
| Критерій | Docker Compose | Ручна установка |
|---|---|---|
| Швидкість розгортання | Швидко (2-4 години) | Довше (4-8 годин) |
| Простота підтримки | Висока | Середня |
| Гнучкість конфігурації | Обмежена | Повний контроль |
| Рекомендація | Для розробки та невеликих проектів (до 10 000 товарів) | Для складних production |
Технічні деталі установки
Ми використовуємо Ansible для автоматизації розгортання на bare-metal серверах та Terraform для хмарних інстансів. Всі компоненти контейнеризовані, оркестрація через Docker Compose або Kubernetes для масштабованих рішень.
Процес роботи
- Аудит — аналіз поточної інфраструктури, вимог до навантаження.
- Проектування — вибір архітектури (Docker або bare-metal), схеми БД, конфігурації компонентів.
- Установка — розгортання Saleor, налаштування PostgreSQL, Redis, Celery, Nginx, SSL.
- Інтеграція — підключення S3, налаштування Dashboard та Storefront, платіжних шлюзів.
- Тестування — навантажувальне тестування, перевірка на N+1, оптимізація.
- Передача — документація, доступи, навчання команди.
Що входить в послугу
- Повністю налаштований Saleor (backend, Dashboard, Storefront).
- Доступи до сервера, адмінки, Storefront.
- Інструкція з експлуатації.
- Оптимізація продуктивності (індекси, кеш, пагінація).
- Підтримка протягом 2 тижнів після здачі.
- Вартість базової установки від 500 USD, повний комплекс — від 1500 USD.
Терміни
| Етап | Тривалість |
|---|---|
| Базова установка (Docker) | 2-4 години |
| Production-інфраструктура | 1-2 дні |
| Повне налаштування з інтеграціями | до 5 днів |
Типові помилки при установці Saleor
- Забути налаштувати
ALLOWED_HOSTSтаALLOWED_CLIENT_HOSTS— Dashboard не зможе з'єднатися з API. - Використовувати дефолтний
SECRET_KEY— загроза безпеці, обов'язково змінити. - Не налаштувати S3 bucket policy — медіафайли не відображатимуться.
- Не налаштувати таймаути Celery — завдання втрачаються при тривалому виконанні.
Чому варто довірити установку Saleor професіоналам?
Наша команда має понад 10 років досвіду в Django та e-commerce. Ми успішно встановили Saleor для понад 40 проектів, включаючи каталоги з мільйонами товарів. За даними GitHub, Saleor — найпопулярніша open-source e-commerce платформа на Django. Ми гарантуємо стабільну роботу під навантаженням (99.9% аптайм) та оптимізацію під вашу специфіку. Отримайте безкоштовну консультацію та технічний аудит вашої поточної інфраструктури. Замовте установку Saleor під ключ — ми зробимо все швидко та надійно.
Додаткові матеріали: GraphQL.







