אילו בעיות פותר התקנת Saleor מקצועית?
לאחר פריסת Saleor לפי התיעוד הרשמי, רבים נתקלים בשגיאות מיגרציה, התנהגות לא יציבה של Celery ושאילתות GraphQL איטיות. בעיות אלו אינן מקריות—הן נובעות מטעויות תצורה טיפוסיות. אנו פותרים אותן מדי יום על ידי כוונון Saleor לסביבת production.
כיצד להתמודד עם שאילתות N+1 ב-GraphQL?
ה-resolvers של GraphQL ב-Saleor ללא אופטימיזציית ORM מייצרים עשרות שאילתות SQL עבור כל בקשת רשימת מוצרים. לדוגמה, שאילתת products(first:10) מביאה ל-11 קריאות מסד נתונים: אחת עבור מוצרים ואחת עבור כל קטגוריה. זו בעיית N+1 הקלאסית. הפתרון הוא שימוש ב-select_related ו-prefetch_related ב-resolvers. עבור פגינציה, אנו ממליצים על keyset pagination, שאינה תלויה ב-offset ומהירה משמעותית בקטלוגים גדולים.
מדוע Celery עובדת באופן לא אמין וכיצד לתקן זאת?
תצורת ברירת המחדל של Celery אינה מיועדת לעומסי שיא. ללא הגדרת concurrency לעובדים ו-acknowledgement של משימות, חלק מההודעות אובדות בעת אתחול. אנו מגדירים --concurrency=4, מאפשרים CELERY_TASK_ACKS_LATE, ומשתמשים בניטור Flower כדי למנוע אובדן משימות.
כיצד להאיץ את מסד הנתונים?
PostgreSQL ללא אינדקסים על שדות המסוננים תדיר (מחיר, תאריך, קטגוריה) הופך לצוואר בקבוק. אנו מנתחים תוכניות שאילתות באמצעות EXPLAIN ANALYZE ומוסיפים אינדקסים מורכבים. לדוגמה, עבור סינון לפי קטגוריה ומחיר—אינדקס (category_id, price). כפי שנאמר ב-תיעוד Saleor, אופטימיזציה כזו קריטית לביצועים.
כיצד אנו מגדירים את Saleor ל-production
אנו משתמשים בגרסת היציבה העדכנית ביותר של Saleor על Django עם Python 3. מסד נתונים: PostgreSQL עם אינדקסים מוגדרים. מטמון: Redis. משימות רקע: Celery עם broker של Redis. שרת אינטרנט: Gunicorn עם עובדי gevent. Nginx מטפל בקבצים סטטיים ובפרוקסי. S3 (MinIO או AWS) עבור קבצי מדיה. ניטור באמצעות Sentry.
מקרה בוחן: כיצד האצנו חנות עם 200,000 מוצרים פי 10
פגינציית offset סטנדרטית בקטלוג גרמה להאטות מעבר ל-50 עמודים. החלפנו אותה ב-keyset pagination באמצעות cursor המבוסס על ID. Keyset pagination מהירה פי 10 מ-offset-page בקטלוגים עם מעל 10,000 מוצרים. בנוסף, שכבנו קטגוריות ב-Redis. זמן התגובה ירד מ-2 שניות ל-200 אלפיות השנייה. עבור Celery, הגדרנו את מספר העובדים לפי העומס והוספנו retry על משימות שנכשלו. חיסכון בעלויות תשתית הגיע עד 40%.
השוואת שיטות התקנה
| קריטריון | Docker Compose | התקנה ידנית |
|---|---|---|
| מהירות פריסה | מהירה (2-4 שעות) | איטית יותר (4-8 שעות) |
| קלות תחזוקה | גבוהה | בינונית |
| גמישות תצורה | מוגבלת | שליטה מלאה |
| המלצה | לפיתוח ופרויקטים קטנים | ל-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.
- מדריך תפעול.
- אופטימיזציית ביצועים (אינדקסים, מטמון, פגינציה).
- תמיכה למשך שבועיים לאחר המסירה.
לוחות זמנים
| שלב | משך |
|---|---|
| התקנה בסיסית (Docker) | 2-4 שעות |
| תשתית production | 1-2 ימים |
| התקנה מלאה עם אינטגרציות | עד 5 ימים |
טעויות נפוצות בהתקנת Saleor
- שכחת הגדרת
ALLOWED_HOSTSו-ALLOWED_CLIENT_HOSTS– ה-Dashboard לא יתחבר ל-API. - שימוש ב-
SECRET_KEYברירת מחדל – סיכון אבטחתי; חייבים לשנות. - אי הגדרת מדיניות bucket של S3 – קבצי מדיה לא יוצגו.
- אי הגדרת timeouts ל-Celery – משימות אובדות בביצוע ארוך.
מדוע להפקיד את התקנת Saleor בידי מקצוענים?
לצוות שלנו ניסיון של 7 שנים ב-Django ובמסחר אלקטרוני. התקנו בהצלחה את Saleor עבור למעלה מ-20 פרויקטים, כולל קטלוגים עם מיליוני מוצרים. לפי GitHub, Saleor היא פלטפורמת המסחר האלקטרוני הפתוחה הפופולרית ביותר על Django. אנו מבטיחים פעולה יציבה תחת עומס ואופטימיזציה לצרכים הספציפיים שלכם. קבלו ייעוץ חינמי וביקורת טכנית על התשתית הקיימת שלכם. הזמינו התקנת Saleor במפתח—נעשה זאת במהירות ובאמינות.
משאבים נוספים: GraphQL.







